Kaldırılan paketlerin önerilen ve önerilen bağımlılıkları nasıl kaldırılır?


16

Bildiğim bir kaldırılan paketin bağımlılıklarını nasıl kaldırılır? ve denedim

apt-get autoremove

ancak bu, diğer paketler tarafından önerilen / önerilen bağımlılıkları kaldırmaz.

Yani, Y'yi öneren bir X paketi yüklersem, ancak Y'yi kurmazsam ve sonra Y'ye bağlı olan Z paketini yüklersem ve daha sonra yaparım

apt-get remove --auto-remove Z

hiçbir şey buna bağlı olmasa bile Y otomatik olarak kaldırılmaz. (X, bağımlı olmasa bile Y'yi "aldı").


1
Bunun yerine bunu yapan paketin ne olduğunu söyleyebilir misiniz?
Braiam

Birçok örnek var, bu yüzden yukarıdaki açıklamada sorunun özünü çıkarmaya çalıştım. Somut bir örnek de eklemem gerektiği konusunda haklısınız: Texlive-full kurulumunu düşünün. Önceden var olan birçok paket tarafından önerilen (ancak gerekli olmayan) bir çok yazı tipi paketi yükler (tam olarak hangisini hatırlayamıyorum, ancak önceden var olan libreoffice veya matplotlib veya oktav bunları önerdiğini düşünüyorum). Yani sorun "apt-get install texlive-full" ardından "apt-get remove --purge --auto-remove texlive-full" sisteminin aynı orijinal durumda kalmamasıdır.
user2809402

Yanıtlar:


14

Önerilen paketleri sisteminizden kaldırmak istiyorsanız, hala tavsiye eden (veya öneren) yüklü bazı paketler olsa bile, aşağıdakileri dosyaya koyun /etc/apt/apt.conf.d/99_norecommends (oluşturun):

APT::Install-Recommends "false";
APT::AutoRemove::RecommendsImportant "false";
APT::AutoRemove::SuggestsImportant "false";

Bu seçeneklerin belgeleri burada .

Ardından, bir sonraki uygun koşu hepsini kaldırmalıdır. Başlamazsa, başlatınaptitude , ve tip gve gtekrar.

Bu yapılandırma, kullanıldığında önerilen paketlerin otomatik olarak yüklenmesini de devre dışı bırakır apt-get. İçin aptitudebu konsol GUI yapılabilir, menü Seçenekler> Tercihler> (bunun işaretini kaldırın) "otomatik paketleri önerilmektedir Yükleme".


Çoğu zaman yararlı olduğu için önerileri yüklememenizi tavsiye etmem .
Braiam

1
@Braiam Bu OP'nin sorduğu şey değil. Yorumun onun için, benim için değil.
Totor

Ben sadece bunun aşırıya kaçtığını söylüyorum.
Braiam

@Braiam Bu sizin POV'niz. InstallRecommendsEngelli ile oldukça iyi yaşıyorum . Kayıt için, Debian Squeeze, Şubat 2011'den bu yana varsayılan olarak devre dışı bırakıldı (Ubuntu hakkında bilmiyorum). Ayrıca, bir sunucuda veya masaüstü kurulumunda aynı yapılandırmaya ihtiyacınız olmayabilir.
Totor

2
Yükleme Önerileri: Neden 5MB'lık bir şeyler yüklemeniz gerektiğinden, istemediğiniz 1GB'lık dosyaları da yükleyebildiğiniz zaman?
Mark K Cowan

7

APT seçeneklerini geçersiz kılma

Bağımlılıklardan farklı olarak, otomatik olarak yüklenen "önerilen" veya "önerilen" paketler tarafından göz ardı edilebilir apt-get autoremove.

Başka bir yerde açıklandığı gibi, APT'nin bu davranışı yapılandırmada değiştirilebilir.

Benzer şekilde, apt-getkomutun yapılandırması -okomut satırı seçeneğiyle geçici olarak değiştirilebilir .

Bu, otomatik aramayı, kullanılmayan bağımlılıklara ek olarak kalan "önerilen" ve "önerilen" paketleri kaldırmaya nasıl zorlayacağınızdır.

sudo apt-get autoremove -o APT::Autoremove::RecommendsImportant=0 -o APT::Autoremove::SuggestsImportant=0

Dikkat!

Bazı işlevler kaybolabilir. Bir şeyleri araştırmaya ve yeniden yüklemeye hazır olun. Bu paketleri yalnız bırakmak daha kolay olabilir.

Diğer seçenekler

Yalnızca belirli bir paket için 'önerilen' ve 'önerilen' paketleri kaldırmak için apt geçmiş günlüğüne bakın.


1
basitçe bu tür paketleri analiz etmek , 's seçeneği ve bir boru ile kuru bir çalışma gerçekleştirmek - böylece komut:apt-get-sgrep ^Remvapt-get autoremove -s -o APT::Autoremove::RecommendsImportant=0 -o APT::Autoremove::SuggestsImportant=0 | grep ^Remv
myrdd

1

Aslında komut:

sudo apt-get autoremove <Z>

Ama bunun bir püf noktası var! Bağımlılıklardan herhangi birinin, bunları öneren / öneren önceden yüklenmiş başka paketleri varsa, apt bunları kaldırmaz.

Paketin ne olduğunu belirtmediniz, ancak örneğin, IcedTea eklentisini kuracak olsaydım, Java / OpenJRE'yi bağımlılıklara göre kuracaktı. Bunları kullanarak kaldırırsamsudo apt-get autoremove icedtea-7-plugin kaldırırsam, LibreOffice de paketleri önerdiğinden, Java / OpenJRE'yi kaldırmayacağını fark edersiniz.

Bu nedenle, bunları kaldırmak için kaldırmak istemediğiniz paket hakkında aşırı spesifik olmanız gerekir autoremove:

sudo apt-get autoremove <Z> <dependency of Z>

Bu şekilde paketinizin kaldırıldığından emin olabilirsiniz.

Bazı bağımlılıkları kaldırmak için deborphan'ı da kullanabilirsiniz.


1
Bu arada, apt manpage'deki anlayışım, otomatik aramanın bir paket adı beklememesi ve sistemdeki tüm gerekli olmayan paket bağımlılıklarını temizlemesi. Bu nedenle 2 adım yapmanız gerekir: "apt-get remove Z" ve ardından "apt-get autoremove". Bu 2 adım, orijinal sorumda belirtildiği gibi "apt-get remove --auto-remove Z" ile aynı anda yapılabilir. Ama dediğim gibi, sorun şu ki, başka bir şey tarafından önerildiklerinde kaldırılmayan bazı artık paketler var.
user2809402

1
Evet, sorunumu mükemmel bir şekilde tarif ettin. Teşekkür ederim. Ancak, ne yazık ki, çözmediniz, çünkü /var/log/apt/history.log adresine gitmek ve birkaç ay önce Z ile yüklenen Y paketlerini aramak istemiyorum (örneğin, Y = java / jre, Z = icedtea eklentisi) ve ardından hepsini apt komut satırına manuel olarak ekleyin. Sadece Z belirtmek istiyorum ve bağımlılıklar geri kalanı, başka bir varolan paket X (X = örneğinizdeki libreoffice) tarafından önerilse bile , otomatik olarak alınacak .
user2809402

1
Ne yazık ki, apt sistemi bu şekilde çalışır, artık gerekmediklerinde bile paketleri kaldırmak yerine kurulu tutmayı tercih eder. Bunları kaldırmanın tek yolu el ile veya deborphandeborphan'dır, ancak bazı paketleri yine de kaçırabilir. Debug::Seçenekleri kullanabilir ve bununla ilgili diğer cevabımı da kontrol edebilirsiniz . Ayrıca kullanabilirsiniz --no-install-recommends, ancak apt-get varsayılan olarak önerilen paketleri yüklemez.
Braiam

@ user2809402 ayrıca askubuntu.com/q/244470/169736
Braiam

Braiam- Deborphan pointer için teşekkürler. Kontrol edeceğim.
user2809402

-1

Doğru, <Z>bağımlılıklara sahip paketi kaldırmak istiyorsanız şunu yazın:

sudo apt-get autoremove --purge <Z>

3
Teşekkürler, ancak ne yazık ki, "--purge" eklenmesi, "autoremove" ile kaldırılan paketlerin yapılandırmalarını kaldırır. Ancak görebildiğim kadarıyla hangi paketlerin kaldırılacağına ilişkin kararı değiştirmiyor . Yani, önceden varolan bazı X paketleri tarafından önerilen Z bağımlılıkları, "- purge" belirtseler de belirtmeseler de hala kaldırılmaz.
user2809402

1
Ayrıca, autoremovesistem çapında çalışır. Böylece, her aradığınızda autoremovesisteminizdeki kullanılmayan tüm paketleri kaldıracaktır. Bir paketin autoremovingyüklenmesi, genellikle sistemi aynı duruma döndürmez ve bunun yerine bir grup "artık" paket bırakır.
Rolf
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.