Pertanyaan Apa cara yang benar untuk menghapus aplikasi sepenuhnya?


Saya telah mencari di internet untuk informasi tersebut dan menemukan baris perintah yang berbeda, seperti yang ini:

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*

Jadi, bagaimana cara yang benar? Apakah perlu menggunakan "*" itu?

Setelah itu, saya juga menemukan perintah-perintah ini:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)

478
2017-09-14 21:54


asal


Beberapa pertanyaan Anda mungkin dijawab dalam posting ini: askubuntu.com/questions/1143/how-can-i-uninstall-software - Glutanimate
application* kadang-kadang dapat memberikan hasil yang tidak diharapkan - misalnya, jika Anda memiliki file di direktori saat ini bernama application_information, shell akan memperluasnya sebelum diteruskan ke apt-get. Jika ini terjadi dan Anda menginginkan tanda bintang harfiah, Anda dapat menggunakannya application\* atau 'application*' - Izkata
application* bahkan lebih berbahaya ketika tidak ada file di direktori saat ini: apt-get menggunakan ekspresi reguler, tanpa pola glob. Orang-orang hampir menghapus seluruh sistem yang berusaha dihapus wine*. - Andrea Corbellini
Bisakah kamu menerima jawaban? Untuk berterima kasih kepada orang-orang yang menjawab Anda. - m-ric
Bukan keduanya application* maupun application\* aman! Mengutip * dengan \ atau '  ' hanya meningkat resiko, memastikan * dilewatkan apa adanya apt-get (meskipun biasanya demikian!), penyebab apt-get untuk menafsirkan argumen sebagai regex. Dalam regex * berarti "nol atau lebih dari karakter sebelumnya." Bentuk umum dari kesalahan ini adalah menghapus instalan wine*, hapus semua paket dengan win (tidak wine, win) di mana saja dalam nama-nama mereka dan semua paket tergantung pada salah satu dari mereka. Lihat penjelasan ini dan perbaikan mungkin. @Izkata - Eliah Kagan


Jawaban:


  • apt-get remove packagename

    akan menghapus binari, tetapi tidak konfigurasi atau file data dari paket packagename. Ini juga akan membiarkan ketergantungan yang terinstal pada saat instalasi tidak tersentuh.

  • apt-get purge packagename atau apt-get remove --purge packagename

    akan menghapus segala sesuatu mengenai paket packagename, tetapi tidak dependensi yang diinstal dengannya pada instalasi. Kedua perintah itu setara.

    Sangat berguna ketika Anda ingin 'memulai semua' dengan aplikasi karena Anda mengacaukan konfigurasi. Namun, itu tidak menghapus konfigurasi atau file data yang berada di direktori home pengguna, biasanya di folder tersembunyi di sana. Tidak ada cara mudah untuk menghilangkannya juga.

  • apt-get autoremove

    menghapus paket yatim piatu, yaitu paket yang diinstal yang digunakan untuk diinstal sebagai dependensi, tetapi tidak lagi. Gunakan ini setelah menghapus paket yang telah menginstal dependensi Anda tidak lagi tertarik.

  • aptitude remove packagename atau aptitude purge packagename (juga)

    juga akan mencoba untuk menghapus paket lain yang diperlukan oleh packagename tetapi tidak diwajibkan oleh paket yang tersisa. Perhatikan itu aptitude hanya mengingat informasi ketergantungan untuk paket yang telah diinstal.

Dan masih banyak lagi. Tingkat yang lebih rendah dpkg-commands dapat digunakan (lanjutan), atau alat GUI seperti Muon, Synaptic, Software Center, dll. Tidak ada 'cara yang benar' untuk menghapus aplikasi atau melakukan tugas lain yang berinteraksi dengan manajemen paket Anda.

Daftar yang Anda temukan hanyalah contoh. Pastikan Anda memahami arti dan mencoba apa yang ingin dilakukan sebelum menerima tindakan (Anda perlu menekan Y sebelum benar-benar melakukan tindakan seperti yang diusulkan).

Versi asterisk dalam pertanyaannya adalah mungkin salah; apt-get menerima ekspresi reguler dan bukan pola glob sebagai shell. Jadi apa yang terjadi dengan

sudo apt-get remove application*

