Mengatasi aptitudeBug Multiarch untukppa-purge
Biasanya, sebagai Vadim Rutkovsky dan Takkat telah menjelaskan , berjalan ppa-purgedengan 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-purgebekerja dengan benar untuk menghapus paket multiarch (seperti paket 32-bit yang diinstal pada sistem 64-bit). Ini karena aptitudetidak dapat menangani dependensi yang saling bertentangan dalam paket multiarch (itulah masalahnya tentang bug), dan perilaku default ppa-purgeuntuk digunakan adalah aptitudemenurunkan versi paket.
Untungnya, ppa-purgemenerima -ibendera yang menyebabkan ia lebih memilih apt-getuntuk aptitudesebagai backend. Seperti yang didokumentasikan dalam laporan bug, menggunakan apt-getadalah alternatif yang efektif untuk memohon secara manual aptitude, jadi menjalankan ppa-purgedengan -iflag 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 -ibendera tidak digunakan):
ppaowner diganti dengan pemilik PPA.
/ppanameadalah opsional. Jika ada, ppanamediganti 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-getbelakang 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-purgetidak didokumentasikan di halaman manualnya , termasuk -i. Tetapi Anda bisa mendapatkan informasi tentang mereka dengan menjalankan ppa-purge -h(atau hanya ppa-purgetanpa 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-purgehanya shell script, setelah semua), kita dapat melihat bahwa ini berarti bahwa perilaku default adalah untuk lebih memilih aptitudeuntuk apt-get, dan -ibendera membalikkan preferensi ini.