Bir paketin neden kurulu olduğunu görebilir miyim?


112

Belirli bir paket için neden yüklendiğini bulabilir miyim?

Öyleyse görebilir miyim, el ile mi yüklendi, yoksa başka bir paketin bağımlılığı olarak yüklendiğini? Ya da dağıtımın bir parçası olarak mı kuruldu?


Bu, bu sorunun bir kısmı ile ilgilidir , ayrıntılar için bu cevaba bakınız.
koushik

Burada 2017 için çok daha iyi bir cevap: askubuntu.com/questions/128524/…
Lambart

Yanıtlar:


107

Bir terminalde aşağıdaki komutu girmek hızlı bir çözümdür:

aptitude why $package

veya, yalnızca nihai nedenle ilgileniyorsanız:

aptitude why $package --show-summary

Değiştir $ paketi paketin adı ile ve yüklemeniz gerekebilir aptitudeilk paketi.

İşte alabileceğiniz çıktı aptitude why aspell --show-summary

Packages requiring aspell:
  inkscape

Daha fazla ayrıntı için koşarsın aptitude why aspell. Aşağıdaki örnek çıktıyı aşağıdaki gibi okuyabilirsiniz: " inkscapeGerektiren libgtkspell, gerektiren libenchantic2a, hangilerini gerektiren aspell". ( iişaretçiler yüklü paketleri gösterir; Aişaretleyiciler otomatik olarak kurulan paketleri gösterir.)

i   inkscape       Depends libgtkspell0 (>= 2.0.10)                                                                    
i A libgtkspell0   Depends libenchant1c2a (>= 1.6.0)                                                                   
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en      Depends aspell (>= 0.60.3-2)

Son olarak, aşağıdaki komut

apt-cache rdepends --installed $package

Bilgisayarınızda yüklü olan ve doğrudan $ paketine bağlı olan diğer paketleri listeler . --recurseDoğrudan veya dolaylı olarak bağımlı olan tüm paketleri listeleme seçeneğini ekleyebilirsiniz .


