Karena bug # 693758 saya ingin mencegah apt-get upgrade
dan Memperbarui Manajer dari memperbarui paket "libgtk2.0-0".
Bagaimana ini bisa dicapai?
disable packages from the auto-update
Karena bug # 693758 saya ingin mencegah apt-get upgrade
dan Memperbarui Manajer dari memperbarui paket "libgtk2.0-0".
Bagaimana ini bisa dicapai?
disable packages from the auto-update
Jawaban:
Ada empat cara untuk menahan paket: dengan dpkg, apt, aptitude atau dselect.
Tunda paket:
echo "<package-name> hold" | sudo dpkg --set-selections
Hapus penangguhan:
echo "<package-name> install" | sudo dpkg --set-selections
Tampilkan status paket Anda:
dpkg --get-selections
Menampilkan status satu paket:
dpkg --get-selections | grep "<package-name>"
Pegang paket:
sudo apt-mark hold <package-name>
Hapus penangguhan:
sudo apt-mark unhold <package-name>
Tampilkan semua paket yang ditahan:
sudo apt-mark showhold
Dengan dselect, masuk ke layar pilihan [S], cari paket yang ingin Anda pegang dalam keadaan saat ini dan tekan =atau H. Perubahan akan segera berlaku setelah keluar dari layar pilihan [S].
Pendekatan berikut terbatas karena mengunci / menahan paket dalam aptitude atau sinaptik tidak memengaruhi apt-get / apt.
Pegang paket:
sudo aptitude hold <package-name>
Hapus penangguhan:
sudo aptitude unhold <package-name>
Pergi ke Synaptic Package Manager (Sistem> Administrasi> Synaptic Package Manager).
Klik tombol pencarian dan ketikkan nama paket.
Ketika Anda menemukan paket, pilih dan pergi ke menu Paket dan pilih Versi Kunci .
Paket itu sekarang tidak akan ditampilkan di manajer pembaruan dan tidak akan diperbarui.
devscripts
, banyak paket ditarik sebagai paket yang direkomendasikan. Karena saya tidak memerlukan mailserver (postfix), saya dapat menonaktifkan instalasi dengan menjalankan echo postfix hold | sudo dpkg --set-selections
sebelum menjalankan sudo apt-get install devscripts
. Tindakan penahanan ini hanya berlangsung untuk instalasi ini, setelah instalasi pilihannya diatur ulang.
apt-mark
tidak mendukung hold
dalam versi 0.7.25 (Ubuntu Lucid)
apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev
,.
Untuk menunda paket "foo":
echo "foo hold" | dpkg --set-selections
Dalam kasus Anda, kami akan menahan anggur:
sudo -i
echo "wine hold" | dpkg --set-selections
Untuk menghapus penangguhan:
sudo -i
echo "wine install" | dpkg --set-selections
apt-get install wine=1.2.3
. Sedang ditahan mencegahnya apt-get (dist-)upgrade
mengubahnya.
/var/cache/apt/archives
) tidak tergantung pada penangguhan & pemutakhiran & hal-hal lain, sehingga semua versi yang Anda unduh akan ada di sana sampai Anda menjalankanapt-get [auto]clean
Saya mencari hal yang sama dan setelah banyak penelitian saya menemukan bahwa menggunakan sintaks berikut Anda dapat melarang satu versi tertentu tetapi mengizinkan pembaruan berikutnya:
Paket: compiz-plugins-main Pin: versi 1: 0.9.7.0 ~ bzr19-0ubuntu10.1 Prioritas Pin: -1
Ini masuk ke file / etc / apt / preferences.
Instal synaptic
menggunakan sudo apt-get install synaptic
.
Jalankan menggunakan gksudo synaptic
dan pada kotak pencarian temukan paket yang ingin Anda kunci, yaitu:gedit
Dari menu paket pilih Versi kunci :
Dan itu saja, versi yang saat ini diinstal pada saat kunci akan tetap diinstal bahkan selama upgrade.
Mencegah paket agar tidak diinstal disebut "paket holding" dan sangat mudah dilakukan:
echo package_name hold | dpkg --set-pilihan
... di mana * package_name * adalah nama paket yang ingin Anda hindari dari instalasi.
Catatan: perintah di atas mengasumsikan hak akses root. Dengan kata lain, Anda mungkin perlu mengetik sudo su
sebelum menjalankannya.
s/sudo su/sudo -s/g
(atau sudo -i
). ( -i
akan memberikan shell login, -s
tidak akan).
Karena beberapa waktu apt-get
diganti oleh apt
, jadi misalnya saya ingin mencegah Firefox memperbarui ke versi di atas 56, karena banyak tambahan, seperti "Grup Tab" tidak berfungsi lagi dengan Firefox 57 yang baru (lihat "WebExtensions Memperbarui").
Dimungkinkan untuk menyimpan lebih dari satu paket dengan satu perintah dan menggunakan wildcard.
sudo apt-mark hold firefox firefox-locale-*
Jika Anda memutuskan untuk tidak memegangnya nanti, itu akan menjadi perintah:
sudo apt-mark unhold firefox firefox-locale-*
Saya synaptic Anda dapat membekukan versi paket tertentu. Saya tidak 100% yakin apakah ini akan mengubah apt-get tetapi pasti akan menghentikan pembaruan manajer.
Untuk membekukan suatu paket pilih dalam sinaptik kemudian buka menu paket dan pilih versi beku.
Semoga ini membantu
sunting: Pertanyaan ini 16668 berkaitan dengan situasi yang serupa
Segala sesuatu yang Anda ingin tahu tentang paket "holding" dan "pinning" ke versi tertentu: https://help.ubuntu.com/community/PinningHowto
Lihat bug # 75332 , # 158981 dan # 72806 .
Ringkasannya adalah bahwa penahanan pada tingkat apt-get / aptitude tidak memicu status penahanan dalam dpkg (terutama lihat bug 72806) dan pembaruan-manajer membaca status dari dpkg.
solusi dijalankan sebagai root:
echo "package hold" | dpkg --set-selections
Anda dapat menggunakan aptitude pada "penggantian spesifik", seperti ini:
aptitude reinstall ~i oracle-java8-jre:
Ini adalah penggunaan hanya sekali (tidak disimpan untuk menginstal ulang masa depan), tetap menimpa spesifik, untuk menginstal ulang semua paket di sistem Anda tetapi tidak oracle-java8-jre.
Jika Anda menggunakan keep override khusus, paket tersebut akan dalam keadaan sementara tidak akan mencoba menginstalnya.
Suatu hal yang sangat baik jika Anda berpikir sistem Anda dikompromikan.
Jika Anda telah menginstal Synaptic, Anda dapat memilih paket dan menggunakan menu Package -> Lock Version untuk mencegahnya diperbarui.
Anda dapat menginstal Synaptic dengan sudo apt-get install synaptic. Saya pribadi merasa lebih berguna daripada Pusat Perangkat Lunak ... sekali lagi, saya sudah cukup tua. :)
Kadang-kadang orang mungkin ingin menahan semua paket yang diinstal saat ini. Begini caranya.
Pertama-tama simpan kondisi saat ini, sehingga Anda dapat membatalkan:
dpkg --get-selections > current_selections.txt
Kemudian, untuk menahan semua paket:
dpkg --get-selections | sed -r "s/\tinstall/hold/" |dpkg --set-selections
Akhirnya, ketika Anda ingin kembali ke keadaan sebelumnya:
dpkg --set-selections < current_selections.txt
Satu kasus penggunaan untuk ini mungkin ketika membuat snapshot VM atau Amazon AMI untuk bermigrasi dari QA ke lingkungan produksi.
Menambahkan rincian ke komentar @ soger relatif terhadap Ubuntu 16.04.
Ubuntu 16.04 tidak memiliki file / etc / apt / preferensi yang ada secara default. Jika Anda belum memilikinya, buat saja file baru dan isi dengan bait seperti yang dijelaskan oleh @soger di atas untuk mengecualikan paket yang diberikan dan ketergantungannya dari pembaruan.
Setelah itu, jalankan apt update
dan Anda GTG. : 0)
Sebagai contoh, saya memiliki server Ubuntu 16.04.5 LTS dengan kartu video Intel yang tertanam dan kartu NVidia. Kartu NVidia adalah satu-satunya yang digunakan. Server juga menggunakan driver CUDA. Saya punya masalah di mana apt
terus bersikeras
v-driver-semua
(Driver Intel) memerlukan pembaruan, tetapi tidak dapat menentukan versi mana yang akan diinstal. Ini membuat saya gila, dan saya tidak membutuhkan driver Intel. Saya memasukkan teks ini ke file preferensi dan flushed apt, masalah terpecahkan.
Package: va-driver-all
Pin: release *
Pin-Priority: -1