Bir uygulamayı tamamen kaldırmak için doğru yol nedir?

477

Bu bilgi için ağı aradım ve bunlar gibi farklı komut satırları buldum:

sudo apt-get remove application
sudo apt-get remove application*

sudo apt-get remove --purge application
sudo apt-get remove --purge application*

sudo apt-get purge application
sudo apt-get purge application*

Peki, doğru yol nedir? Bunu kullanmak için "*" gerekli mi?

Bundan sonra, şu komutları da buldum:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)
    
sordu user48949 14.09.2012 23:54

8 cevap

635
  • apt-get remove packagename

    , ikili dosyaları kaldıracak, ancak paketin packagename 'sinin yapılandırmasını veya veri dosyalarını değil. Ayrıca, takılı olmadıkları zamana bağlı bağımlılıklar da kurulacaktır.

  • apt-get purge packagename veya apt-get remove --purge packagename

    , packagename paketiyle ilgili her şey ile ilgili olarak kaldırılacak, ancak yükleme sırasında onunla yüklenen bağımlılıklar değil. Her iki komut da eşdeğerdir.

    Yapılandırmayı karıştırdığınız için bir uygulamayı kullanarak 'her şeyi baştan başlamak' istediğinizde kullanışlıdır. Ancak, genellikle ana klasörlerde, genellikle giriş klasörlerinde bulunan yapılandırma veya veri dosyalarını kaldırmaz. Bunları da çıkarmak için kolay bir yol yoktur.

  • apt-get autoremove

    artık paketleri, yani bağımlı olarak yüklenmek üzere kurulmuş olan, ancak artık yüklü olmayan paketleri kaldırır. Artık ilgilenmediğiniz bağımlılıkları olan bir paketi kaldırdıktan sonra bunu kullanın.

  • aptitude remove packagename veya aptitude purge packagename (aynı şekilde)

    ayrıca packagename tarafından gerekli olan ancak kalan paketlerin gerektirmediği diğer paketleri de kaldırmaya çalışacaktır. % Co_de% 'in yalnızca yüklediği paketler için bağımlılık bilgilerini hatırladığını unutmayın.

Ve daha birçok var. Alt düzey aptitude komutları (gelişmiş) veya Muon, Synaptic, Yazılım Merkezi vb. Gibi GUI araçları kullanılabilir. Uygulamaları kaldırma veya paket yönetiminizle etkileşimde bulunan diğer görevleri gerçekleştirmenin tek bir 'doğru yolu' yoktur. .

Bulduğunuz liste sadece örnek. Anlamları anladığınızdan emin olun ve eylemi kabul etmeden önce ne yapmak istediğini deneyin (önerilen eylemleri gerçekte sunmadan önce dpkg tuşuna basmanız gerekir).

Sorudaki yıldız işareti muhtemelen yanlış ; Y , kabuk olarak normal bir ifadeyi değil, bir glob modelini kabul eder. Yani ne olur?

sudo apt-get remove application*

şudur:

  1. Kabuk, geçerli dizindeki dosyalara bakarak apt-get 'yi genişletmeye çalışır. Eğer (normalde olduğu gibi) hiçbir şey bulamazsa, değişmeyen glob modelini döndürür (burada varsayılan davranışla application* varsayarak --- bash hata verir).

  2. zsh , adı bir dize içeren paketleri apt-get normal ifadesini karşılayan paketleri, application* ve ardından% co_de rasgele bir sayı% 'sini kaldıracak: applicatio , n , applicatio , application vb.

  3. Bunun nasıl tehlikeli olabileceğini görmek için, (çifte güvenlik için root olmadan) applicationn ( libapplicatio bunu yapmak yerine taklit eder) --- tüm paketlerin kaldırılacağını söyleyecektir. Onların isimleri ve bağımlıları, neredeyse tüm sistemi "kazanmış" ...

Muhtemelen, kastedilen komut gerçekten

 sudo apt-get remove "^application.*"

(kota ve noktaya dikkat edin), adı apt-get -s remove "wine*" ile başlayan tüm paketleri kaldıracaktır.

Bu komutlar,

sudo updatedb                  # <-- updates the locate database (index). harmless
sudo locate application        # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.

paket yönetiminin kapsamı dışındadır. Paket yöneticisini kullanmadan paketlere ait dosyaları kaldırmayın! Kafası karışacak ve bazı şeyleri yapmak için yanlış yolu olacaktır.

Bir dosyanın ait olduğu paketi bilmiyorsanız, şunu deneyin:

dpkg -S /path/to/file
    
verilen cevap gertvdijk 15.09.2012 00:04
92

Ubuntu 12.04 için ve belki daha yüksek, doğru yöntem:

sudo apt-get --purge autoremove packagename

burada ayrıntılı olarak.

İstenmeyen paketleri silebilecek ve çözdüğünden daha fazla sorun yaratabileceği için packagename* kullanmayın. Ya da yapmanız gerekirse, en azından bunu yapmadan tam olarak ne yapacağını görmek için -s , --simulate , --dry-run flag ile çalıştırın.

    
verilen cevap Kurtosis 20.11.2013 21:01
17

