Çeşitli APT paketi kaldırma komutları arasındaki farklar nelerdir?


17

Bu komutlar arasındaki fark nedir?

  1. sudo apt-get autoremove --purge packagenames
  2. sudo apt-get remove --purge packagenames
  3. sudo apt-get purge purge packagenmaes
  4. sudo apt-get remove packagenames
  5. sudo apt-get autoremove

Yanıtlar:


24

Hızlı cevap

  • remove adını taşıyan paketleri kaldırır.
  • autoremoveartık gerekli olmayan otomatik olarak yüklenen tüm paketleri kaldırır. Sonra paket adlarını listelemek yanlıştır autoremove; bunlar dikkate alınmayacaktır (ve tüm uygun paketler kaldırılacaktır).
  • --purgekaldırılan paketlerle ilişkili sistem çapında yapılandırma dosyalarının da kaldırılmasına neden olur. Buna, removeveya gibi bir komut eşlik etmelidir autoremove. --purgeBayrak bir komutun harekete değiştirir; kendi başına hareket etmez.
  • purgeile aynı anlama gelir --purge remove(aynı olanla remove --purge). purgeİki kere söylemek yanlıştır ; ikincisi purge, purged olması gereken bir paketin adı olarak yorumlanır , ki bu muhtemelen istediğiniz gibi değildir.

Tam Yanıt

Bu komutların ne yaptığını ve nasıl farklı olduklarını anlamak için, iki kavramı anlamaya yardımcı olur (ve muhtemelen gereklidir):

  1. elle kurulan ve otomatik olarak kurulan paketler arasındaki fark
  2. bir paketin paket dosyaları ile yapılandırma dosyaları arasındaki fark

Manuel Yükleme - Otomatik Yükleme

Kurulu bir paket manuel veya otomatik olarak kurulur.

Yükleme için bir paket belirlediğinizde ve yüklendiğinde, el ile yüklenir.

Ancak diğer paketler de kurulabilir. Çoğu paketin bağımlılıkları vardır - bu paketlerin istendiği gibi çalışması için yüklenmesi gereken diğer paketler. Bir paketi yüklediğinizde, daha önce yüklenmiş olanlar hariç, bağımlılıkları (yani, bağımlı olduğu diğer paketler) yüklenir.

Yüklenmeniz gereken bir paket belirtilmediğinde, bunun yerine yüklemeyi belirttiğiniz paketin bağımlılığı olarak yüklendiğinde, paket otomatik olarak yüklenir.

Yüklü iki paketiniz varsa ve bunlardan biri diğerinin bağımlılığı olduğunda, bu bağımlılığın otomatik olarak yüklendiği anlamına gelmez. Bağımlılığın manuel olarak kurulması da mümkündür (örneğin, sizin tarafınızdan belirtildiği gibi, buna bağlı olan paketten önce veya buna bağlı olarak aynı anda yüklenmiş olabilir).

En sonunda:

  • Önceden yüklenmiş bir paketi el ile yüklemeye çalışırsanız, yüklü olarak kalır. Ancak otomatik olarak yüklendiyse, bir değişiklik yapılır - manuel olarak yüklemeye çalışmak onu manuel olarak yüklendi olarak işaretler.
  • Gerçekte apt-marknasıl veya hangi koşullarda kurulduklarına bakılmaksızın, herhangi bir paketi manuel veya otomatik olarak yüklendi ( komutla) olarak işaretleyebilirsiniz .
  • Ubuntu sisteminizle önceden yüklenmiş olarak gelen paketlerin tümü otomatik olarak yüklenmez; bazıları otomatik olarak yüklenmiş olarak işaretlenirken bazıları elle kurulmuş olarak işaretlenir. Bu, manuel ve otomatik olarak kurulan paketleri ayırt etmenin arkasındaki mantığı tatmin etmek içindir - bazı paketlerin yalnızca diğerlerinin hizmetinde gerekli olduğu fikri.

