バックグラウンドで実行されている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
出典:
- http://www.linuxquestions.org/questions/linux-software-2/force-apt-get-to-redownload-and-reinstall-dependencies-as-well-873038/
- https://kura.io/2010/07/02/using-dpkg-selections-to-backup-and-install-packages/?ModPagespeed=noscript
-
man apt-get
コメント
- 私の問題完全に異なっていた:私は正しいカーネルを起動していませんでした(!)。私が望んでいたことを実行しているように見えるので、あなたの答えを受け入れます(ただし、テストもされていません)。
- これは'動作せず、システムを完全に破壊します。 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
によって行われます。
コメント
- 役割
dpkg --configure -a
は、すべてのアンパックおよび未構成のパッケージを構成することです。dpkg
とdpkg-reconfigure
、および debian.org/doc/manualsのmanページを参照してください。 /debian-faq/ch-pkg_basics.en.html