Pertanyaan Bagaimana cara mencegah pembaruan paket tertentu?


Karena bug # 693758 Saya ingin mencegah apt-get upgrade dan Perbarui Manajer dari memperbarui paket "libgtk2.0-0".

Bagaimana ini bisa tercapai?


324
2017-12-23 17:29


asal


@hhlp: Tetapi pertanyaan ini menanyakan tentang paket yang tidak pernah diinstal. - Nathan Osman
@George Edison - Ada juga paket holding, yang memungkinkan Anda untuk tidak memperbarui paket. jadi Memegang paket pada dasarnya berarti Anda memberi tahu pengelola paket untuk menyimpan versi saat ini, apa pun yang terjadi. Ini berguna jika versi terbaru dari program yang sedang berjalan rusak setelah pembaruan. (Anda tidak dapat menyimpan paket yang tidak pernah diinstal juga melihat pertanyaan saya sama) .... saya menguji itu sekarang - lihat katanya disable packages from the auto-update - hhlp


Jawaban:


Holding

Ada empat cara menahan paket: dengan dpkg, apt, aptitude, atau dselect.

dpkg

Taruh paket yang ditahan:

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>"

tepat

Pegang paket:

sudo apt-mark hold <package-name>

Hapus penangguhan:

sudo apt-mark unhold <package-name>

pilih

Dengan memilih, masukkan layar pilihan [S], temukan paket yang ingin Anda pegang dalam keadaan sekarang dan tekan = atau H. Perubahan akan segera berlaku setelah keluar dari layar pilihan [S].


Pendekatan berikut terbatas dalam penguncian / memegang paket dalam aptitude atau synaptic tidak mempengaruhi apt-get / apt.

bakat

Pegang paket:

sudo aptitude hold <package-name>

Hapus penangguhan:

sudo aptitude unhold <package-name>

Mengunci dengan Pengelola Paket Synaptic

Pergi ke Synaptic Package Manager (Sistem> Administrasi> Manajer Paket Synaptic).

Klik tombol pencarian dan ketik nama paket.

Ketika Anda menemukan paketnya, pilih paket itu dan pergi ke Paket menu dan pilih Versi terkunci.

Synaptic menu

Paket itu sekarang tidak akan ditampilkan di pengelola pembaruan dan tidak akan diperbarui.


474
2017-12-23 18:04



Ini juga berfungsi untuk mencegah paket diinstal. Saat memasang devscripts, banyak dikemas ditarik sebagai paket Direkomendasikan. Karena saya tidak memerlukan mailserver (postfix), saya bisa menonaktifkan instalasi dengan menjalankan echo postfix hold | sudo dpkg --set-selections sebelum berlari sudo apt-get install devscripts. Tindakan penahanan ini hanya berlaku untuk pemasangan ini, setelah pemasangan, pilihan disetel ulang. - Lekensteyn
Juga perlu ditunjukkan, paket penahan melakukan pemecahan pemutakhiran dan tambalan kadang-kadang dengan membuat situasi di mana tidak ada solusi hukum yang dapat dihitung ke ketergantungan. Jika paket foo memiliki == <atau <= ketergantungan pada libbar, maka apt akan menolak untuk memutakhirkan libbar dan juga foo. Seiring waktu, dependensi kaskade ini mungkin tumbuh untuk memblokir sejumlah besar pembaruan, termasuk pembaruan keamanan penting. Anda harus menghapus pembekuan dan membiarkan pemutakhiran terjadi, atau membangun kembali paket yang Anda pegang terhadap versi lebih baru dari dependensinya jika ini terjadi. - Stephanie
Sekedar catatan: apt-mark tidak mendukung hold dalam versi 0.7.25 (Ubuntu Lucid) - Joril
Ini sangat berguna ketika mencoba menahan driver grafis. Untuk pengguna ATI, apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev. - earthmeLon
Saat ini hanya paket paket synaptic dan aptitude dalam program-program tersebut. "Ada lagi yang meng-upgrade paket (baca: Update Manager, apt-get, aptitude, dll) mengabaikan ini." Dari pertanyaan ini. - holocronweaver


Untuk menempatkan paket "foo" ditahan:

echo "foo hold" | dpkg --set-selections

Dalam kasus Anda, kami akan menaruhkan anggur:

sudo -i
echo "wine hold" | dpkg --set-selections