adalah sebagai berikut:

  1. Shell mencoba memperluas application* melihat file di direktori saat ini. Jika (seperti biasanya halnya) tidak menemukan apa pun, ia mengembalikan pola glob tidak berubah (misalkan bash dengan perilaku default di sini --- zsh akan error keluar).

  2. apt-get akan menghapus paket yang namanya berisi string yang memenuhi ekspresi reguler application*, itu adalah, applicatio diikuti oleh angka acak n: applicatio, application, applicationn, libapplicatio, dll.

  3. Untuk melihat bagaimana hal ini bisa berbahaya, cobalah (tanpa akar untuk keamanan ganda) apt-get -s remove "wine*" (-s akan mensimulasikan hal itu bukannya melakukannya) --- itu akan mengatakan akan menghapus semua paket yang telah "menang" dalam nama mereka dan tergantung, hampir seluruh sistem ...

Mungkin, perintah yang dimaksud benar-benar

 sudo apt-get remove "^application.*"

(perhatikan tanda kutip dan titik) yang akan menghapus semua paket yang namanya dimulai application.

Perintah-perintah ini,

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.

benar-benar di luar ruang lingkup manajemen paket. Jangan hapus file milik paket tanpa menggunakan pengelola paket! Ini akan menjadi bingung dan merupakan salah cara melakukan sesuatu.

Jika Anda tidak tahu paket mana yang dimiliki file, coba ini:

dpkg -S /path/to/file

638
2017-09-14 22:04



Opsi --purge juga berguna ketika mencoba untuk menghapus semua dependensi yang tersisa termasuk file konfigurasi mereka: apt-get-autoremove --purge  Penting juga untuk dicatat bahwa file konfigurasi di direktori home Anda tidak terpengaruh oleh opsi --purge. Ini Anda harus menghapus secara manual. - Glutanimate
Ada kesalahan di sini: apt-get menerima RE, bukan glob; sehingga apt-get remove pack * akan menghapus semua paket yang dimulai dengan pac diikuti oleh nol atau lebih k ... yang biasanya tidak diharapkan. Saya mengedit anser. Lihat juga askubuntu.com/questions/210976/… - Rmano
Saya pikir jawaban ini tidak lagi akurat. Antara apt remove -s texlive* atau itu apt-get garis balik counterpart seperti Note, selecting 'texlive-font-utils' for glob 'texlive*' (menyiratkan bahwa mereka memang menerima globs), diikuti oleh yang biasa Package 'texlive-common' is not installed, so not removed, dan akhirnya Remv garis, seperti Remv texlive-font-utils [2015.20160320-1] [...]. - Jonathan Y.
@JonathanY. Anda juga akan memilih paket yang tidak diinstal. Pokoknya, bisakah Anda mengajukan pertanyaan BARU dan menguraikan sedikit lebih detail apa situasi Anda dalam pertanyaan itu. Saya akan senang melihatnya :) - gertvdijk
Saya tidak mengajukan pertanyaan baru. Saya menunjuk pada perubahan yang mungkin karena jawaban ini dibuat yang membuat beberapa detail salah. Untuk itu, akan terlihat seperti itu apt-get remove packa* memang mengambil gumpalan itu packa* alih-alih melihatnya sebagai regex: itu cocok package tapi tidak pack. - Jonathan Y.


Untuk Ubuntu 12.04 dan mungkin lebih tinggi, metode yang benar adalah:

sudo apt-get --purge autoremove packagename

Seperti yang terinci sini.

Jangan gunakan packagename* karena itu dapat menghapus paket yang tidak diinginkan dan menyebabkan lebih banyak masalah daripada memecahkannya. Atau jika Anda harus, setidaknya jalankan dengan -s, --simulate, --dry-run Tandai terlebih dahulu untuk melihat apa yang akan dilakukannya tanpa melakukannya.


92
2017-11-20 20:01



ini adalah jawaban yang benar, singkat dan ringkas: - Anwar


Anda dapat menggunakan perintah ini:

sudo apt-get purge --auto-remove packagename

Ini akan membersihkan paket yang diperlukan bersama dengan dependensi yang diinstal dengan paket-paket tersebut. Itu --auto-remove opsi (menjadi alias dari autoremove) berfungsi mirip dengan sudo apt-get autoremove. Dengan menggunakan perintah ini kita dapat menjalankan satu perintah:

sudo apt-get purge --auto-remove packagename

Dari pada:

sudo apt-get purge packagename
sudo apt-get autoremove

17
2017-09-16 20:08



Meskipun Anda benar, tetapi Anda juga bisa menggunakannya sudo apt-get --purge autoremove packagename. Perintah yang sama 1 di sini - Anwar
Dapatkah perintah lengkap juga ditulis sebagai apt-get autoremove --purge dari pada apt-get purge --auto-remove ? - felwithe
Bisakah seseorang menembak saya? - Martin Andersson


