Tüm verileri ve bağımlılıkları dpkg - set-choices '*' den geri yükleme


44

Böylece bir makinede koşabilirim:

dpkg --get-selections '*' > selection.txt

Başka bir makinede:

dpkg --set-selections < selection.txt

... ardından aşağıdakilerden birini yapın:

aptitude install
apt-get -u dselect-upgrade

... paketleri kurmak için.

Ancak, bir paketin (diyelim xyz) başka bir paketin ( abc) bağımlılığı olarak otomatik olarak yüklenip yüklenmediği gibi süreçte bazı bilgilerin kaybedildiği anlaşılmaktadır . Ne zaman bir şey yaptığını görebilirsin apt-get --purge remove abc. Orijinal makinede, paketin xyzbağımlı olarak yüklendiği abcve apt-get autoremoveondan kurtulmak için kullanabileceğiniz bildirilir.

Şimdi farkındayım deborphanve debfostereldeki (basit) görevi verilen kullanımı zordur.

Yukarıda gösterildiği gibi seçimlerin kaydedilmesi ve geri yüklenmesi, kurulu paketlerin ince bağımlılıklarının giderilmesi için yeterli değildir.

Paket yönetimi için tüm meta veri kümesini yedeklemenin ve daha sonra tam olarak geri yüklemenin bir yolu var mı?


Sık sık, bütün paketlerimle (eksi libs) 'sudo apt-get install' ile büyük bir kabuk betiği oluşturduğum şeyi merak ettim. Tabii ki ben de seninle aynı problemi yaşadım.
Chuck R,

Bakmaya başlamak için en iyi yerin bu bilgiden dpkg'nın gerçekten sorumlu olup olmadığını kontrol etmek olacağını tahmin ediyorum. Öyleyse, belki bu bir iş değildir.
Huckle

3
Manuel bir yol kullanıyorsanız, apt-markotomatik veya el ile yüklü paketler hakkındaki bilgileri kaydetmek / geri yüklemekle ilgilenebilirsiniz
Lekensteyn

10.04 paket deposunda değil, değil mi? Bu, Canonical depolarının parçası mı yoksa üçüncü taraf mı?
0xC0000022L

2
Hayır, bu sadece "bilginiz için" bir yorum. Paketlerin işaretlerini almak ve ayarlamak için apt-mark (apt'in bir parçası, bu yüzden zaten kurulmuş olmalı) kullanırdım ( ayrıntılar için kılavuz sayfasına bakın).
htorque

Yanıtlar:


39

Yedekleme:

apt-mark showauto > pkgs_auto.lst
apt-mark showmanual > pkgs_manual.lst

Onarmak:

sudo apt-mark auto $(cat pkgs_auto.lst)
sudo apt-mark manual $(cat pkgs_manual.lst)

Teşekkürler, siz veya Lekensteyn'in bunu cevap olarak yazmasını istemek üzereydi.
0xC0000022L

Bu komutlar, programları o listeden yeniden kurmanıza izin veriyor mu?
Svetlana Belkin

bu , restorasyon sırasında ekstra yüklü paketleri kaldırabilir mi?
n611x007

1
autoVe arasındaki farkı açıklayabilir misiniz manual? Teşekkürler.
Anto

Yanlışlıkla manuel olarak bir sürü başka paket olarak işaretledim ... geri almanın bir yolu var mı? Teşekkürler
dentex 5:16

2

Bu sorunun seçilen cevabı eksik ve çalışmıyor (veya artık çalışmıyor). Ağrılı düzeltme çıktı * .lst dosyalarını ayrıştırmak ve bunları beslemek için döngü için bir bash kullanmaktır apt install. Kötü bir seçim olsa da, burada gösterilmez.

Unix ve Linux Stackexchange'in bu cevabındaapt-clone görüldüğü gibi, daha iyi bir seçim kullanmaktır . Bu küçük bir dosya oluşturur (sistemim için yaklaşık 100 K veya daha az). İddiaya göre, paketleri çok az çaba veya acı ile klonlayacak.

Yani, kısacası, orijinal makinede:

apt-clone clone `uname -n`

Sonra, klonlanacak makinede, klon dosyasını kopyalayın ve çalıştırın:

apt-clone restore original-machine-name.apt-clone.tar.gz

Bu cevabı buraya ekledim, çünkü bu sayfa ilk web aramalarında ortaya çıktı, fakat diğer cevap yoktu. Bu yöntem çok daha kolay görünüyor.

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.