'Apt-get' kullanarak bir paket nasıl yeniden kurulabilir?


186

Görünüşe göre benim aptitudebir şekilde kırılmış:

sudo aptitude update
0% [Working]Segmentation fault

dmesg
[223282.616599] aptitude[30972]: segfault at 67707f ip 7f954dcfae5d sp 7ffff5a5f950 error 4 in libapt-pkg-libc6.7-6.so.4.6.0[7f954dca5000+bd000]

Bu yüzden aptitudekullanarak yeniden yüklemek istiyorum apt-get.

Ne yazık ki apt-getyeniden yükleme seçeneği yok gibi görünüyor .

aptitudeTekrar işe nasıl gidebilirim ?

Yetenek segfault'u için temel neden bulmuş olabilirim. İşte nasıl çoğaltabilirim:

  1. 'ssh' Cygwin'in rxvt terminali aracılığıyla Debian makinesinde uzaktan oturum açma (Windows 7 64-bit Alman baskısından).
  2. Rxvt penceresini büyüterek iki monitöre yayılmasını sağlayın (evet, iki monitörüm var)
  3. Run aptitude update. Not: rxvt terminalini normale döndürdüğümde, bu segmentasyon hatalarım yok!

Yanıtlar:


320
$ man apt-get | grep reinsta -A2
       --reinstall
           Re-Install packages that are already installed and at the newest
           version. Configuration Item: APT::Get::ReInstall.

Yani, yeniden aptitudekullanmak üzere kullanmak için:

sudo apt-get install --reinstall aptitude

14
ne demek -A5istiyorsun?
Vokuhila-Oliba,

86
erkek grep | grep - "-A"
yerçekimi

34
Ne --okuyorsun?
14:14

13
man getopt, altındaPARSING
Tino

28
-A5eşleşen çizgiyi artı aşağıdaki 5 çizgiyi gösterir. --Seçeneklerin ayrıştırılmasını durdurur, böylece pozisyon argümanları olarak ortaya çıkan herhangi bir şeyi yorumlar -A, aksi halde kendisini kavramak için bir seçenek olarak yorumlanacak olan ifadedeki çizgi dışına çıkmak zorunda kalmaz.
jjmontes

115

Bir paketi yeniden yükleyebilirsiniz sudo apt-get install --reinstall packagename. Bu, paketi tamamen kaldırır (ancak ona bağlı olan paketleri değil), ardından paketi yeniden yükler.

Bu, paket birçok ters bağımlılığa sahip olduğunda uygun olabilir.


10
Kesin ve doğru olmayan tek cevap olduğun için teşekkür ederim.
Cerin

6
@Cerin: Diğer cevaplara aşırı derecede sert demezdim: "man sayfasını oku" bile cevabı nasıl bulacağımı bile verdi.
David Spillett

45
@DavidSpillett, kesinlikle katılmıyorum. Adam sayfaları genellikle çok kötü yazılmış ve yeni başlayanlar için çok dostça. Örneğin, "--reinstall" seçeneğindeki paragrafı "install" argümanı ile kullanmanız gerektiğini belirtmez. Bir acemi haklı olarak "neden yüklemeyi ve yeniden yüklemeyi söylemeliyim?" Birisine RTFM'ye söyleyen bir cevap en kötü cevaptır ve özellikle tam ve gerçekten yararlı bir cevap en alt seviyeye yakın olduğunda, bunu en çok oyla görmem beni üzüyor.
Cerin

20

Bazen yapılandırma dosyalarını da geri yüklemeniz gerekir! sadece yeniden değil.

sudo apt-get install --reinstall xxxx

Uygulamayı tekrar kurun, config dosyalarını tutar.

Bu yardımcı olabilir, ancak bazen yeni başlamalısınız, yani benim kullandığım şey şudur:

sudo dpkg -r xxxx //to remove that xxxx package
sudo dpkg -P xxxx //to purge all related files

sonra

sudo apt-get install xxxx

6
Yalnızca config dosyalarını geri yüklemeniz gerekirse, bazı durumlarda (ucf tarafından yönetiliyorsa) kullanmanız gerekir UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname].
Skippy le Grand Gourou

2
Bu cevap BÜYÜK bir upvote hak ediyor. Bir paketi "tamamen yeniden yüklemek" istediğinizde budur. Örneğin, --ft dosyasının yeniden yüklenmesi, dosya artık mevcut olmasa bile config dosyasını yeniden oluşturmaz. Bunun yerine "Kaldır + Temizleme + (Yeniden) yükleme" işi yapar.
Kar.ma

13

Diğer uygun yardımcı programları etkilemeyeceğinden, yeteneği kaldırmak ve yeniden yüklemek için güvenli olmalısınız. Yani: apt-get remove aptitudeardından apt-get install aptitude, ya da hala başarısız olursa, apt-get purge aptitudeonu takip etmeye çalışın apt-get install aptitude.

Yukarıdakilerden herhangi birini yapmadan önce, soruna neden olan bir sorun olması durumunda tam dosya sistemi ve hatalı blok kontrolü öneririm (soruna bağlı olarak, varsa, daha fazla aktivite işleri daha da kötüleştirebilir). Ayrıca, devam etmeden önce kaldırma / boşaltma adımında nelerin kaldırılacağını incelediğinizden emin olun (bu paketi çıkardıktan sonra başka bir şey değiştirilirse izin istemek duraklatılmalıdır), güvenlidir.


Çok teşekkürler! apt-get removeardından apt-get installhile yaptı!
Vokuhila-Oliba,

Uzun zaman önce, bunun gibi a full filesystem checkya da benzeri şeyler yaptım . Lütfen bana bunun nasıl yapılacağı hakkında kısa bir ipucu verebilir misiniz?
Vokuhila-Oliba,

1
fsck -f <block_device>gibi fsck /dev/sda1. Dosya sisteminin o zaman sökülüp takılması ya da salt okunur olması gerekir, bu nedenle kök dosya sisteminiz muhtemelen tek kullanıcılı modda yeniden başlatılmalı ya da canlı bir cd gibi başka bir şeyden başlatılmalı.
David Spillett

2
tune2fsDosya sistemini, ayarlanan limitinden daha fazla monte edilmiş olarak işaretlemek için kullanabilirsiniz , bir sonraki önyüklemeyi kontrol etmeye zorlar. Dosya sisteminin ext2 / 3/4 olduğunu varsayalım: tune2fs -C 99 <device>ya da mount sayısı temelli kontrolü kapattıysanız, aynı zamanda gibi bir şeyle açın tune2fs -c 17 -C 99 <device>.
David Spillett

2
touch / forcefsck; reboot
user23307

1
sudo apt remove --purge package
sudo apt install package

Sanki daha önce hiç paketi kurmamış gibisin. Bunu sık sık hareket ve böyle şeylerle yapıyorum.

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.