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 karena aptitude
tidak dapat menangani dependensi yang saling bertentangan dalam paket multiarch (itulah masalahnya tentang bug), dan perilaku default ppa-purge
untuk digunakan adalah aptitude
menurunkan versi paket.
Untungnya, ppa-purge
menerima -i
bendera yang menyebabkan ia lebih memilih apt-get
untuk aptitude
sebagai backend. Seperti yang didokumentasikan dalam laporan bug, menggunakan apt-get
adalah alternatif yang efektif untuk memohon secara manual aptitude
, jadi menjalankan ppa-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:
sudo ppa-purge -i ppa:ppaowner/ppaname
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 adalah ppa
.
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:
sudo ppa-purge -i ppa:hydr0g3n/qbittorrent-unstable
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 menjalankan ppa-purge -h
(atau hanya ppa-purge
tanpa argumen):
ek@Del:~$ ppa-purge -h
Usage: sudo ppa-purge [options] <ppa:ppaowner>[/ppaname]
ppa-purge will reset all packages from a PPA to the standard
versions released for your distribution.
Options:
-p [ppaname] PPA name to be disabled (default: ppa)
-s [host] Repository server (default: ppa.launchpad.net)
-d [distribution] Override the default distribution choice.
-y Pass -y --force-yes to apt-get or -y to aptitude
-i Reverse preference of apt-get upon aptitude.
-h Display this help text
Example usage commands:
sudo ppa-purge xorg-edgers
will remove https://launchpad.net/~xorg-edgers/+archive/ppa
sudo ppa-purge -p xorg-testing sarvatt
will remove https://launchpad.net/~sarvatt/+archive/xorg-testing
sudo ppa-purge ppa:ubuntu-x-swat/x-updates
will remove https://launchpad.net/~ubuntu-x-swat/+archive/x-updates
Notice: If ppa-purge fails for some reason and you wish to try again,
(For example: you left synaptic open while attempting to run it) simply
uncomment the PPA from your sources, run apt-get update and try again.
"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 memilih aptitude
untuk apt-get
, dan -i
bendera membalikkan preferensi ini.