Bu komutu kullanabilirsiniz:

sudo apt-get purge --auto-remove packagename

Gerekli paketlerin yanı sıra bu paketlerle yüklü olan bağımlılıkları temizler. % Co_de% seçeneği ( --auto-remove 'nın takma adı), autoremove ' ye benzer şekilde çalışır. Bu komutu kullanarak tek bir komut çalıştırabiliriz:

sudo apt-get purge --auto-remove packagename

Bunun yerine:

sudo apt-get purge packagename
sudo apt-get autoremove
    
verilen cevap pl_rock 16.09.2015 22:08
7

Zamanın sudo apt-get remove --purge application veya sudo apt-get remove applications 99% 'ını güvenle kullanabilirsiniz. % Co_de% bayrağını kullandığınızda, tüm yapılandırma dosyalarını da kaldırır. Söz konusu uygulamayı yeniden yüklemek isteyip istemediğinize bağlı olarak, hangisini istediğinizi veya olmayabilir. % Co_de%, kaldırdığınız ana uygulamanın genellikle eklentileri, ek özellikleri vb. Olan purge ile başlayan tüm uygulamalarla eşleşecektir. yani

sudo apt-get remove gedit*

application* , application ve gedit öğelerini kaldırırdı. Genellikle, çoğu eklenti / ilişkili program ana uygulamaya bağlıdır ve ana uygulamayı kaldırdığınızda otomatik olarak kaldırılır (veya kaldırılması için işaretlenir) çünkü bunu yapmak için gerekli değildir.

Son komutunuz, yalnızca artıkları dağınık kaldırıcılara sahip olduğu bilinen uygulamalardan kaldırmaktır ve yalnızca uygulamanın kalanını kaldırmaktadır.

    
verilen cevap reverendj1 15.09.2012 00:05
5

Bir paketin kaldırılmasıyla ilgili bazı hata mesajları aldım, çalıştığımın tek yolu şuydu:

mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package

Bunu sadece kullanmama rağmen buldum

dpkg --remove --force-remove-reinstreq package

paketi kaldırdığı dosya ile taşınacak dosyaya doğru yolu gösterir:

mv /var/lib/dpkg/info/package.* /tmp/

Uygulamanızın adını içeren paketini değiştirin. Ubuntu'da sudo kullanın, Debian'da kök olun.

    
verilen cevap DangerFireBob 26.02.2015 10:26
3

Bu komutu internette buldum.

dpkg --purge --force-depends application

İşte .

    
verilen cevap vrcmr 15.09.2012 00:10
1

Kaldırmak istediğiniz uygulamaya göre değişir. Evet komutunu vermeden önce bağımlılıklarını kontrol ettiğinizden emin olun. Bir şeyi komut satırına göre kaldırdığınızda, bazen gerekmeyen bir kaç kitaplık gösterecektir. Bunlar apt-get autoremove ile kaldırılabilir.

sudo apt-get remove --purge applicationname gibi komutları kullanarak diğer uygulamaların gereksinim duyduğu bazı bağımlılıkları kaldırabilir ve bu nedenle sisteminizi bozabilir.

Bunu daha güvenli bir şekilde yapmak istiyorsanız, her zaman yalnızca yazılım merkezi veya apt-get remove applicationname kullanarak kaldırabilirsiniz. Artık bağımlılıklar gerekli değilse, daha sonra apt-get autoremove sorun.

    
verilen cevap gustavokrm 15.09.2012 00:10
1

Sadece burada bir karışıklık kaynağı gibi görünen bir şeyi açıklığa kavuşturmak istedim. % Co_de% yardımcı programı, paket bağımlılıklarını birbirleriyle ilişkili olarak bilmez veya izlemez. Bu, dpkg 'in geliştirilmesinin büyük bir nedeni olduğuna inanıyorum. Bu sayfada 8.6 bölümünden okuyabilirsiniz. Debian GNU / Linux SSS - Debian paket yönetim araçları

  • apt ile: A paketini temizlemek istedim ve bağımlılık var B paketini çağırdı ve B paketinin başka bağımlı paketleri yoktu. Paket A ve B temizlenir. Paket B DID başka bağımlıysa Paketler, daha sonra sadece A paketi temizlenir.

  • dpkg ile: Hangi bağımlılık? Bana sadece laneti temizlemeyi söyledin. Paket böyle yaptım! Sizin tarafınızda kötü planlama yapmaz. Benim üzerimde acil durum oluşturuyor.

Bununla birlikte, burada her bir temizleme yöntemi için kullanılabilen iki tek gömlek vardır:

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --dry-run --purge

apt-get autoremove -y; apt-get --dry-run purge -y $(dpkg --list |grep '^rc' |awk '{print }')

Gerçek temizleme işlemini gerçekleştirmek için apt 'i kaldırarak hangi eylemleri gerçekleştireceğini bildirmek yerine.

    
verilen cevap Travis R. 24.08.2018 01:32

Etiketlerdeki diğer soruları oku