誤って多くのパッケージをアンインストールした後、Ubuntuシステムが破損する


20

次の名前jpegで始まるすべてのパッケージを誤って削除しました:

sudo apt-get remove jpeg*

これは多くのことを台無しにし、Unity、Firefox、Flash Playerなどを削除しました。

どうにかしてデスクトップとユニティを回復できましたが、それでも多くのことがまだバグがあります。たとえば、.rpmファイルを.tag.gz開くとまったく開きません。

私が欲しいのは、間違っているすべてを修正する方法です。Windowsディスクでの「修復インストール」に相当するもの。

ヒントはありますか?


1
新しくインストールすることをお勧めします。/ home /(不可視ファイルを含む)をバックアップして、新しいインストールに挿入するだけです。
ポールウォイタチェック

回答:


35

ubuntu-desktopタスクをインストールできます:

sudo apt-get install ubuntu-desktop^

これにより、削除した標準のUbuntuデスクトップのすべてのパッケージがインストールされます。標準デスクトップの一部ではない、インストールしたパッケージは復元されません(つまり、UnityとFirefoxは再インストールされますが、Flashプレーヤーは再インストールされません)。

これらのパッケージをインストールするに/var/log/apt/history.logは、削除したものを正確に調べて確認できます。

注:インストールubuntu-desktop^ 作業はインストールと同じではありませんubuntu-desktop パッケージ。前者はAPTに仮想パッケージに関連する依存関係を解決するためのヒントを与え、後者はAPTにパッケージを選択する自由を与えます(そして、のような無駄なものをインストールすることになりますubiquity)。

なぜ問題が起こったのですか? apt-get remove jpeg*で始まるすべてのパッケージ削除されませんjpeg。代わりjpeに、名前に含まれるすべてのパッケージを削除します。これは、apt-getが正規表現で機能するため、jpeg *が意味するのは、jpeの後にゼロ以上のgが続くすべてを意味するためです。


1
いい考えだ、私はそれを考えていなかった。ここで動作するかどうか興味があります!
エリアケイガン

@EliahKagan:chrootでテストしました。jpeg *パッケージは一部のグラフィカルアプリケーションにのみ影響を与えるため、必要な「成分」(つまり、インターネット接続用のNetworkManager、APT、ターミナルエミュレーターなど)はまだOPシステム上にあります。
アンドレアコルベッリーニ

@EliahKagan:もちろん、私はOPが他に何も削除していないという(明白ではない)仮定をしました。
アンドレアコルベッリーニ

2
タスクを削除するために決して使用しない警告を含めてくださいtasksel- 厄介なtasksel-bug
guntbert

1
@Attilio:答えの違いを説明しました。参照:「Ubuntuのデスクトップ^タスクはUbuntuのデスクトップパッケージをインストールすると同じではありません...インストールノート」
アンドレアCorbellini

8

この問題を解決する最良の方法は、Ubuntuを再インストールすることです。(再フォーマットせずに再インストールする場合でも、最初にドキュメントをバックアップする必要があります。)

システムを適切に修正しようとする場合は、パッケージマネージャーのログファイルを見て、削除されたパッケージを確認し、再インストールします。

  • /var/log/dpkg.log (完全な情報ですが、読みにくい)
  • /var/log/apt/history.log (によって省略されると、削除または変更されたすべてのパッケージが表示されます-おそらく最善策です)
  • /var/log/apt/term.logapt-getターミナルでパッケージを削除した場合、これはあなたが見たものを表示し、どのパッケージが削除されようとしていたのかを表示するはずです-これ最良の方法かもしれません)

名前で始まるパッケージだけを再インストールするjpegことはできません。削除されたパッケージの多く(ほぼ確実にほとんど)がそれらのパッケージに依存しいたために削除されたためです。

将来、パッケージのアンインストールの結果を注意深く確認することをお勧めします。コマンドラインから作業している場合は、常に通知されます。(-yオプションを使用する場合を除き、通常は使用しません。特に削除の場合は、何をしているかわからない限り、そのオプションを使用しないことをお勧めします。)

を使用して実行されたパッケージ管理操作の結果をチェックする1つの方法apt-getは、を実行するapt-get -sことですsudo apt-get。これは、指定されたアクションをシミュレートするだけで、結果としてどのパッケージが影響を受けるか、どのように影響するかを報告します。


1

sudo apt-get purge wine*Ubuntu 15.10で実行しているため、起動時のグラフィカルインターフェイスはありません。ターミナルログインオプションのみです。

Eliah Kaganが提案したように、/var/log/apt/history.log 私はhistory.logでnanoを実行してからの情報を使用sudo apt-get installし、行で見つけたすべてのパージされたパッケージに含まれる簡単なスクリプトを作成しました:

Purge: evolution:amd64 (3.16.5-1ubuntu3.1), libtotem-plparser18:amd64 (3.10.5-1) ...... etc

しかし、最初に、すべての:との間のテキストを手動で削除する必要がありました。

このステップでは、パッケージが数百だったため、新しいスクリプトが役立ちます。その後、スクリプトを実行し、いくつかUnable to locate packages(手動でインストールした)を削除しました。スクリプトを再度実行し、それだけです。すべてがうまく機能しています...幸運にも


0

ubuntu-desktopubuntu-desktopをインストールするパッケージをインストールします

sudo apt-get update && sudo apt-get install ubuntu-desktop

システムに必要なパッケージをインストールします。


ubuntu-desktopの依存関係がインストールされていないため、これは失敗します。
ケビンカヤック

0

誤って取り外しlibssl1.0.0て、マシンが故障しました。復元するには、私がやった:

  1. 削除されたもののログをバックアップする cp /var/log/apt/term.log ~/libssl.term.log
  2. libsslアクションに関係のない行を削除します vi ~/libssl.term.log
  3. ネットワークが見つからない(できないping google.com)場合は、リカバリモードで再起動し、ネットワークを有効にします
  4. 削除されたパッケージを再インストールする cat ~/libssl.term.log | grep ^Removing | sed -e 's/^Removing //g;s/ (.*$//g;/diversion of/d;/dangling symlinks/d' | xargs sudo apt-get -y install

0

これは、オンになっている一括アンインストールから(使用できない)パッケージ文字列を書き込むことができる小さなpythonスクリプトです/var/log/apt/history.log。削除されたすべてのパッケージを簡単にインストールするために、apt-get installコマンドにpasteをコピーできる文字列を出力します。

import re

apt_str = u"INSERT YOUR PACKAGE STRING HERE, BETWEEN THE QUOTES"

match =  re.findall(r'([\w\d\.-]+).+? \(.+?\)', apt_str)
print " ".join(match)

コンマ?引用符ですか?
wjandrea

@wjandreaはいI平均引用符
joaoroque
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.