Anda dapat menggunakan dengan aman sudo apt-get remove --purge application atau sudo apt-get remove applications 99% dari waktu. Saat Anda menggunakan purge flag, itu hanya menghapus semua file konfigurasi juga. Yang mungkin atau mungkin tidak seperti yang Anda inginkan, tergantung pada apakah Anda ingin menginstal ulang aplikasi tersebut. Itu application* akan cocok dengan semua aplikasi yang dimulai dengan application, yang biasanya berupa plugin, fitur tambahan, dll dari aplikasi utama yang Anda hapus. yaitu

sudo apt-get remove gedit*

akan menghapus gedit, gedit-plugins dan gedit-common. Biasanya tidak perlu melakukan ini, karena kebanyakan plugin / program terkait bergantung pada aplikasi utama, dan secara otomatis akan dihapus (atau ditandai untuk dihapus) ketika Anda menghapus aplikasi utama.

Perintah terakhir Anda adalah hanya untuk menghapus sisa dari aplikasi yang diketahui memiliki uninstaller yang berantakan, dan itu hanya menghapus sisa-sisa dari aplikasi.


7
2017-09-14 22:05





Saya mendapat beberapa pesan kesalahan menghapus paket, satu-satunya cara saya menemukan yang berhasil adalah ini:

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

Saya menemukan bahwa meskipun hanya menggunakan

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

tidak menghapus paket itu menunjukkan kepada saya jalan yang benar ke file untuk bergerak dengan:

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

Ganti paket dengan nama aplikasi Anda. Gunakan sudo di Ubuntu, menjadi root di Debian.


5
2018-02-26 09:26





Saya menemukan perintah ini di internet.

dpkg --purge --force-depends application

http://www.debian-administration.org/article/Reinstalling_packages_to_fix_problems.


3
2017-09-14 22:10





Itu tergantung pada aplikasi yang ingin Anda hapus. Selalu pastikan untuk memeriksa dependensinya sebelum mengeluarkan perintah ya. Ketika Anda menghapus sesuatu dengan baris perintah, itu kadang-kadang akan menunjukkan beberapa perpustakaan yang tidak lagi diperlukan. Ini dapat dihapus dengan apt-get autoremove.

Berhati-hatilah bahwa dengan menggunakan perintah seperti sudo apt-get remove --purge namename dapat menghapus beberapa dependensi yang dibutuhkan oleh aplikasi lain dan, dengan demikian, dapat merusak sistem Anda.

Jika Anda ingin melakukannya dengan cara yang lebih aman, Anda selalu dapat menghapusnya hanya dengan menggunakan pusat perangkat lunak atau menghapus nama aplikasi apt-get. Jika dependensi tidak dibutuhkan lagi, keluarkan apt-get autoremove nanti.


1
2017-09-14 22:10



Saya pikir seluruh sistem paket Debian dirancang khusus untuk tidak hapus paket jika ada paket lain yang bergantung padanya. Anda mungkin (membantu) bertanya apakah Anda ingin menghapus semua paket dependen juga, dan di situlah Anda seharusnya Baca baca daftar paket yang akan dihapus, yang mana kupikir apa yang ingin kamu katakan. - Xen2050


Saya hanya ingin mengklarifikasi satu hal yang tampaknya menjadi sumber kebingungan di sini. Itu dpkgutilitas tidak tahu tentang atau melacak dependensi paket dalam hubungannya satu sama lain, yang merupakan alasan besar itu apt dikembangkan saya percaya. Anda dapat membacanya di bagian 8.6 di halaman ini FAQ Debian GNU / Linux - Alat manajemen paket Debian

  • Dengan apt: Jika saya ingin membersihkan paket A, dan itu memiliki ketergantungan disebut paket B, dan paket B tidak memiliki paket dependen lainnya, kemudian paket A dan B akan dihapus. Jika paket B DID memiliki ketergantungan lainnya paket, maka hanya paket A yang akan dihapus.

  • Dengan dpkg: Ketergantungan apa? Anda hanya mengatakan kepada saya untuk membersihkan sialan itu
    paket jadi itulah yang saya lakukan! Perencanaan yang buruk di pihak Anda tidak
    merupakan keadaan darurat di pihak saya.

Dengan demikian, berikut adalah dua satu-liners yang dapat digunakan untuk setiap metode pembersihan:

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 $2}')

Hapus --dry-run untuk melakukan operasi pembersihan sebenarnya daripada melaporkan tindakan apa yang akan dilakukan.


1
2017-08-23 23:32