Tüm Debian paketlerini yeniden yükleme


19

Arka planda çalışan bir dpkg işlemini yanlışlıkla öldürdüm ve her şeyin yolunda olduğundan emin olmak için tüm paketleri yeniden yüklemek istiyorum.

İlk olarak, tüm paketlerin bir listesini almaya ve yeniden yüklemeye çalıştım

dpkg --get-selections | grep -v deinstall | awk '{print $1}' > list.log
apt-get install --reinstall $(cat list.log)

Ancak şu gibi mesajlar var:

E: Couldn't configure pre-depend debconf:i386 for console-setup:i386, probably a dependency cycle.

apt-get -f installBaşarısız denedim .

Son çare olarak, sağlama toplamlarında başarısız olan tüm programları yeniden yükledim:

dpkg -l | grep ^ii | awk '{ print $2 }' | xargs debsums -s -a

Her şeyi yeniden yüklemek için ne yapmalıyım?

Düzenleme: Sorun çözüldü. Sorun başka bir şeydi (yorumlara bakın). Anlıyorum Debian ile kaçınmak bir şey.


1
Son zamanlarda bir paket yüklemeye çalışırken bir kilitlenme yaşadım. Yeniden başlattığımda ve bu paketi yeniden yüklemeye çalıştığımda, "E: dpkg kesildi, sorunu düzeltmek için 'dpkg --configure -a' komutunu el ile çalıştırmanız gerekir. Bu komutu çalıştırmak söz konusu paketi ve yapılandırma dosyalarını kaldırdı. Daha sonra paketi sıfırdan kurabildim. O komuta gitmeyi dene.
embedded.kyle

Hiçbir şey yapmadı, sanırım hiçbir şey kırılmadı. Daha sonra sürücü sorunlarının çözülüp çözülmediğini kontrol etmeye çalışacağım.
alex_reader

1
Tüm paketleri yeniden yüklemek == gerçekten kötü bir fikir. (a) Neredeyse her zaman gereksizdir (b) muhtemelen başarısız olacaktır (c) Sisteminiz gerçekten çok kötü bir şekilde dağılmışsa, yeniden yükleyin. Sadece gördüğünüz sorunları düzeltin.
Faheem Mitha

Yanıtlar:


9

Ben ki hatırlayarak, bu deneyin değil test:

dpkg --get-selections > selections
sudo dpkg --clear-selections
sudo dpkg --set-selections < selections
sudo apt-get --reinstall dselect-upgrade

Kaynaklar:


Sorunum tamamen farklıydı: Doğru çekirdeği (!) Önyüklemiyordum. Cevabımı istediğim gibi yapıyormuş gibi kabul edeceğim (ama denenmemiş).
alex_reader

Bu işe yaramaz ve sistemi tamamen kırar. Satır 3, apt'i kaldıracaktır, böylece daha sonra her şeyi yeniden yüklemek mümkün olmayacaktır.
rkjnsn

@rkjnsn: Cevabı güncelledim, çalışıp çalışmadığını kontrol et.
Marco Sulla

1
Seçim dosyası doldurulmasına rağmen hiçbir şey yeniden yüklenmiyor: pi @ prodpi ~ $ sudo apt-get --reinstall dselect-upgrade Paket listelerini okuma ... Bitti Bina bağımlılık ağacı Durum bilgilerini okuma ... Tamamlandı 0 yükseltildi , 0 yeni yüklendi, kaldırmak için 0 ve 0 yükseltilmedi. Herhangi bir fikir?
andig

Kodunuzun çalışmayacağını düşünmemizin bir nedeni, komut dpkg --get-selectionslistesinin paketleri de kaldırmasıdır.
Ortomala Lokni

2

Her ihtimale karşı, her paketi yeniden yüklemeyi deneyin :

for i in $(cat list.log); do apt-get install --reinstall "$i"; done

Tüm sorulara evet yanıtı da eklemek isteyebilirsiniz.


cat: list.log: Böyle bir dosya veya dizin yok
IgorGanapolsky

2
@IgorGanapolsky dpkg --get-selections > list.logÖnce koş .
QwertyChouskie

2
list.logsorudan alınır.
Stephen Kitt

2

Gelen kaynaklardan biri Lucas Malor I tarafından belirtilen çözüm yakın görünüyor bir komut adı verilen Populator bulundu. Paketler seçim değişkenini tüm paketlerinizin listesine ayarlarsanız