Genellikle, otomatik olarak yüklenen her paket için, ona bağlı olan (ve otomatik olarak yüklenmesine neden olan) en az bir elle yüklenmiş paketiniz olacaktır. Ancak, otomatik olarak yüklenen bir pakete bağlı olarak el ile yüklenen tüm paketleri kaldırırsanız, otomatik olarak yüklenen paket artık gerekli olmayacak, ancak yine de yüklenecektir.

apt-get autoremove artık manuel olarak kurulan paketi olmayan otomatik olarak kurulan paketleri kaldırır.

Paket Dosyaları ve Yapılandırma Dosyaları

Paket, söz konusu paketin yüklü olduğu her sistemde olması ve aynı kalması amaçlanan dosyaları sağlar. Bu tür dosyalar, yüklü programlar için yürütülebilir dosyalar, kaynaklar, belgeler ve diğer "varlıklar" sağlar. Genellikle bu paketin sağladığı "dosyalar" adını verdik.

Ancak bir paket (muhtemelen) değiştirilmesi amaçlanan diğer dosyaları da sağlar. Bunlara global (veya sistem çapında) yapılandırma dosyaları denir. Neredeyse her zaman /etcdizine yüklenirler ve yüklü programların davranışını değiştirmek için otomatik ve manuel olarak değiştirilebilirler. Örneğin sudo, bir yapılandırma dosyası /etc/sudoersve daha fazla yapılandırma dosyası için bir dizin vardır /etc/sudoers.d. Bu dosya ve bu dizine eklenen tüm dosyalar, kimlerin sudohangi yollarla kullanmasına izin verildiğini belirtir .

Genellikle bir paketin kaldırılıp sonra geri yüklenmesinin davranış biçimini değiştirmemesi istenir ( paket dosyaları bozuk olmadıkça ve bu yüzden elbette yeniden yüklediyseniz). Bu nedenle, genellikle bir paket kaldırıldığında, paket dosyaları silinir, ancak sistem geneli yapılandırma dosyalarına dokunulmaz.

Bir paketi sistem genelinde yapılandırma dosyalarının da silinmesi gerektiğini belirtmeden kaldırdığınızda, buna paketi "kaldırmak" denir.

Paketi kaldırırken paketin sistem genelinde yapılandırma dosyalarını da silmek istiyorsanız, buna "temizleme" adı verilir.

apt-get removebir paketi kaldıracak; yani, paketi kaldıracak ancak sistem çapında yapılandırma dosyalarını bırakacaktır.

apt-get purgebir paketi temizleyecek; yani, paketi kaldıracak ve ayrıca sistem çapında yapılandırma dosyalarını sildiğinizden emin olacaktır.

Paketleri temizlemenin başka bir yolu da --purgebayrağı kullanmaktır . Bu apt-getne yapacağını söylemez ; bunun yerine, hangi terimlerin (veya "komutların") removeyapmasını istediğini değiştirir. --purgeİşaretin herhangi paket kaldırmaları kaldırılmakta paketi (ler) için sistemsel yapılandırma dosyalarının silinmesi eşlik neden olur. Başka bir deyişle, --purgebayrak kaldırma işlemlerini tasfiyeye dönüştürür.

Komuta --purgesahip olduğumuzda neden bayrağa sahibiz purge? Sonuçta, sudo apt-get --purge remove packagenameeşdeğer değil sudo apt-get purge packagename. Eşdeğerler. Nerede --purgeEğer komutların davranışını değiştirmek istediğinizde kullanışlı geliyor diğer daha remove.

Örneğin, artık gerekli olmayan otomatik olarak yüklenen paketleri kaldırmak istediğinizi varsayalım (bunlara bağlı olarak artık manuel olarak yüklenen paket olmadığından), ancak yalnızca otomatik olarak yüklenen bu paketleri kaldırmak istemiyorsanız, ayrıca silmek istersiniz sistem çapında yapılandırma dosyaları. Sonra koşabilirsiniz:

sudo apt-get --purge autoremove

Bir kullanım daha düşünelim --purge. --reinstallKurulumları yeniden kurulumlara dönüştüren bir bayrak var . Bu, normalde, önceden yüklenmiş bir paketi yüklemeye çalıştığınızda, hiçbir şey olmayacağını veya (paket otomatik olarak yüklendi olarak işaretlenmişse) paketin manuel olarak yüklendiğini işaret eder. Ama birlikte --reinstallbayrak, zaten olması nedenleri yüklü bir paket yükleme kaldırıldı ve daha sonra geri yüklenir :

sudo apt-get --reinstall install packagename

Ancak, yeniden yüklediğiniz paketin sistem genelinde yapılandırma dosyalarını silmek istediğinizi varsayalım. Bu biraz yaygındır; bir paket çalışmadığında ve nedenini bilmiyorsanız, yeniden yüklemeyi ve yapılandırmanın varsayılan olarak sıfırlanması için yapılandırma dosyalarını silmeyi deneyebilirsiniz. Bunu başarmak için şunları çalıştırabilirsiniz:

sudo apt-get --purge --reinstall install packagename

--reinstallYeniden yükleme içine döner montaj (yani, çıkarma tertibatında elde edilmiş) ve --purgetasfiye içine yeniden yükleme çıkarılması parçası döner.

Örneklerinizin Davranışı

Şimdi, örnek apt-getkomutlarınızın her birinin tam olarak ne yaptığı açık olmalıdır :

  • sudo apt-get autoremove --purge packagenames

    Bu, artık onlara bağlı olarak elle yüklenen paketi olmayan otomatik olarak yüklenen paketleri temizler. Yani, bu paketleri kaldırır (paket dosyalarının silinmesini gerektirir) ve sistem çapında yapılandırma dosyalarını da siler.

    Burada packagenameshiçbir şey yapmıyor. Özellikle, isimleri orada listelenen paketleri kaldırmak istiyorsanız, bu sizin istediğiniz gibi davranmayacaktır.

  • sudo apt-get remove --purge packagenames

    Bu tasfiye packagenames; packagenamespaket adlarının boşlukla ayrılmış bir liste olduğunu varsayarsak hepsini temizler. Yani, onları kaldırır (paket dosyalarının silinmesini gerektirir) ve ayrıca sistem çapında yapılandırma dosyalarını da siler.

    Listelenen paketlerden herhangi biri packagenamesyüklü değilse, listedeki varlığının hiçbir etkisi olmayacaktır (bunun yüklü olmadığı konusunda bilgilendirilmeniz dışında). Herhangi bir gerçek paketin adı olmayan paket adlarını listelerseniz, komut bir hatayla başarısız olur .unable to locate packagename

  • sudo apt-get purge purge packagenmaes

    Bu komuttaki olaylardan birini kaldırırsanız purge, öncekine eşdeğer olur. Durduğu gibi, adı verilen bir paketi temizlemeye purgeve ayrıca listelenen paketleri temizlemeye çalışır packagenames. Yana purgeherhangi bir paketin adı değil, bir hata iletisiyle başarısız olur.

  • sudo apt-get remove packagenames

    Bu packagenames, paket dosyalarının silinmesini gerektiren, listelenen paketleri kaldırır . Bu, sistem çapında yapılandırma dosyalarını silmez (çünkü bir temizleme değil, yalnızca bir kaldırmadır).

  • sudo apt-get autoremove

    Bu, artık onlara bağlı olarak manuel olarak yüklenen paketi olmayan otomatik olarak yüklenen paketleri kaldırır. Bu kendi paket dosyaları silme gerektirir, ama değil (olduğu, bir çıkarma ancak bir temizlik harekatını) onların sistem çapında yapılandırma dosyaları.

Nasıl kullanılacağı hakkında daha fazla bilgi için kılavuz sayfasınıapt-get tavsiye ederim . Daha genel bilgi için bu kılavuza bakın .

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.