Ubuntu'da do-release-upgrade ile başarısız sürüm yükseltmesinden sonra eski paketler nasıl kaldırılır?


14

Bazen bir sistemi yeni sürüme geçirdiğimde do-release-upgradegüncelleme işlemi başarısız olur ve script bana işlemi manuel olarak bitirmemi söyler dpkg --configure -a. Bu ciddi bir sorun değil - bağımlılıklar sorununu elle çözdükten ve bitirme yükseltme işleminin hepsi iyi çalışıyor.

Ancak do-release-upgradebetiğin yükseltmeyi bitirdikten sonra bir temizleme işlemi vardır:

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

bazı eski paketleri sistemin eski sürümünden kaldırır.

Otomatik yükseltme başarısız olduğunda ve manuel olarak yükseltmeyi bitirdiğimde bu işlemin yürütülmediği anlaşılıyor, bu nedenle eski sürümden eski paketler sistemde yüklü kalıyor.

Yükseltmeyi elle tamamladıktan sonra "Eski paketleri kaldır" işlemini elle nasıl çalıştırabilirim?

Yanıtlar:


16

Bunu test et:

Bir terminal açın,

Ctrl+ Alt+ Tuşlarına basınT

Çalıştır:

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
Teşekkürler, bu komutlar tam olarak istediğim, bunların ana dpkg -l|grep "^rc"|awk '{print $2}'paketleri kaldırmak için gösterir. Bu, apt-get veya yeteneklerin kaldırmak için görmek istememesi gariptir.
Murz

2
-Do-salım yükseltme sizin örnek dayalı başarısız sonra kaldır eskimiş paketleri Tek hat cli komut şöyledir: sudo dpkg -l|grep "^rc"|awk '{print $2}' | xargs sudo apt-get remove -y --purge. Dikkat, bu komut paketleri onaylamadan kaldırır, ancak hızlı temizleme sistemlerini otomatikleştirmek için kullanışlıdır.
Murz

Sistemimde '^rc'işaretli paketler bile kurulmadı, ancak eski paketler aranmadan hemen önce yükseltme başarısız oldu. Yani bu cevap eksik görünüyor. Bu, başarılı olması durumunda olacağı tüm paketleri kaldırmaz do-release-upgrade.
Ruslan

2

Ben "eski paketleri Kaldır" aslında sadece bir çalışır inanıyorum sudo apt-get autoremove. Deneyin, yardımcı olup olmadığına bakın.


2
sudo apt-get autoremovepaketlerin yalnızca küçük bir kısmını kaldırır, bu da kaldırır do-release-upgrade, örneğin do-release-upgradeaynı sistemde yaklaşık 150 paket apt-get autoremovekaldırılır , ancak - yalnızca 5-10 paket kaldırılır.
Murz

1

İlgisiz bir sorunun bu cevabının , kullanılmayan şeylerden daha fazlasını kaldırmış gibi görünen bir yardımcı program ve komut sağlayabildiğini görüyorum :

  1. "Deborphan" paketini kurun.
  2. sudo deborphan | xargs sudo apt-get -y remove --purge

yetim kalmış paketler ile eski paketler arasındaki farkı not edin. Ve OT'nin eski paketleri kaldırmak istediğini - askubuntu.com/questions/286947/…
Daniel Alder

@Daniel Alder OT, başarısız bir sürüm yükseltmesinden sonra eski paketleri kaldırmak istedi. Sürüm yükseltmenin, depoları değiştirdikten ve tam bir yükseltme gerçekleştirdikten sonraki son adım olarak yaptığı şey, artık paketleri kaldırmasıdır. Bu nedenle, başarısız bir sürüm yükseltmesinden sonra manuel olarak tekrarlanacak son adımdır.
DustWolf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.