すべてのDebianパッケージの再インストール

バックグラウンドで実行されているdpkgプロセスを誤って強制終了しました。すべてのパッケージを再インストールして、すべてが正常であることを確認したいと思います。

最初に、すべてのパッケージのリストを取得して再インストールしようとしました

dpkg --get-selections | grep -v deinstall | awk "{print $1}" > list.log apt-get install --reinstall $(cat list.log) 

しかし、次のようなメッセージがあります:

E: Couldn"t configure pre-depend debconf:i386 for console-setup:i386, probably a dependency cycle. 

apt-get -f installを試しましたが、成功しませんでした。

最後の手段として、失敗したすべてのプログラムを再インストールしました。チェックサム:

dpkg -l | grep ^ii | awk "{ print $2 }" | xargs debsums -s -a 

すべてを再インストールするにはどうすればよいですか?

編集: 問題は解決しました。問題は別のものでした(コメントを参照)。ただし、Debianでは避けるべきことだと理解しています。

コメント

  • 最近、パッケージをインストールしようとしたときにクラッシュしました。再起動するとそのパッケージを再インストールしようとすると、" E:dpkgが中断されました。手動で' dpkg–configureを実行する必要があります。 -a 'で問題を修正します。"。そのコマンドを実行すると、上記のパッケージとその構成ファイルが削除されました。その後、パッケージを最初から作成します。そのコマンドを試してみてください。
  • '何もしなかったので、何も壊れていないと思います。後で確認します。私のドライバーの問題は解決しました。
  • すべてのパッケージを再インストールする==本当に悪い考えです。(a)'ほとんどの場合不要です(b)おそらく失敗します( c)システムがひどく混乱している場合は、再インストールするだけです。実際に発生する問題を修正するだけです。

回答

ではなくテスト:

dpkg --get-selections > selections sudo dpkg --clear-selections sudo dpkg --set-selections < selections sudo apt-get --reinstall dselect-upgrade 

出典:

コメント

  • 私の問題完全に異なっていた:私は正しいカーネルを起動していませんでした(!)。私が望んでいたことを実行しているように見えるので、あなたの答えを受け入れます(ただし、テストもされていません)。
  • これは'動作せず、システムを完全に破壊します。 3行目はaptをアンインストールするため、'後ですべてを再インストールすることはできません。
  • @rkjnsn:回答を更新し、機能するかどうかを確認します。
  • これを実行しようとすると、選択ファイルにデータが入力されますが、何も再インストールされません。pi@ prodpi〜 $ sudo apt-get –reinstalldselect-upgradeパッケージリストの読み取り…完了依存関係ツリーの読み取り状態の読み取り情報…完了0アップグレード、0新規インストール、0削除、0アップグレードなし。何かアイデアはありますか?
  • コードが機能しないと思う理由の1つは、コマンドdpkg --get-selectionsリストも削除されるためです'パッケージ。

回答

Aptitudeを使用する場合、簡単で迅速な方法があります。

sudo aptitude reinstall "~i"

現在インストールされているすべてのパッケージを再インストールします。

コメント

  • 簡潔でわかりやすい!

回答

念のため、それぞれを再インストールしてみてくださいパッケージ

for i in $(cat list.log); do apt-get install --reinstall "$i"; done 

すべての質問オプションにも「はい」と答えることができます。

回答

LucasMalorが引用したリソースの1つで、populatorというスクリプトを見つけました。ソリューションの近く。パッケージ選択変数をすべてのパッケージのリストに設定すると、

PKGLIST=$(dpkg --get-selections | grep -v deinstall| cut -f1)

スクリプトを実行して、すべてのパッケージを再インストールできます。しかし、システムにはおそらくいくつかの問題があります。最初に仮想マシンでテストすることをお勧めします。

上記のリンクからのスクリプトの変形は次のとおりです:

