削除された多くのパッケージを一度に再インストールする方法は?


8

sudo apt-get remove pythonコマンドを使用して、必要な一連のパッケージを誤って削除しました。コマンドラインからログインしてubuntu-desktopを再度インストールしましたが、他に不足しているパッケージがあるため、削除したパッケージを簡単に再インストールする方法を探しています。ソフトウェアセンターにログがあるので、変更をロールバックするか、ソフトウェアセンターから削除されたパッケージのリストを抽出する最も簡単な方法は何かを尋ねたかったのですが...

注:sudo apt-get install .... .... ... ...リストにある削除されたプログラムのうち約20個を入力しましたが、Enterキーを押しても、一部のパッケージ名が見つからなかったため、インストールされませんでした。

プログラムは同じ日に削除されました。


1
見てください/var/log/apt/history.log
Lekensteyn

回答:


16

まず、削除pythonすると、多くの基本的なコマンドが機能しなくなる可能性があるとしましょう。だから私は次のことがうまくいくかどうかわかりません。

第二に、package names couldn't be foundあなたが持っているエラーは、コマンドラインのスペルミスの名前、またはローカルにインストールされているがリポジトリで利用できないパッケージに由来するものだと思います。

次に、dpkg使用可能な最後のログと比較して、削除されたパッケージのログを取得します(古いログを考慮する必要はないと思います)。

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

次にlist、現在のディレクトリに作成されたファイルを編集し、行のタイムスタンプに基づいて、再インストールするパッケージに関連する行のみを残します。変更したファイルをに保存するとしますlist-mod

そのパッケージを再インストールするには、次のコマンドを使用します。

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

--simulateオプションを挿入して、コマンドの動作を確認しました。問題がなければ、そのオプションを削除してコマンドを再度実行してください。

コマンドで、一部のパッケージが見つからないというメッセージが表示された場合は、それらを削除してからlist-mod再試行してください。


ありがとう、私は必要なパッケージを再インストールすることができました!1つの質問ですが、ソフトウェアセンターログから削除されたパッケージは200以上ありますが、リストファイルには約150ありました。これは、dpkg.logに自動インストール/依存パッケージが含まれていないことを意味しますか?このソリューションに再び感謝します:)
ローガン

1
そのログファイルは、すべてのインストール、アップグレード、削除またはパージパッケージが含まれている、とのすべてのアプリケーションでdpkgapt-getaptitude、シナプス、ソフトウェアセンター、gdebiなど、あなたはそれ以上の年齢を見て与えることができますdpkg.log参照して、ファイルをls -lrt /var/log/dpkg.log*
enzotib

1
@enzotib古いLinuxヘッダーを削除するためのスクリプトを実行しました。正規表現は、削除したくない多くのパッケージ(非常に重要なパッケージ)と一致したと思います。あなたの答えは私を特定の災害から救いました。
shivisuper 2016年

1
@enzotib不正なスクリプトを実行した後、OSを再インストールする必要がなくなりました。ありがとう!
brndn2k

アップグレード0、インストール0、削除0、アップグレードなし50と表示されています
James Casia

2

ですから、私は偶然に同じような間違いをします:の sudo apt-get purge python3.6*代わりにsudo apt-get purge python3.6.*

次の手順で、かなり早く修正できました。

  1. ログを開きましたvim /var/log/history.log
  2. vimコマンドを使用して私の悪いコマンドを検索しました/python3.6\*
  3. Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ...パージされたパッケージの長いリストが含まれる行があり(削除の場合はで始まりますRemove:)、それを操作するPurge:部分のない別のファイルにコピーしました。
  4. そのファイルで、vimコマンドを実行し%s/:[^,]*,//gました。バージョンの部分が削除され、パッケージのリストが残りましたunity-control-center-signon lxc ...
  5. 最後に、前のステップの行をコピーして実行しました sudo apt-get install unity-control-center-signon lxc ...。これで修正されました。

私にとってそれはそうでした/var/log/apt/history.log
テイラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.