Tam yüklü olmayan bir paket nasıl kaldırılır / kurulur


62

Geçen gün bsnes'i kurmaya gittim ve ne nedenle olursa olsun kurulum başarısız oldu. Şimdi, hepsi bu kırık paketi işlemeye ve başarısız olmaya çalıştıkları için güncelleme yapamıyorum, yeni paketler yükleyemiyorum ya da temelde apt-get komutlarını yapamıyorum. Yeni bir paket kurmaya çalışmak da aynı kadere mahkumdur. Aldığım hata:

Setting up google-chrome-stable (33.0.1750.152-1) ...
/var/lib/dpkg/info/google-chrome-stable.postinst: 124: /var/lib/dpkg/info/google-chrome-stable.postinst: update-alternatives: not found
dpkg: error processing google-chrome-stable (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up bsnes (0.088-7) ...
/var/lib/dpkg/info/bsnes.postinst: 5: /var/lib/dpkg/info/bsnes.postinst: update-alternatives: not found
dpkg: error processing bsnes (--configure):
 subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
 google-chrome-stable
 bsnes
E: Sub-process /usr/bin/dpkg returned an error code (1)

Google’da ve burada Ubuntu’ya soruyorum ancak çalışan bir çözüm bulamadım. Genel olarak önerilen düzeltme aşağıdakileri çalıştırmaktır:

sudo apt-get clean && sudo apt-get autoremove
sudo apt-get -f install
sudo dpkg --configure -a

Ancak bu işe yaramıyor. Apt-get komutlarının tümü yukarıdaki hatayla aynı hatayla başarısız olur ve dpkg komutu sadece yardımcı olmaz. Genellikle diğerlerini Synaptic veya aynı zamanda başarısız olan komut satırı yoluyla temizlemenizi önerirler.

Yardım için teşekkürler

Yanıtlar:


60

İleri düzey kullanıcılar için, kendi risklerinizde kullanın.

Aşağıdaki hata mesajına göre:

subprocess installed post-installation script returned error exit status 127

Her /var/lib/dpkg/info/[package_name].postinstşeyi düzenlemek ve yorumlamak isteyebilirsiniz (veya daha iyisi, onu anlamaya çalışın ve sorunu tanımlayın), sonra apt-gettekrar deneyin .

Bu özel Söz konusu mesaj "kurulum sonrası" ilgilendiriyor olsa da, örneğin yerine "ön kaldırma" veya "post-çıkarma" sözü olabilirdi unutmayın (ki dosyanın uzantısı Düzenlenecek vakalar olurdu .prermya .postrm) .


2
Aslında bu en iyi yöntemdir. Yeniden yüklemek dpkgher zaman yardımcı olmuyor.
Danatela

2
Teşekkürler yığınlar. Düzeltmem gerekiyordu /var/lib/dpkg/info/[package_name].prermama göreviniz bana doğru yönü verdi. Kesinlikle gelişmiş kullanıcılar için olsa da, bu riskli !
sмurf

En iyi cevap Teşekkürler! Düzeltme .prermve .postrmdosyalar sorunu çözdü.
kaynaştırıcı

42

Daha önce gönderdiklerinizden başka, yardımcı olabilecek birkaç komut daha var.

  • Autoclean, alınan paket dosyalarının yerel deposunu temizler.

    sudo apt-get autoclean
    
  • Paketlerin kurulmasını / kaldırılmasını zorlayın. Dikkatli kullanın

    sudo apt-get --force-yes install <pkgname>
    

    ve

    sudo apt-get --force-yes remove <pkgname>
    

Ayrıca her zaman olduğu gibi dpkgpaketleri kurmak, kaldırmak ve temizlemek için kullanabilirsiniz .

  • Yüklemek

    sudo dpkg -i <pkgname>
    
  • Kaldır

    sudo dpkg -r <pkgname>
    
  • tasfiye

    sudo dpkg -P <pkgname>
    

Hem dpkg hem de apt-get --force-yes komutları, daha önce alıştığım aynı hatayı veriyor. Autoclean bir hata döndürmez, ancak kırılmış iki paketle de bir şey yapmaz.
Bijak

@Bijak Mutlaka tasfiye denedik gerekir bsnes.Have sen?
Kayıtlı Kullanıcı

Evet, dpkg -P, apt-get temizleme ve Synaptic ile
Bijak

dpkg -l |grep bsnes
Kayıtlı Kullanıcının

rF bsnes 0.088-7 amd64 Doğru SNES / SuperFamicom emülatörü
Bijak

27

Yani, daha googling ve gerçekten dikkatlice tekrar hata mesajları okuduktan sonra dpkgyeniden yüklenmesi gerekiyordu gibi görünüyor .

sudo apt-get install --reinstall dpkg

Sorunun ne olduğunu bildiren (eğer bunu arar ve görürse) update-alternatives: not foundhata mesajındaydı. Dpkg yeniden yüklenir yüklenmez diğer paketler otomatik olarak kurulmaya devam etti.


3
Neden listedeki şu ana kadar ki tek doğru (ve kabul edilen) cevap, en üstteki cevabın less puanından daha az? +1
David Foerster

birincisi: artık indirilemeyen paketler için çalışmadığı için "linux-image-extra-4.4.0-65-generic'in yeniden yüklenmesi mümkün değildir, indirilemez."
Joe

3
Bu muhtemelen , sorunun başlığına dayanarak buraya gelen herkes için en az olası çözüm. Ama neden bir sürü kimse bu soruna ile sona erebilir, bu nedenle orada var olacaktır önerilen "Bu benim için çalışıyor" çözümleri bir sürü.
michael

Bu aslında işe yaramıyor.
NelsonGon

15

Paket dosyasını bu /var/lib/dpkg/info/yoldan kaldırabilir ve kaynağı güncelleyebilirsiniz.

sudo rm /var/lib/dpkg/info/[package_name].*
sudo dpkg --configure -a
sudo apt-get update

Ardından, paketinizi yeniden yükleyin sudo apt-get install [package_name]

doktor


4
Aslında daha iyi kullandın sudo rm /var/lib/dpkg/info/[pakege_name].*. Aksi takdirde, aynı adla başlayan paketleri de kaldıracaksınız. Neyse, bunun için teşekkürler, benim için çalışan tek çözüm
buydu

13

Eğer hepsi hataysa. Yaptığım şey ilk önce dizini şu şekilde değiştirdim:

cd /var/lib/dpkg/info

sonra her şeyi ile kaldırdım .postinst:

sudo rm *.postinst

sonra depoyu güncelle

sudo apt-get update

sonra yaptığımda her şey normale döndü:

sudo apt-get --force-yes install openjdk-7-jre-headless

6
Bu , yalnızca etkilenen paketinki değil tüm yükleme sonrası komut dosyalarını kaldırır . Bence biraz fazla abartılı. -1
David Foerster

Yalnızca soruna neden olan yükleme sonrası komut dosyasını tanımlayıp kaldırmak kolaysa, başarısız bir paketi kaldırmak için çok uygun bir yol olabilir.
Ian Mackinnon

Sadece etkilenen çekirdeğin .postinstini yeniden adlandıran kernal sorunları olan bir kabustan sonra sorunu düzeltti
Andy

5

Her şey başarısız olursa, paketi el ile kaldırabilirsiniz dpkg. Koşmak sudo dpkg -P bsnestemizlemeli bsnes.


2
dpkg: error processing package libcuda1-340 (--purge): package is in a very bad inconsistent state; you should reinstall it before attempting a removal
endolith

2

Benim durumumda apt-get install -fçalıştı. MySQL çalışma tezgahı topluluğu kuruyordum

Daha önce denenmiş apt autoclean

Zorla kipte kurarak düzeltilebilecek bazı eksik bağımlılıklar nedeniyle dpkg hatasını gördüm (bağımlılıklar kurarak)


0
sudo apt-get install -f --reinstall coreutils init-system-helpers

Yukarıda çalıştıktan sonra, herhangi bir paket için her zamanki gibi / upgrade / remove / purge 'u kurabilirsiniz.

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.