Apakah ada cara untuk memilih paket ceri dari repositori ppa yang Anda tambahkan? Artinya, untuk mengecualikan beberapa dari pembaruan sambil memasukkan yang lain?
Sebagai contoh, saya hanya ingin paket browser-khrom dari repositori ini tetapi tidak yang lain. Jadi saya tidak ingin saya sudo apt-get upgrade
menginstal paket ppa yang lain (selain chromium-browser) dari yang sudah ada, hanya saja.
Saya menyadari ini adalah lisensi untuk menembak diri sendiri jika saya salah membaca dependensi dan mengecualikan yang diperlukan untuk yang saya sertakan, tapi saya tahu dalam hal ini bahwa paket lain bukan dependensi untuk yang itu.
Apakah ini mungkin? Mungkin ada beberapa file daftar putih / daftar hitam atau sesuatu?
Jawaban:
Menemukan satu cara untuk melakukannya.
Caranya adalah menggunakan dua klausa menjepit. Yang pertama untuk melarang SEMUA paket dari PPA dan yang kedua untuk memilih yang Anda inginkan.
Jadi untuk contoh di atas, saya pertama-tama menambahkan ppa seperti biasa:
Sekarang jika saya menjalankan kebijakan apt-cache, itu akan menunjukkan kepada saya bahwa ada versi yang lebih baru dari browser kromium yang tersedia dan akan diinstal dengan pemutakhiran karena berada dalam prioritas yang sama (500) dengan browser kromium saya saat ini.
Itu bagus sejauh paket itu tetapi saya tidak ingin yang lain di ppa ini (yang juga memiliki prioritas 500) untuk menginstal. Saat ini jika saya mencoba untuk memutakhirkan, saya akan mendapatkan lebih dari sekadar paket kromium yang saya inginkan dari repositori itu:
Jadi yang bisa saya lakukan adalah mengatakan bahwa saya ingin semua paket dalam ppa itu, pratinjau webapps dalam hal ini, memiliki prioritas yang lebih rendah kecuali yang memiliki "chromium" dalam namanya. Mekanisme untuk ini adalah menyematkan paket
Saya membuat file di /etc/apt/preferences.d/ dengan dua klausa. Yang pertama mengatakan memberikan semua paket di papp-preview webapps prioritas yang lebih rendah daripada yang biasa (sehingga mereka tidak disukai bahkan jika mereka memiliki nomor versi yang lebih tinggi. Klausa kedua sebagian menimpa yang pertama dengan mengatakan memberi paket di bahwa ppa dengan "chromium" dalam nama mereka prioritas yang sama dengan paket lain sehingga itu akan diinstal (dengan itu memiliki nomor versi yang lebih tinggi).
Untuk mengidentifikasi string yang benar untuk opsi "Pin: release" kita dapat menggunakan kebijakan apt-cache lagi.
Untuk versi apt <0.8.14 paket yang disematkan harus ditentukan secara eksplisit karena wildcard tidak berfungsi:
Dan sekarang, ketika saya mencoba untuk meng-upgrade saya hanya mendapatkan paket yang saya inginkan dari ppa itu dan bukan yang lain. Semua cherry memilih dengan baik untuk saya:
sumber
Anda juga dapat memilih rilis yang ingin Anda instal dengan
?origin
pemilih:Jadi, dalam kasus spesifik Anda, Anda dapat menggunakan:
Atau Anda dapat menentukan versi menggunakan
<packagename>=<version>
:sumber
Anda sebenarnya dapat "memilih cherry" paket tertentu melalui Synaptic dan itu sangat mudah. Ini berfungsi seperti ini:
Jika Anda ingin melakukan itu hanya untuk PPA tertentu, pilih "Asal" (sudut kiri bawah) di jendela Synaptic dan kemudian pilih PPA yang ingin Anda ubah
pilih semua paket yang tidak ingin Anda tingkatkan lagi secara otomatis.
pilih menu "Paket / Versi Kunci". Semua paket yang Anda pilih tidak akan ditingkatkan secara otomatis lagi sampai Anda membuka kunci lagi.
sumber