“Dpkg --get-selection” leri yalnızca depolarda bulunan paketlere nasıl filtreleyebilirim?


9

Bir sistemde kurulu paketlerin listesini almak ve hepsini başka bir sisteme kurmak istiyorum.

Bunun dpkg --get-selectionsbana dpkg --set-selectionshedef sisteme yükleyebileceğim kurulu paketlerin bir listesini verebileceğini biliyorum . Ancak, yüklü paketlerin bazıları kendimi yerel olarak oluşturduğum (örneğin checkinstall komutunu kullanarak) ve depolardan edinilemeyen paketlerdir. dpkg --set-selectionsO depolardaki bu paketleri bulamadığı zaman süreç başarısız olur.

Bu yüzden oluşturulan listeyi dpkg --get-selectionsyalnızca şu anda yüklü sürümü geçerli depolarımda bulunan paketleri içerecek şekilde filtreleyebilmemin bir yolu var mı?

Yanıtlar:


9

Software Center'ın bugünlerde bilgisayarlar arasında senkronizasyon özelliği olduğunu düşünüyorum. Bu eksik paketleri doğru bir şekilde ele alırsa, sorununuzu çözebilir.

Buradaki sorun dpkg, depoların farkında değil, sadece kurulu paketler. Bir paketin depoda bulunup bulunmadığını çalıştırarak öğrenebilirsiniz apt-cache policy $package. Version Tableİçinde bir depo görüyorsanız , orada mevcuttur.

Peki buna ne dersiniz? Yavaş, ama çalışmalı:

dpkg --get-selections '*' \
  | while read line; do
    apt-cache policy $(echo "$line" | cut -f1 ) \
      | grep -q 'http://' \
      && echo "$line"
done

Bu ilerlemeyi gösterecek ve bir dosyaya total=$(dpkg --get-selections '*'|wc -l); i=0; dpkg --get-selections '*' | while read line; do i=$(($i+1)); apt-cache policy $(echo "$line" | cut -f1 ) | grep -q 'http://' && echo "$i/$total $line"; echo $line>>/var/tmp/dpkg-selection.list; done
yazacaktır

-4

Aşağıdaki komutu kullanın

dpkg --get-selections > installed-software

ana dizininizde kurulu yazılım adı verilen bir dosya oluşturur

yeni sistemde

dpkg --set-selections < installed-software

bu seçimi okuyacak ve yükleyecek


3
Soruyu okuduğunu sanmıyorum.
Ryan
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.