Untuk menghapus penangguhan:

sudo -i
echo "wine install" | dpkg --set-selections

43
2017-12-08 20:15



Perhatikan juga bahwa saat paket ditangguhkan, Anda bisa instal versi tertentu melalui apt-get install wine=1.2.3. Ditahan mencegah apt-get (dist-)upgrade dari mengubahnya. - rcoup
@rcoup Jika Anda memiliki versi lama yang ditangguhkan, dan kemudian Anda secara manual meningkatkan ke versi baru tanpa menghapus penangguhan seperti yang Anda jelaskan, akankah versi lama disimpan dalam cache sehingga Anda dapat kembali ke sana? - cxrodgers
@cxposting cache lokal (biasanya /var/cache/apt/archives) tidak bergantung pada pembekuan & peningkatan & berbagai hal, jadi semua versi yang telah Anda unduh akan ada di sana sampai Anda menjalankannya apt-get [auto]clean - rcoup


Saya mencari hal yang sama dan setelah banyak penelitian saya menemukan bahwa menggunakan sintaks berikut Anda dapat melarang satu versi tertentu tetapi memperbolehkan 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.


28
2017-07-22 11:13



Ini adalah cara yang jauh lebih baik daripada mencegah pembaruan tanpa batas - Eero Aaltonen
Dengan metode ini, saya pikir, kemungkinan lebih besar untuk mencegah ubuntu 'adware' seperti ubuntu satu atau ikon amazon dari yang diinstal ulang dengan upgrade rilis berikutnya ... - Daniel Alder


Memasang synaptic menggunakan sudo apt-get install synaptic.

Jalankan menggunakan gksudo synaptic dan di kotak pencarian temukan paket yang ingin Anda kunci, yaitu: gedit

enter image description here

Dari menu paket pilih Versi terkunci:

enter image description here

Dan itu saja, versi yang saat ini diinstal pada saat kunci akan tetap terpasang bahkan selama upgrade.


19
2017-12-08 20:06



Silakan lihat di "Kunci versi tidak sepintar kedengarannya. Ini seharusnya melakukan apa yang tertulis di kaleng, mengunci versi ... Tapi itu hanya menguncinya di dalam Synaptic. Ada lagi yang melakukan upgrade paket (baca: Update Manager , apt-get, aptitude, dll) mengabaikan ini. Ini mungkin perilaku buggy jadi saya mengharapkan ini diperbaiki dalam waktu. " dari askubuntu.com/questions/9607/what-does-lock-version-do. Bagaimana keadaan saat ini? Jika ada sesuatu yang terkunci di Synaptic, akankah manajer paket lain "menghormati" kunci?
vasa1: Mulai versi 0.75.13, masih tidak ada :( Masalah yang sama dengan bakat. - syockit


Mencegah paket yang diinstal disebut "memegang paket" dan sangat mudah dilakukan:

gema nama paket tahan | dpkg --set-pilihan

... dimana * 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.


16
2018-02-05 01:18



Sempurna ini adalah jawabannya. Terima kasih. - asoundmove
s/sudo su/sudo -s/g (atau sudo -i). (-i akan memberikan cangkang login, -s tidak akan). - derobert


Sejak beberapa waktu apt-get diganti dengan apt, jadi misalnya saya ingin mencegah Firefox memperbarui ke versi di atas 56, karena banyak add-ons, seperti "Grup Tab" tidak bekerja lagi dengan Firefox 57 yang baru (lihat "Pembaruan WebExtensions").

Adalah mungkin untuk menyimpan lebih dari satu paket dengan satu perintah dan menggunakan wildcard.

Mencegah Firefox memperbarui

sudo apt-mark hold firefox firefox-locale-*

Jika Anda harus menahannya nanti, itu akan menjadi perintah:

sudo apt-mark unhold firefox firefox-locale-*

5
2017-11-19 07:45





Saya synaptic Anda dapat membekukan versi paket tertentu saya tidak yakin 100% apakah ini akan mengubah apt-get tetapi pasti akan berhenti memperbarui pengelola.

Untuk membekukan paket pilihlah dalam synaptic kemudian buka menu paket dan pilih versi freeze.

Semoga ini membantu

edit: Ini pertanyaan 16668 berurusan dengan situasi serupa


4
2017-12-23 17:35