PKGLIST=$(dpkg --get-selections | grep -v deinstall| cut -f1)

daha sonra komut dosyasını çalıştırabilir ve tüm paketleri yeniden yükleyebilirsiniz, ancak sistemde muhtemelen bazı sorunlar olacaktır. İlk önce bir sanal makinede test etmek daha iyi olurdu.

Yukarıdaki linkten betiğin bir çeşidi:

#!/bin/bash
#
# Script to pre-populate apt-get proxy for faster later downloads.
# It uses apt-get and wget to pull all the specified packages.
#

# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
   echo "You're not root, are you?" 1>&2
   exit 1
fi

# Specify wanted packages
PKGLIST="exaile" 

# Clears out the local repository of retrieved package files
apt-get clean

# Resynchronize the package index files from their sources
apt-get update

# Re-install specified packages at the newest version. 
apt-get install --reinstall $PKGLIST

Belirli paketlerin yeniden yüklenemediğine dair bir hata gösterilirse, tekrar denemek için bu komutu çalıştırın:

sudo apt-get -y autoremove

1

Çıktınızı alacak ve dosya adlarını ayıran boşluklarla dev bir satır yapacağı için bunu deneyin.

dpkg --get-selections | grep -v deinstall | awk '{print $1}' > list.log awk '$1=$1' ORS=' ' list.log > newlist.log apt-get install --reinstall $(cat newlist.log)

Orijinal yayınınızdaki tek değişiklik, muhtemelen istediğiniz dosyayı oluşturmak için ilk satırla satır içinde yapılabilecek ikinci awk deyimine eklemektir.

Bu değişiklik, apt-get paketlerini ve ilk yüklenmemiş olan bağımlılıkları doğru şekilde yeniden indirmeye ve sırayla yeniden yüklemeye zorlayacaktır.

Satır içi yaparsak, bunun şöyle görüneceğine inanıyorum:

dpkg --get-selections | grep -v deinstall | awk '{print $1}' | awk '$1=$1' ORS=' ' > list.log

Ve sistemin gerçekten doğru paketleri (veya en son) içerdiğinden emin olun, apt önbelleğini temizleyin, güncelleyin ve ardından tüm dosyaları tekrar indirin (yalnızca önbellekte ne olmasını istiyorsanız ilk iki adımı atlayabilirsiniz. yeniden monte edildi):

apt-get clean && apt-get update && apt-get install --reinstall $(cat list.log)

Bir hangup vardı yükseltti bir sistemde yüklü 2k paketleri vardı. Dpkg --configure -a kullanarak kurulumu tamamladım (son aşamadaydı). Sonra her şeyi doğru bir şekilde yeniden kurmak için koştum.

Veya /superuser/298912/reinstall-debian-while-keeping-installed-packages-and-data adresinde belirtildiği gibi :

sudo apt-get install --reinstall $(dpkg --get-selections | grep -w 'install$' | cut -f1)

X'in bazı bileşenlerinin veya favori pencere yöneticinizin bazılarının yeniden yüklenmesini sevmeyebileceğinden, herhangi bir yeniden yüklemeden önce bir "init 2" çalıştırdığınızdan emin olun.


IFS'yi değiştirmedikçe $(cat file), herhangi bir boşlukta tırnak işareti kullanılmadan belirtilir ve dosyanın satır satırları veya boşluklarla sınırlandırılmış olup olmadığı tam olarak aynı sonucu verir. --reinstallyardımcı olabilir, ancak bundan önce iki kez verildi.
dave_thompson_085

1

Aptitude'u kullanırken bunu yapmanın kolay ve hızlı bir yolu vardır:

sudo aptitude reinstall '~i'

şu anda yüklü olan tüm paketleri yeniden yükler.


-1

RPM kullanırken, paket veritabanında bozulmaya neden olmanız durumunda, bu veritabanını yeniden oluşturma seçeneği vardır, böylece temelde bir yeniden yüklemeden geçmenizi engellerler. Burada bir kullanıcının işaret ettiği gibi, bu Debian tarafından yapılır dpkg --configure -a.


1
Rolü, dpkg --configure -atüm paketlenmemiş ve yapılandırılmamış paketleri yapılandırmaktır. Adamı sayfalarına bakın dpkgve dpkg-reconfigurehem de debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html
Ortomala Lokni
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.