Ubuntuでdo-release-upgradeを使用してリリースアップグレードに失敗した後、古いパッケージを削除するにはどうすればよいですか?


14

を介してシステムをアップグレードするdo-release-upgradeと、更新プロセスが失敗し、スクリプトを介して手動でプロセスを終了するように指示されることがありますdpkg --configure -a。これは深刻な問題ではありません-依存関係の問題を手動で解決した後、アップグレードプロセスがすべて正常に機能します。

ただし、do-release-upgradeスクリプトにはアップグレードの完了後にクリーンアッププロセスがあります。

Remove obsolete packages?  
XXX packages are going to be removed.  
Continue [yN]  Details [d]y

古いバージョンのシステムから古いパッケージを削除します。

自動アップグレードが失敗し、手動でアップグレードを完了すると、このプロセスが実行されないため、古いバージョンの古いパッケージがシステムにインストールされたままになります。

手作業でアップグレードを完了した後、「古いパッケージの削除」プロセスを手動で実行するにはどうすればよいですか?

回答:


16

これをテストします:

ターミナルを開き、

Ctrl+ Alt+を押すT

それを実行します:

sudo -i

apt-get update

apt-get autoremove

apt-get clean

UNUSCONF=$(dpkg -l|grep "^rc"|awk '{print $2}')

apt-get remove --purge $UNUSCONF

NEWKERNEL=$(uname -r|sed 's/-*[a-z]//g'|sed 's/-386//g')

ADDKERNEL="linux-(image|headers|ubuntu-modules|restricted-modules)"

METAKERNEL="linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)"

UNUSKERNELS=$(dpkg -l|awk '{print $2}'|grep -E $ADDKERNEL |grep -vE $METAKERNEL|grep -v $NEWKERNEL)

apt-get remove --purge $UNUSKERNELS

update-grub

1
おかげで、これらのコマンドはまさに私が望むものであり、それらの主なものはdpkg -l|grep "^rc"|awk '{print $2}'削除するパッケージを表示することです。これは、apt-getまたはaptitudeが削除のためにそれを見たくないのは奇妙です。
Murz

2
例に基づいたdo-release-upgradeの失敗後に廃止されたパッケージを削除するための1行のcliコマンドは次のとおりsudo dpkg -l|grep "^rc"|awk '{print $2}' | xargs sudo apt-get remove -y --purgeです。注意、このコマンドは確認なしでパッケージを削除しますが、システムをすばやくクリーンアップするのに役立ちます。
ムルツ14年

私のシステムでは、'^rc'マークされたパッケージはインストールされていませんでしたが、古いパッケージを検索する直前にアップグレードが失敗しました。したがって、この答えは不完全なようです。これにより、成功した場合にby になるすべてのパッケージが削除されるわけではありませんdo-release-upgrade
ルスラン

2

「古いパッケージの削除」は実際には単に実行するだけだと思いますsudo apt-get autoremove。それを試して、それが役立つかどうかを確認してください。


2
sudo apt-get autoremove、パッケージの少しだけの部分を削除していること削除しdo-release-upgrade、例えばdo-release-upgrade同じシステム150のパッケージについて削除しますが、上のapt-get autoremove-削除のみ約5〜10個のパッケージ。
Murz 14年

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