web-dev-qa-db-ja.com

apt-get installコマンドを取り消すことは可能ですか?

Xubuntuのインストール(ライブUSB)にCarpadioをインストールすると、Ubuntu側のリポジトリから50個を超えるパッケージのようにプルされました。これを元に戻したいと思います。しかし、私のすべての狩猟では、 Sudo apt get installコマンドを逆にする方法 より便利なものは見つかりません。これはapt-get purgeを示唆しています。 2つのパッケージ(carpadioとcarpadio-gnomepanel)を削除するだけなので、これは役に立ちません。

/var/log/apt/history.logには、そのコマンドとともにインストールされたすべてのパッケージのリストがあります。 だから、それらすべてを削除する簡単な方法があるのだろうかと思っていました?それ以外の場合は、再インストールするだけです。これはとにかく新規インストールでしたが、興味があります。

履歴ログの小さなサンプル(リスト全体の1/5〜1/10)

コマンドライン:apt-get install cardapio-gnomepanel
インストール:libdbusmenu-qt2:AMD64(0.9.2-0ubuntu1、自動)、python-packagekit:AMD64(0.7.2-4ubuntu3、自動)、cups-pk-helper:AMD64(0.2.1.2-1ubuntu0 .1、自動)、geoclue:AMD64(0.12.0-1ubuntu12、自動)、統一:AMD64(5.18.0-0ubuntu1、自動)、インジケータープリンター:AMD64(0.1.6-0ubuntu1、自動)、libevolution:AMD64 (3.2.3-0ubuntu6、自動)、libqt4-declarative:AMD64(4.8.1-0ubuntu4.3、自動)、libmtp9:AMD64(1.1.3-1ubuntu0.1、​​自動)、tracker-miner-fs:AMD64( 0.14.0-2ubuntu1、自動)、gir1.2-rb-3.0:AMD64(2.96-0ubuntu4.2、自動)、python-aptdaemon.pkcompat:AMD64(0.43 + bzr805-0ubuntu7、自動)、gnome-media:AMD64 (3.4.0-0ubuntu3.1、自動)、metacity:AMD64(2.34.1-1ubuntu11、自動)、nautilus:AMD64(3.4.2-0ubuntu6、自動)、libcompizconfig0:AMD64(0.9.7.0〜bzr428-0ubuntu6、自動)、compiz-plugins-default:AMD64(0.9.7.12-0ubuntu1、自動)、libunistring0:AMD64(0.9.3-5、自動)、libebackend-1.2-1:AMD64(3.2.3-0ubuntu7、自動)、うんぶつ堂cs:AMD64(12.04.6、自動)、python-mako:AMD64(0.5.0-1、自動)、

autoremoveを提案したすべての人に:理由はわかりませんが、他に1つだけpython関連パッケージ(python-keybinderまたは何か)を「不要」として取得しました。削除できました。

インストールとアンインストールの間で、大きな変更のみがxubuntu-restricted-extrasのインストールでした。

66
Karthik T

基本的に、apt-get remove(またはapt-get purge)パッケージの両方を実行する必要がありますapt-get autoremoveその後、 package-oneのインストールを元に戻すには。

プロセス全体を見てみましょう。

  • Sudo apt-get install package-oneは、「自動」とマークされた50個の依存関係をインストールします。これは、質問のログの抜粋からもわかります

  • Sudo apt-get purge package-oneは1つだけ削除(パージ)しますが、doこれを実行します!

    以下のすべてのインストールアクション(実行する場合)は、不要なパッケージを含む情報メッセージを生成します。

    The following packages were automatically installed and are no longer required:
      package-two package-three [...]
    Use 'apt-get autoremove' to remove them.
    

    このリストは基本的に、「自動」とマークされたすべてのパッケージのリストであり、逆の依存関係はありません。言い換えれば、パッケージ管理に関する限り、それらをインストールする理由はありません。

    注:インストールは不要です! APTが不要なパッケージについてあなたに伝えるのが賢いことを示すためです!

  • Sudo apt-get autoremove --purgeこれらを削除(パージ)

詳しくは

78
gertvdijk

その時点でインストールされているパッケージとその依存関係を削除する場合は、次を使用する必要があります。

Sudo apt-get purge package
Sudo apt-get --purge autoremove

ただし、aptアクションを元に戻すには、apt-undoスクリプトを使用できます。 Ubuntuで実行されたaptアクションを元に戻すことができるシンプルなスクリプトです。このスクリプトは、apt-getの代わりに使用してパッケージをインストール/アップグレード/削除/削除/パージ/ダウングレードする場合にのみ機能することに注意してください。

Ubuntuにapt-undoをインストールするには、ターミナルで次のコマンドを実行します。

Sudo add-apt-repository ppa:lkjoel/apt-undo
Sudo apt-get update
Sudo apt-get install apt-undo

使用法:

apt-undo install yourpackages
apt-undo remove yourpackages
apt-undo purge yourpackages
apt-undo upgrade
apt-undo dist-upgrade
apt-undo install yourpackages=old.version
apt-undo install yourpackages=new.version

元に戻すには、上記のaptitudeアクションが端末で次のコマンドを実行します。

apt-undo undo
19
Ramin

Unixの力を活用してください。持っているログファイルの行を取得し、aptが行ったことを取り消すコマンドを作成します。例えば:

$ echo 'Install: libdbusmenu-qt2:AMD64 (0.9.2-0ubuntu1, automatic), python-packagekit:AMD64 (0.7.2-4ubuntu3, automatic), cups-pk-helper:AMD64 (0.2.1.2-1ubuntu0.1, automatic),'|Perl -pe 's/ \(.*?\)//g; s/,//g; s/^Install: //'
libdbusmenu-qt2:AMD64 python-packagekit:AMD64 cups-pk-helper:AMD64