#!/bin/bash # # Script to pre-populate apt-get proxy for faster later downloads. # It uses apt-get and wget to pull all the specified packages. # # Make sure only root can run our script if [[ $EUID -ne 0 ]]; then echo "You"re not root, are you?" 1>&2 exit 1 fi # Specify wanted packages PKGLIST="exaile" # Clears out the local repository of retrieved package files apt-get clean # Resynchronize the package index files from their sources apt-get update # Re-install specified packages at the newest version. apt-get install --reinstall $PKGLIST 

特定のパッケージを再インストールできないというエラーが表示された場合は、次のコマンドを実行して再試行してください:

sudo apt-get -y autoremove 

回答

代わりにこれを試してください。出力が取得され、ファイル名をスペースで区切った1つの巨大な行になります。

dpkg --get-selections | grep -v deinstall | awk "{print $1}" > list.log awk "$1=$1" ORS=" " list.log > newlist.log apt-get install --reinstall $(cat newlist.log)

元の投稿への唯一の変更は、2番目のawkステートメントを追加することです。これは、最初のステートメントとインラインで実行して、必要なファイルを作成することができます。

この変更により、apt-が強制されます。パッケージと、最初にインストールされなかった不足している依存関係を正しく再ダウンロードして、順番に再インストールします。

インラインにすると、次のようになると思います。

dpkg --get-selections | grep -v deinstall | awk "{print $1}" | awk "$1=$1" ORS=" " > list.log

次に、システムに正しいパッケージ(または最新)が含まれていることを確認し、aptキャッシュをクリーンアップして更新し、すべてのファイルを再ダウンロードします(キャッシュにあるものだけが必要な場合は、最初の2つの手順をスキップできます)。再インストール):

apt-get clean && apt-get update && apt-get install --reinstall $(cat list.log)

アップグレードしたシステムに、ハングアップした2kを超えるパッケージがインストールされていました。 dpkg –configure -aを使用してインストールを終了しました(最終段階でした)。次に、これを実行して、すべてが正しく再インストールされるようにしました。

または、 https://superuser.com/questions/298912/reinstall-debian-while-keeping-installed-packages-and-data で述べたように:

sudo apt-get install --reinstall $(dpkg --get-selections | grep -w "install$" | cut -f1)

Xのコンポーネントの一部は、再インストールする前に、まず「init2」を実行するようにしてください。お気に入りのウィンドウマネージャーは、再インストールを好まない可能性があります。

コメント

  • ' IFSを変更していない限り、引用符で囲まれていない$(cat file)は空白をトークン化し、ファイルが改行またはスペースで区切られているかどうかにかかわらず、まったく同じ結果を提供します。 --reinstallが役立つかもしれませんが、この前にすでに2回与えられています。

回答

aptを介してこれを行うのは非常に簡単です:

apt list --installed | cut --delimiter=/ --fields=1 | xargs apt reinstall -y

apt list --installedの部分は、推測どおりに機能します。 |文字は、aptコマンドの標準出力をcutコマンド。 cut --delimiter=/の部分は、cutコマンドに/を区切り文字として使用するように指示します。--fields=1は、最初のフィールド、つまり最初の/の前のテキストを使用するようにcutに指示します。 apt list --installedコマンドの出力に表示されます。この場合、cutコマンドの結果は、インストールされているすべてのパッケージのリストであり、apt list --installedコマンド。

次の|は、インストールされているすべてのリストであるcutコマンドの標準出力をパイプ処理します。パッケージを、xargsコマンドの標準入力に追加します。このコマンドは、現在インストールされている各パッケージに対してapt reinstall -yを呼び出します。 。

:apt構成に応じて、apt reinstall -yパーツは、現在インストールされている正確なバージョンではなく、既存のパッケージの更新をインストールする場合があります。

回答

使用する場合RPM、パッケージデータベースに破損が発生した場合、このデータベースを再構築するオプションがあり、bを実行する必要がなくなります。通常、再インストールします。ここで1人のユーザーが指摘したように、これはDebianでdpkg --configure -aによって行われます。

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です