Saya menginstal Carpadio pada instal Xubuntu saya (Live USB), yang kemudian menarik lebih dari 50 paket dari, saya kira, sisi Ubuntu dari repositori. Sekarang saya ingin membatalkan ini. Namun untuk semua perburuan saya, saya tidak dapat menemukan sesuatu yang lebih berguna daripada Bagaimana saya bisa membalikkan sudo untuk mendapatkan perintah install , yang hanya menyarankan apt-get purge
. Ini tidak berguna karena yang dilakukannya hanyalah menghapus 2 paket (carpadio dan carpadio-gnomepanel).
/var/log/apt/history.log
memiliki daftar semua paket yang diinstal bersama dengan perintah itu. Jadi saya bertanya-tanya apakah ada cara mudah untuk menghapus semuanya ? Kalau tidak, saya bisa menginstal ulang, ini adalah instalasi yang baru, tetapi saya ingin tahu.
Sampel kecil dari log riwayat (1 / 5-1 / 10 dari seluruh daftar)
Commandline: apt-get install cardapio-gnomepanel
Instal: libdbusmenu-qt2: amd64 (0.9.2-0ubuntu1, otomatis), python-packagekit: amd64 (0.7.2-4ubuntu3, otomatis), cups-pk-helper: amd64 (0.2.1.2-1ubuntu0.1, otomatis) , geoclue: amd64 (0.12.0-1ubuntu12, otomatis), unity: amd64 (5.18.0-0ubuntu1, otomatis), indikator-printer: amd64 (0.1.6-0ubuntu1, otomatis), libevolution: amd64 (3.2.3- 0ubuntu6, otomatis), libqt4-declarative: amd64 (4.8.1-0ubuntu4.3, otomatis), libmtp9: amd64 (1.1.3-1ubuntu0.1, otomatis), tracker-miner-fs: amd64 (0.14.0-2ubuntu1 , otomatis), gir1.2-rb-3.0: amd64 (2.96-0ubuntu4.2, otomatis), python-aptdaemon.pkcompat: amd64 (0.43 + bzr805-0ubuntu7, otomatis), gnome-media: amd64 (3.4.0- 0ubuntu3.1, otomatis), metacity: amd64 (2.34.1-1ubuntu11, otomatis), nautilus: amd64 (3.4.2-0ubuntu6, otomatis), libcompizconfig0: amd64 (0.9.7.0 ~ bzr428-0ubuntu6, otomatis), compiz- plugin-default:amd64 (0.9.7.12-0ubuntu1, otomatis), libunistring0: amd64 (0.9.3-5, otomatis), libebackend-1.2-1: amd64 (3.2.3-0ubuntu7, otomatis), ubuntu-docs: amd64 (12.04.6 , otomatis), python-mako: amd64 (0.5.0-1, otomatis),
Untuk semua yang telah menyarankan autoremove
: Saya tidak yakin mengapa, tapi saya hanya punya 1 paket terkait python lainnya (python-keybinder atau sesuatu) sebagai "tidak perlu" dan hanya itu yang bisa dihapus oleh autoremove.
Antara menginstal dan menghapus instalan, hanya perubahan besar yang menginstal xubuntu-restricted-extras
.
sudo apt-get install -s package
mana-s
menunjukkan simulasi danpackage
akan diganti dengan nama perangkat lunak yang sesuai.cardapio-gnomepanel
paket itu?apt-get remove carpadio
bawa yang itu juga.autoremove
tidak bekerja untuk Anda. Entah Anda entah bagaimana menandai semua paket sebagai diinstal secara manual sekarang atau ada kesalahpahaman. Ini sangat sederhana:apt-get autoremove
hanya menghapus semua paket bertanda yang diinstal secara otomatis tanpa alasan untuk memilikinya sekarang. Jika itu tidak berhasil untuk Anda, saya pikir Anda telah mengubah sesuatu pada sistem Anda yang tidak Anda ceritakan dalam pertanyaan Anda.Jawaban:
Pada dasarnya, Anda harus
apt-get remove
(atau apt-get purge) paket dan menjalankannyaapt-get autoremove
setelah itu, untuk mengembalikan instalasipackage-one
.Mari kita lihat keseluruhan proses:
sudo apt-get install package-one
menginstal 50 dependensi dengan itu ditandai "otomatis" seperti juga dapat dilihat dari kutipan log dalam pertanyaan Andasudo apt-get purge package-one
menghilangkan (pembersihan) hanya satu, tapi melakukan menjalankan ini!Semua tindakan pemasangan berikut (jika Anda menjalankannya) akan menghasilkan pesan informasi dengan paket tidak lagi diperlukan:
Daftar ini pada dasarnya hanya daftar semua paket yang ditandai sebagai "otomatis" tanpa ketergantungan terbalik pada mereka. Dengan kata lain, tidak ada alasan bagi mereka untuk menginstal sejauh menyangkut manajemen paket.
Catatan: Tidak diperlukan instalasi! Hanya untuk menunjukkan bahwa APT cerdas untuk memberi tahu Anda tentang paket-paket yang tidak dibutuhkan!
sudo apt-get autoremove --purge
menghapus (membersihkan) iniInformasi lebih lanjut
Dokumentasi resmi tentang
autoremove
dariapt-get(8)
manual:Apa cara yang benar untuk menghapus aplikasi sepenuhnya?
sumber
autoremove
.autoremove
tidak membantu.sudo apt-get update
cukup?Ketika Anda ingin menghapus paket dan dependensinya yang diinstal pada saat itu, Anda harus menggunakan:
tetapi untuk membatalkan
apt
tindakan, Anda dapat menggunakanapt-undo
skrip. Ini adalah skrip sederhana yang dapat membatalkanapt
tindakan yang dilakukan di Ubuntu. Perlu dicatat bahwa skrip ini hanya dapat berfungsi jika Anda menggunakannya alih-alihapt-get
menginstal / memutakhirkan / menghapus / membersihkan / menurunkan versi paket Anda.Untuk menginstal
apt-undo
di Ubuntu, jalankan perintah berikut di terminal:pemakaian:
Untuk membatalkan,
aptitude
tindakan di atas menjalankan perintah berikut di terminal:sumber
Gunakan kekuatan Unix. Ambil baris file log yang Anda miliki, dan buat perintah yang akan membatalkan apa yang telah dilakukan apt. Sebagai contoh:
Jadi Anda dapat menggunakan pembersihan ini semua paket yang Anda instal secara tidak sengaja, diberi baris yang sesuai dari file log Anda:
(Saya telah menggunakan
perl
alih-alihsed
karenased
menggunakan jenis ekspresi reguler yang tidak mendukung kecocokan yang tidak serakah, yang merupakan cara termudah untuk membangun apa yang saya butuhkan)sumber
apt
log ke file baru dan kemudian menerapkan ini padanya:perl -pe 's/\(.*?\)(, )?//g' /path/to/apt-history.log
Kemudian semua yang saya lakukan adalah menambahkan output dengansudo apt-get remove
dan saya baik untuk pergi!Setelah Anda menghapus satu paket, dan Anda dapat menghapusnya secara menyeluruh dengan menambahkan purge, untuk,
apt-get remove --purge <package>
, harus memberikan pesan bahwa paket perpustakaan itu menariknya di dipasang secara otomatis dan tidak lagi diperlukan, pada saat mana Anda dapat menjalankanapt-get autoremove
ke Hapus mereka.sumber
Ikuti
sudo apt-get purge packagename
denganKecuali metapackage ini harus diurus.
Lihat juga faq di Bagaimana cara saya menghapus semua file Cardapio secara manual ? .
sumber
new_file.txt
perl -pe 's/\(.*?\)(, )?//g' /path/to/new_file.txt
sudo apt-get remove
[rekatkan isi clipboard di sini]Selesai.
Pada dasarnya kita perlu memformat daftar paket dari apt log menjadi sesuatu yang bisa dipahami oleh apt-get. Tanda kurung, kata-kata di antara, dan koma harus pergi sehingga di situlah perl datang untuk bermain. Ya, ada cara yang lebih baik (lebih efisien) - tapi saya sudah melakukan ini, mudah dimengerti, dan itu berhasil.
sumber
Untuk membatalkan instalasi terakhir, Anda juga dapat menggunakan sesuatu seperti ini:
Ini akan menangkap instal terakhir dari sejarah dan membersihkan semua paket yang diinstal di sini.
Anda dapat membuat fungsi yang disebut aptpurgelastinstall agar selalu ada (akan menambahkan kode ke ~ / .bashrc):
Sekarang Anda hanya perlu mengetikkan aptpurgelastinstall di shell untuk mengulang instalasi terakhir.
sumber
Jika Anda baru saja menambahkan ppa dan ingin mengembalikan, Anda perlu melakukan langkah-langkah yang dijelaskan di bawah ini. Memahami ini bisa gagal, ketika Anda telah menginstal paket lain yang tidak ingin Anda hapus. Saya yakin ini bisa dilakukan dengan skrip. Secara pribadi saya pikir ini harus menjadi bagian dari apt, dan harus ada administrasi yang lebih baik dari paket mana yang diinstal karena dependensi dan yang diinstal berdasarkan permintaan pengguna.
1) menghapus ppa dari /etc/apt/sources.list Ingat saat Anda menambahkan ppa. Jika Anda beruntung, Anda tidak perlu tepat.
2) buat daftar apa yang harus diinstal ulang, dari saat Anda menginstal PPA: cat /var/log/dpkg.log | grep 'upgrade'
3) buat daftar apa yang harus dihapus, dari saat Anda menginstal PPA: cat /var/log/dpkg.log | grep 'instal'
4) hapus semua paket dari langkah 3: sudo apt-get remove {daftar paket dari langkah 3}
5) instal ulang semua paket dari langkah 2: sudo apt-get install --reinstall {daftar paket dari langkah 2}
6) Jika ada yang salah dan Anda tidak dapat menemukan solusi, masukkan kembali PPA dan instal ulang semua paket dari dua daftar.
sumber
Saya tahu ini pertanyaan yang cukup lama tapi saya datang ke sini mencari bantuan dan mungkin saya bisa membantu seseorang. Saya memiliki situasi yang mirip dengan @ Karthik-T setelah menginstal
unity8-desktop-session-mir
. Saya tahu ini yang besar. Itu menarik 233 paket dengannya.Menggunakan
autoremove
saya bisa dihapus hanya 34 dari mereka. Intinya adalah bahwa selamaunity8-desktop-session-mir
instalasi, ia menghapus dua paket (python3-aptdaemon.pkcompat
danevolution-data-server-online-accounts
). Itu dinyatakan dalam/var/log/apt/history.log
, setelahInstall
bagian.Untuk benar-benar membatalkan instalasi Unity 8 saya mengeluarkan yang berikut:
sudo apt-get purge unity8-desktop-session-mir
sudo apt-get --purge autoremove
sudo apt-get install python3-aptdaemon.pkcompat evolution-data-server-online-accounts
(Itu menghapus 8 paket yang terkait dengan Unity 8)sudo apt-get --purge autoremove
Ini tidak akan menghapus sepenuhnya semua yang Anda instal sebelumnya, tetapi dalam beberapa kasus cukup baik.
PS: mungkin
autoremove
pada langkah dua tidak perlu, karena saya dikeluarkan lagi pada langkah empat.sumber
Secara teknis "menghapus" atau "autoremove" operasi tidak "dibatalkan" meskipun mereka dapat dibuat untuk melakukan pekerjaan dengan cukup baik sebagian besar kali.
Secara default, apt-get akan meninggalkan paket, kecuali Anda tentukan
-o APT::Suggests-Important=0 -o APT::Recommends-Important=0
Lebih dapat diandalkan untuk melihat apt
history.log
dan menghapus semua paket yang diinstal. Saya telah membuat skrip berbasis simpul kecil untuk memudahkan proses:https://github.com/rolfen/apt-history
Juga, berikut ini adalah pendekatan lain yang lebih manual untuk perubahan "memutar kembali":
https://unix.stackexchange.com/a/236711
sumber