したがって、ログファイルから適切な行を指定すると、誤ってインストールしたすべてのパッケージを削除できます。

$ dpkg -P $(echo '(full log line here)' | Perl -pe 's/ \(.*?\)//g; s/,//g; s/^Install: //')

Perlの代わりにsedを使用しました。これは、sedが欲張りでない一致をサポートしないタイプの正規表現を使用しているためです。

7
Robie Basak

1つのパッケージを削除した後、apt-get remove --purge <package>を追加して--purgeを追加することで完全に削除できます。プルしたライブラリパッケージが自動的にインストールされ、不要になったというメッセージが表示されます。 apt-get autoremoveを実行して削除できます。

1
Ken Kinder

Sudo apt-get purge packagenameに従ってください

Sudo apt-get autoremove. 

メタパッケージでない限り、これが面倒を見るはずです。

FAQ(手動で削除する方法allCardapioファイル? も参照してください。

1
chaskes

インストール後に他のaptコマンドがなかった場合は、次のようなものも使用できます。

Sudo apt purge `cat /var/log/apt/history.log | tail -n 2 | tr ' ' '\n' | grep ':AMD64\|:i386' | tr '\n' ' '`

これにより、履歴から最後のaptコマンドがキャッチされ、ここにインストールされているすべてのパッケージが削除されます。

このコマンドを関数として〜/ .bashrcに配置すると、常に手元に置くことができます。

aptpurgelast () {
        Sudo apt purge `cat /var/log/apt/history.log | tail -n 2 | tr ' ' '\n' | grep ':AMD64\|:i386' | tr '\n' ' '`
}

ここで、シェルでaptpurgelastと入力するだけで、最後のインストールをやり直すことができます。

1
user981297
  1. Aptログから不要なパッケージの長いリストをnew_file.txtに貼り付けます
  2. Perl -pe 's/\(.*?\)(, )?//g' /path/to/new_file.txtを実行
  3. 最後のコマンドの出力をクリップボードにコピーするか、 最初にそこにパイプします
  4. Sudo apt-get remove [クリップボードの内容をここに貼り付け]を実行します

できた.

基本的に、aptログのパッケージのリストをapt-getが理解できる形式にフォーマットする必要があります。括弧、間にある単語、およびコンマは、Perlがプレイする場所です。はい、より良い(より効率的な)方法があります-しかし、私はこれを実行しました。理解しやすく、動作します。

1
Insperatus

技術的に「削除」または「自動削除」操作は、「元に戻す」ことはできませんが、ほとんどの場合、十分な仕事をすることができます。

デフォルトでは、-o APT::Suggests-Important=0 -o APT::Recommends-Important=0を指定しない限り、apt-getはパッケージを残します

Apt history.logを見て、インストールされているすべてのパッケージをアンインストールする方がより信頼性があります。プロセスを簡単にするために、小さなノードベースのスクリプトを作成しました。

https://github.com/rolfen/apt-history

また、変更を「ロールバック」するためのもう1つの、より手動のアプローチがあります。

https://unix.stackexchange.com/a/236711

0
Rolf

かなり古い質問であることは知っていますが、助けを求めてここに来て、誰かを助けることができるかもしれません。 unity8-desktop-session-mirをインストールした後、@ Karthik-Tのような状況になりました。私はそれが大きなものであることを知っています。彼は233パケットを引きました。

autoremoveを使用すると、そのうち34個しか削除されません。ポイントは、unity8-desktop-session-mirのインストール中に、2つのパッケージ(python3-aptdaemon.pkcompatevolution-data-server-online-accounts)を削除したことです。 /var/log/apt/history.logInstallセクションの後に記載されています。

Unity 8のインストールを完全に取り消すために、次のものを発行しました。

  1. Sudo apt-get purge unity8-desktop-session-mir
  2. Sudo apt-get --purge autoremove
  3. Sudo apt-get install python3-aptdaemon.pkcompat evolution-data-server-online-accounts(Unity 8に関連する8つのパッケージを削除しました)
  4. Sudo apt-get --purge autoremove

これは、以前にインストールしたすべてのものを完全に削除するわけではありませんが、場合によっては十分です。

PS:ステップ4で再度発行したように、おそらくステップ2のautoremoveは必要ありません。

0
user536838

PPAを追加したばかりで元に戻したい場合は、以下で説明する手順を実行する必要があります。アンインストールしたくない他のパッケージをインストールした場合、これは失敗する可能性があることを理解してください。これはスクリプトで実行できると確信しています。個人的には、これはaptの一部であり、依存関係のためにインストールされるパッケージと、ユーザーの要求によってインストールされるパッケージの管理を改善する必要があると思います。

1)/etc/apt/sources.listからppaを削除しますppaを追加した時間を覚えておいてください。運がよければ、正確である必要はありません。

2)PPAをインストールした瞬間から、再インストールするもののリストを作成します。cat /var/log/dpkg.log | grep 'アップグレード'

3)PPAをインストールした瞬間から削除するリストを作成します。cat /var/log/dpkg.log | grep 'install'

4)ステップ3からすべてのパッケージを削除します:Sudo apt-get remove {ステップ3からのパッケージのリスト}

5)ステップ2のすべてのパッケージを再インストールします:Sudo apt-get install --reinstall {ステップ2のパッケージのリスト}

6)問題が発生し、解決策が思いつかない場合は、PPAを戻し、2つのリストからすべてのパッケージを再インストールします。

0
VincentSC