Untuk peningkatan yang lancar dari 10,04 menjadi 10,10, saya ingin menghapus semua paket yang tidak dalam repositori default (mis. Kromium PPA dan repositori pihak ketiga). Apa cara termudah (lebih disukai CLI) untuk menemukan dan menghapus paket-paket ini?
Sunting: pertanyaan ini tidak terbatas pada PPA, saya punya repositori x2go juga, jadi saya mencari perintah generik untuk menghapus paket milik repositori tertentu. Untuk PPA, pertanyaan Bagaimana menghapus PPA memiliki jawaban yang bagus.
package-management
Lekensteyn
sumber
sumber
Jawaban:
Skrip ini dapat mencantumkan semua paket dari server / cabang tertentu (memodifikasi dua variabel yang dideklarasikan):
jika Anda perlu mendaftar semua paket yang tidak berasal dari server tertentu, terlepas dari cabang, ganti baris berikutnya-ke-terakhir dengan:
sumber
$2 == server && $3 == branch
dengan$2 != server
, pertanyaan saya dijawab. Harap cantumkan dalam jawaban Anda :) (branch=
baris dapat dihapus) Catatan: diasumsikan bahwa semua paket berasal dari satu server repositori.libvpx0
paket ada di kedua repo utama seperti dalam PPA kromium-hari. Setelah mengeluarkan repositori dari/etc/apt/sources.list.d
, saya punya masih paket kiri-atas:libvpx0
. Aku "diperbaiki" ini sebagai berikut: menghapus perpustakaan dengan dpkg, mengabaikan dependensi:sudo dpkg --ignore-depends=libvpx0 --remove libvpx0
. Berikutnya, menginstal lagi dari repo utama:sudo apt-get install libvpx0
.sudo apt-get install libvpx0=$version_string
, seandainya dua paket yang tersedia memiliki string versi yang berbeda.apt-cache policy $(dpkg -l | awk '/^ii/{print $2}') > policy.txt; awk '!/^ /{pkg=$1}check{print pkg, $2;check=0}/\*\*\*/{check=1} ' policy.txt | grep -v archive.ubuntu
adalah awal yang baik (tambahkan lebih banyakgrep -v
untuk mengecualikan PPA tertentu). Versi paket yang tidak dikenal dalam repo apa pun muncul sebagai/var/lib/dpkg/status
.Lihat pembersihan ppa .
Pemakaian:
Hostserver default untuk
ppa.launchpad.net
.Berikut ini tautan ke halaman manual untuk
ppa-purge
perintah untuk referensi.sumber
Mengatasi
aptitude
Bug Multiarch untukppa-purge
Biasanya, sebagai Vadim Rutkovsky dan Takkat telah menjelaskan , berjalan
ppa-purge
dengan sintaks default adalah cara yang efektif untuk menghilangkan semua paket yang disediakan oleh PPA, benar merendahkan mereka untuk versi yang disediakan dalam sumber-sumber perangkat lunak lain dikonfigurasi bila memungkinkan.Namun, seperti yang ditunjukkan Takkat, bug 831768 mencegah
ppa-purge
bekerja dengan benar untuk menghapus paket multiarch (seperti paket 32-bit yang diinstal pada sistem 64-bit). Ini karenaaptitude
tidak dapat menangani dependensi yang saling bertentangan dalam paket multiarch (itulah masalahnya tentang bug), dan perilaku defaultppa-purge
untuk digunakan adalahaptitude
menurunkan versi paket.Untungnya,
ppa-purge
menerima-i
bendera yang menyebabkan ia lebih memilihapt-get
untukaptitude
sebagai backend. Seperti yang didokumentasikan dalam laporan bug, menggunakanapt-get
adalah alternatif yang efektif untuk memohon secara manualaptitude
, jadi menjalankanppa-purge
dengan-i
flag harus menjadi solusi yang efektif untuk menghapus / menurunkan semua paket yang disediakan oleh PPA, termasuk paket multiarch .Bagaimana cara melakukannya
Inilah sintaksinya:
Seperti biasa (sama seperti saat
-i
bendera tidak digunakan):ppaowner
diganti dengan pemilik PPA./ppaname
adalah opsional. Jika ada,ppaname
diganti dengan nama PPA. Jika tidak, defaultnya adalahppa
.Sebagai contoh , misalkan saya memiliki PPA untuk build tidak stabil dari qBittorrent yang diinstal, dan saya ingin menghapusnya sepenuhnya, secara otomatis menurunkan versi qBittorrent ke versi apa pun yang tersedia melalui sumber perangkat lunak saya yang lain menggunakan di
apt-get
belakang layar alih-alihaptitude
. Maka saya akan lari:Di mana itu didokumentasikan
Untuk beberapa alasan, beberapa opsi berguna untuk
ppa-purge
tidak didokumentasikan di halaman manualnya , termasuk-i
. Tetapi Anda bisa mendapatkan informasi tentang mereka dengan menjalankanppa-purge -h
(atau hanyappa-purge
tanpa argumen):"Membalikkan preferensi apt-get upon aptitude" agak samar. Dengan melihat potongan yang relevan dari kode sumber (
ppa-purge
hanya shell script, setelah semua), kita dapat melihat bahwa ini berarti bahwa perilaku default adalah untuk lebih memilihaptitude
untukapt-get
, dan-i
bendera membalikkan preferensi ini.sumber
ppa-purge
akan menghapus atau menurunkan paket yang tidak lagi disediakan oleh PPA yang "dihapus." Namun, Anda mungkin ingin memposting pertanyaan terpisah tentang ini, untuk mendapatkan jawaban yang lebih otoritatif atau terdokumentasi dengan baik.ppa:username/path
. PPA juga harus DIAKTIFKAN sebelum Anda mencoba membersihkannya, meskipun skrip segera dinonaktifkan setelah memperbarui daftar paket yang akan dihapus, itu tidak akan "menemukan" PPA yang sudah dinonaktifkan.aptitude search ~o
untuk menemukan paket-paket yatim tanpa sumber instalasi jika Anda perlu membersihkan sesuatu yang dihapus dari PPA (atau diinstal sebagai yang salah melaluidpkg -i
).Berikut adalah cara GUI untuk melakukannya. Semoga ini bisa membantu bagi mereka yang tidak suka CLI. Langkah-langkahnya sederhana dan mudah diikuti.
Buka pengelola paket sinaptik . Jika tidak diinstal maka instal dengan:
Ketika dibuka klik pada tombol Asal di kiri bawah. Ini akan mencantumkan semua repositori di sisi kiri atas. Pilih repositori tertentu untuk menghapus paket mana. Ini akan mencantumkan semua paket di dalam repositori itu. Klik bidang pertama bidang I, e S atau Versi Terpasang untuk menampilkan paket yang diinstal terlebih dahulu.
Sekarang pilih semua paket untuk dihapus.
Kiat untuk dihapus:
Pilih paket pertama lalu tahan Shifttombol dan pilih lagi paket terakhir untuk memilih semua. Kemudian klik kanan pada kotak persegi dan pilih tanda untuk dihapus atau tanda untuk penghapusan lengkap .
atau Pilih paket apa saja dan tekan Ctrl+ Auntuk memilih semua. Kemudian klik kanan pada kotak persegi dan pilih tanda untuk dihapus atau tanda untuk penghapusan lengkap.
Itu dia. Itu akan dihapus tanpa masalah. Saya juga melampirkan gambar untuk membuatnya lebih jelas. Semoga ini bisa membantu. :)
sumber
Untuk setidaknya menemukannya, mulai dengan menonaktifkan PPA dan jalankan
apt-get update
. Kemudian instalapt-show-versions
. Menjalankanapt-show-versions | grep 'No available'
kemudian akan memberi Anda daftar semua paket yang diinstal yang tidak dapat ditemukan di repositori yang dikonfigurasi. Dengan sihir baris perintah, Anda mungkin dapat menghapus hanya nama paket dan meneruskannya keapt-get remove
:Perhatikan bahwa ini akan melalui daftar yang dikembalikan dari
apt-show-versions
dan menghapusnya satu per satu. Bergantung pada apa yang ditemukannya, ini bisa menghapus sesuatu yang tidak diinginkan karena ketergantungan, jadi periksa dulu.sumber
libvpx0
paket dari PPA harian kromium. Jawaban @ enzotib memang menunjukkan paket ini.apt-show-versions
sebagai non-root, itu perlusudo apt-show-versions -i
memperbarui cache itu dan melihat perubahan dari repositori / PPA yang baru dihapus (jika tidak, itu hanya diperbarui melalui pekerjaan cron.daily)Saya menemukan penggunaan ppa-purge menjadi sulit.
Buka Synaptic Package Manager di bawah System, lalu pilih Pengaturan, Repositori.
Hapus yang tidak Anda inginkan.
Selesai!
sumber