Yazık yeteneği varsayılan olarak dahil değildir :(
badp

1
@ badp, işaret ettiğiniz için teşekkür ederim. Bu sadece canlı videoda biraz yer kazanmak için, maverick ile kötü yeni. Ama bu paha biçilmez bir araçtır ve onsuz gitmeyeceğim.
enzotib

15
apt-cache rdepends --recurse $packageMuhtemelen çok fazla paket veriyor. Ben eklersiniz --installedyüklü paketlere kısıtlama seçeneği. -iseçenek, bağımlılık öncesi ve bağımlılık ile ilgili paketlerle sınırlıdır. Ancak başka bir paket tarafından önerildiği için bir paket kurulabilir. Böyle bir öneriyle ilgili paketleri dahil etmek için bunun doğru olanları vereceğini tahmin ediyorum:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
jarno

4
@ apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
jarno'nun eğimine göre

30

Belirli bir paketin neden yüklendiğine dair hızlı ve kısa bir akıl yürütme, aşağıdaki komutu bir terminale ( Applications -> Accessories -> Terminal) yazarak bulunabilir :

aptitude why <package-name>

İlgilendiğiniz paketin ismiyle değiştirin. Örneğin, şunu yazmak aptitude why libgoo-canvas-perl, aşağıdakileri verir:

i   shutter Suggests libgoo-canvas-perl

Bu, temel olarak shutter, bu durumda paketin libgoo-canvas-perlkurulmasını önermiştir . Daha sonra yazarak aptitude why shutterbağımlılık zincirinde yürüyebilirim.

Ancak, bir uyarı var. Yeteneklerin gerçek durum olmayabilecek durum için en makul açıklamayı bulduğunu, ancak yine de size daha fazla bakmanız için bir ipucu vereceğini sık sık görüyorum.

Benim durumumda, shutterönerir libgoo-canvas-perl- ancak önerilen paketler varsayılan olarak otomatik olarak kurulmaz. Yine de, shutterbeni el ile yüklememe yönlendiren ekran görüntülerini düzenleyememe ile "deneyim" hatıralarımı canlandırıyorligbgoo-canvas-perl

Son olarak, bir paketin otomatik olarak yüklenip yüklenmediğini (paket yönetim sistemi tarafından, kurulmasını istediğiniz diğer paketlerin bağımlılıklarına ve tavsiyelerine bakmak için zorunlu olarak karar verilen), aşağıdaki komutu çalıştırarak öğrenebilirsiniz.

aptitude show <package-name>

Bu, aşağıdaki gibi bir satır çıkacaktır (çıktının 3. satırı):

Automatically installed: no

Daha fazla bilgi için info aptitude(bir terminalde) koşmak veya Yetenek wiki sayfasını ziyaret etmek

Belirli bir paketin ne zaman yüklendiğini bulmak için 2 seçenek vardır:

  1. Synaptic paket yöneticisi tüm faaliyetlerin geçmiş kaydını tutar. Geçmiş günlük dosyasını görüntülemek için, Dosya menüsünden Geçmiş'i seçin. InstallKurulumla ilgili tüm girişleri listelemek için arama yapabilirsiniz (duruma bakabilirsiniz ). Ancak, bu sadece Synaptic kullanılarak kurulan paketleri gösterecektir.
  2. Bir terminalde aşağıdaki komutu çalıştırın. Bu yükleme geçmişi girişleri için dpkg günlüklerini arayacaktır. Bununla birlikte, bu kayıtların ne kadarının tutulacağının azami sınırı vardır, bu nedenle aradığınız paket uzun süre önce kuruluysa, bulamayabilirsiniz. Daha fazla ayrıntı burada

    zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
    

1
Bir paketin ne zaman yüklendiğini ya da ne zaman yükseltildiğini öğrenmek istiyorsanızzcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
Chris Good,

@ChrisGood: Yorumunuzu akıllı tırnaklar olmadan tekrar girebilirsiniz, bu yüzden kopyalanabilir / kopyalanabilir mi?
Dan Dascalescu

1
Bunu gösterdiğin için teşekkürler. Doğru çift tırnak ile: zcat -f /var/log/dpkg.log* | grep -i PaketAdı | egrep "\ install \ | \ upgrade \"
Chris İyi

12

Evet, yapabilirsiniz ve bu oldukça açık bir emirdir. Yetenek kurduğunuzu varsayarak, bir Terminal Penceresi reklam türü açabilirsiniz:

aptitude why package

Bu, belirli bir pakete bağlı olan paketlerin bir listesini vermelidir. El ile kurulmuş bir paketse, "Paket yüklemek için bir neden bulmak mümkün olmadı" gibi bir şey söyleyecektir.


5

İşte aptitude, güvenilmeyen, 10.10 artık varsayılan olarak gönderilmeyen basit bir yol .

grafikle

Synaptic'i açın ve kaldırmayı deneyin.

Diğer paketleri silmenizi isteyen bir iletişim kutusu açılırsa, bunlar (tekrarlı olarak) ona bağlı paketlerdir.

Terminalden

apt-get remove package_name_goes_here -s

Yine, sonuç olarak çıkarılacak paketler (özyinelemeli) buna bağlı olanlardır. ( -sParametre apt-getpaketi gerçekten kaldırmamasını söyler .)


2
Bu riskli bir çözümdür, çünkü yanlış tıklamaları durumunda paketi ve tüm bağımlılıkları kaldırabilir.
ImaginaryRobots

1
@ImaginaryRobots, bu çok fazla yanlış anlaşılma var. (İlk iletişim kutusunda Tamam'ı yanlış tıklamanız, ardından Uygula'yı ve sonra onay iletişim kutusunda tekrar Tamam'ı tıklamanız gerekir.) Terminal sürümü için ayrıca y/Nyazmanız gereken ekstra bir onay isteği de vardır -s. Ancak bir uyarı ekledim.
badp

1
Bir paketin özelliklerini görüntülerken, bu bilgiler Synaptic'te bağımlılıklar sekmesi altında bulunabilir.
alexanderpas

@alex hatalı - bu iletişim kutusu size paketin elle mi yoksa otomatik olarak mı yüklendiğini söylemez. Not: Gelen kutusu sayacı sıfırlandı, daha çok deneyin.
badp

@ badp no, ancak bu bilgi ana ekranda "Installed (manual)" durum filtresi ile bulunabilir ve bir paket seçtiğinizde paket menüsünde görülebilir.
alexanderpas
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.