Bir borç paketi için bağımlılık listesini nasıl kontrol edebilirim


94

Bir borç paketi için bağımlılık listesini nasıl kontrol edebilirim. Ubuntu 11.10 kullanıyorum ve tüm deb paketlerini yedekledim var/cache/apt/archives. Bilgisayarımı biçimlendirmek ve sadece seçilen uygulamaları yeniden kurmak istiyorum. Ayrıca kurulu paketlerin ve bağımlılıkların listesini nasıl alabilirim.


İkinci sorunuz için bkz. Askubuntu.com/questions/17823/…
htorque

Yüklü paketlerin tam bir listesi için dpkg --get-selections | sed -n 's/[[:space:]]install$//p'
Tino

Yanıtlar:


73

dpkgYönteme ek olarak , depodaki paketlerin bağımlılıklarını da kontrol edebilirsiniz:

apt-cache depends package-name

EDIT @ Tino'nun tavsiyesiyle güncellendi. @ Tigran'ın yorumu artık geçerli değil.


3
Not: Bu sadece paket zaten kurulu ise işe yarar.
Tigran Saluev

@TigranSaluev dpkg -I packageYalnızca kurulu paketler için çalıştığını unutmayın . apt-cacheYaptıktan sonra bilinen tüm paketler için çalışır apt-get update.
Tino,

1
apt-cache depends packagedaha iyi bir yoldur, bu durumda, showpkgbir bağımlılığın bir tavsiye olup olmadığını, anlaşmazlık olup olmadığını söylemez, bu yüzden biraz kafa karıştırıcıdır. dependsBirleştirilmiş bir komut dosyası için showpkgbkz. Unix.stackexchange.com/a/362866/23450
Tino

100

Bu size paketle ilgili tüm bilgileri gösterecektir:

dpkg -I package.deb

Artık Ubuntu 14.04'te işe yaramıyor:dpkg -I splunkforwarder-6.3.3-f44afce176d0-linux-2.6-amd64.deb new debian package, version 2.0. size 15881308 bytes: control archive=3104 bytes. 153 bytes, 5 lines control 6058 bytes, 207 lines * postinst #!/bin/bash 2912 bytes, 93 lines * preinst #!/bin/bash Package: splunkforwarder Version: 6.3.3 Maintainer: Splunk Inc. <info@splunk.com> Architecture: amd64 Description: Splunk The platform for machine data.
Craig S. Anderson

@ CraigS.Anderson Burada 14.04 Koşu ve benim durumumda sadece mükemmel çalışıyor. IMHO kabul edilen cevap olmalıdır.
magic_al 20:16

/var/cache/apt/archives/Paket adının önüne koymayı ve sürümle birlikte tam paket adını bulmak için sekme tamamlamayı kullanmayı unutmayın , örn dpkg -I /var/cache/apt/archives/elasticsearch_2.4.4_all.deb.
Jason R. Coombs,

1
Bağımlılık bilgisi göremiyorum
Nick

Paketin, (muhtemelen popüler bir kullanım durumudur) kurulmadan (yeniden) kurulmadan elde edilebileceğini de ekleyebilirsiniz sudo apt-get install --reinstall --download-only [package name].
Karl Richter

2

apt-cache depends [Package-Name]de çalışacak. Eğer kaynak varsa rağmen .debkaynaklarınızdır listesinden dışından paketi gibi şeyler apt-cache showpkg [Package-Name] && apt-cache depends [Package-Name]modası geçmiş bilgi gösterebilir veya dolayısıyla fiili yüklü paketi ile senkronize olmayabilir dpkg -I [Package-Name]bu durumda en iyi çalışacak.


2

14.04 ve sonrası için:

dpkgartık yok -Ive dpkg-debbağımlılıklar dahil olmak üzere paket bilgilerini göstermek için kullanmak zorundasınız :

dpkg-deb -I package.deb

1
Merhaba Fabby, dpkg şu anda -I seçeneğine sahip değil. Ubuntu 12.04 ve 16.04'te test edilmiştir. Bunun yerine dpkg-deb kullanmak zorundasınız.
Rup Narayan

Yorum geri çekildi; cevap açıklığa kavuşturulmuş ve oy verildi
Fabby

0

İşte bazı özensiz ve muhtemelen dpkg -Ibağımlılık öğeleri bir liste olarak elde etmek için çıktısını alabilirsiniz işleme sonrası çok kapsayan değil :

Bilgisayarlar için yoğunlaştırılmış

# dpkg -I package.deb | python -c "import sys, re; t=re.split(r'\n(?= ?[\w]+:)|:', sys.stdin.read()); print '\n'.join([i.strip() for i in {key.strip(): value.strip() for key, value in zip(t[::2], t[1::2])}['Depends'].split(',')])"
#

İnsanlar için genişletilmiş:

dpkg -I package.deb | python -c "
    import sys, re;
    # Split keys and values into pairs (zipped together later)
    t=re.split(
        r'\n(?= ?[\w]+:)|:', 
        sys.stdin.read()
    ); 
    # Newline separate each dependency
    print '\n'.join([
        # Trim each dependency value
        i.strip() for i in {
            # Build assoc array from package metadata
            key.strip(): value.strip() 
            for key, value in zip(t[::2], t[1::2])
        }['Depends'].split(',')
    ])
"

Bu, 'foo.deb' dosyasına bağlı olan ve henüz kurulmamış olan paketleri tekrarlar: dpkg -I foo.deb | i için $ (awk -F ',' '/ Bağımlılar: / {gsub (/: /, ","); (i = 2; i <= NF; i ++) {gsub (/. * $ /, "", $ (i)); printf ("% s \ n", $ (i));}} '); dpkg -s $ i &> / dev / null || echo $ i; bitti | tr '\ n' ''
Gregory Burd

@GregoryBurd, Cevabımı / psot'umu istediğiniz gibi düzenlemek için çekinmeyin, bu sebepten dolayı topluluk wiki olarak yayınladım ^ u ^
ThorSummoner 17:15

Bu komutu elasticsearch'te çalıştırdığımda yayar libc6\nadduser\n Installed-Size\n. Yani, sadece Bağımlılar çizgisinden daha fazlasıyla eşleşiyor gibi görünüyor.
Jason R. Coombs

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.