Apakah Anda ingin dapat menentukan repo selama runtime, atau haruskah itu lebih merupakan hal yang statis? The dua jawaban di bawah ini menganggap pilihan terakhir.
tshepang
Idealnya akan selama runtime. Opsi statis sudah cukup.
Ton van den Heuvel
2
Anda menuju dan bantuan sebenarnya yang Anda minta berbeda.
Minggu
Jawaban:
29
Gunakan Pinning
Pinning adalah proses yang memungkinkan Anda untuk tetap pada rilis Ubuntu yang stabil (atau sistem debian lainnya) sambil mengambil paket dari versi yang lebih baru. - help.ubuntu.com
Anda dapat menonaktifkan pembaruan otomatis dari repositori tertentu tanpa sepenuhnya menghapusnya melalui aptkebijakan:
Untuk menonaktifkan pembaruan otomatis dari repositori repo, tambahkan file /etc/apt/preferences.d/repodengan konten berikut:
Package: *
Pin: release n=repo
Pin-Priority: 50
Yang akan memberikan semua paket dari repositori ini prioritas yang lebih rendah daripada paket yang sudah diinstal (yang memiliki 100).
Untuk informasi lebih lanjut man apt_preferencesatau periksa Wiki Komunitas Ubuntu .
Sayang sekali satu-satunya jawaban apt_preferences adalah yang terakhir ...
Robert Siemer
bagaimana cara mengetahui versi mana dari repo mana?
Maks N
2
@ Maxn Anda biasanya akan menemukan informasi itu dengan menjalankanapt-cache policy package-name
Anwar
Ini tidak akan memaksa repositori untuk tidak dipertimbangkan saat memperbarui. karena release n=repotidak akan menembolok siapa pun
Anwar
35
Anda dapat menentukan rilis dengan -topsi. Sebagai contoh, saya telah menambahkan repositori berikut /etc/apt/sources.listuntuk menginstal rilis terbaru Iceweasel:
deb http://mozilla.debian.net/ squeeze-backports iceweasel-release
Seperti yang Anda ketahui ada paket yang sama iceweaseldi repositori resmi Debian. Jika saya ingin menginstal Iceweasel dari rilis spesifik ini saya jalankan:
apt-get install -t squeeze-backports iceweasel
dari halaman manual apt-get:
-t, --target-release, --default-release
This option controls the default input to the policy engine, it creates a default pin at priority 990 using the specified
release string. This overrides the general settings in /etc/apt/preferences. Specifically pinned packages are not affected by
the value of this option. In short, this option lets you have simple control over which distribution packages will be retrieved
from. Some common examples might be -t '2.1*', -t unstable or -t sid. Configuration Item: APT::Default-Release; see also the
apt_preferences(5) manual page.
Saya pikir ini adalah solusi yang lebih baik.
UPDATE : Seperti @SuB disebutkan dalam komentar, " -tmenentukan rilis bukan nama repositori. Tidak ada nama repositori di Ubuntu (tidak seperti linux berbasis RedHat seperti RHEL, Fedora, CentOS, ...)".
Seperti yang Anda lihat di apt-getmanual, -ttentukan rilis bukan nama repositori. Tidak ada nama repositori di Ubuntu (tidak seperti linux berbasis RedHat seperti RHEL, Fedora, CentOS, ...)
SuB
1
@ SUB Ya, Anda benar! Saya bingung nama repositori dengan rilis!
kartunis
-t xenialbekerja untuk satu paket. tetapi semua dependensinya masih akan diambil dari paket yang lebih tinggi
Anwar
10
Jawaban singkat
Anda harus menyematkan repositori yang tidak ingin Anda instal dengan prioritas kurang dari 100. Artinya (dari apt_preferencehalaman manual)
100 <= P <500
menyebabkan versi diinstal kecuali ada versi yang tersedia milik beberapa distribusi lain atau versi yang diinstal lebih baru
Dan untuk memilih repositori untuk disematkan, Anda akan menggunakan bidang dari Releasefile repositori . Seperti archive, label, release, versiondll Dengan menentukan nilai-nilai bidang ini, Anda justru dapat memilih repositori dan menetapkan prioritas pilihan Anda untuk itu. Periksa halaman apt_preference untuk lebih jelasnya.
Jawaban panjang
Sebelum melanjutkan, kita perlu mengetahui beberapa hal penting tentang menyematkan. Itu termasuk
Bidang Releasefile dan pemetaan untuk apt-cache policyoutput
Format file preferensi apt
Menggunakan Releasebidang file untuk menetapkan prioritas
Deskripsi mengatur deskripsi untuk repositori. Ini tidak ditampilkan dalam apt-cache policyoutput
Label itu adalah label repositori. Banyak repositori memiliki label kosong. Itu ditampilkan di l=<label>dalam output.
Asal ini menceritakan tentang asal repositori. Repositori resmi Ubuntu memiliki Ubuntunilai. Tampil seperti o=pada output
Versi adalah versi distribusi. Ini 16,04 untuk Xenial. Tampil seperti v=pada output
Suite sama dengan Arsip . Dari debian wiki itu adalah Nama distribusi Debian paket dalam direktori ini milik (atau dirancang untuk), yaitu stabil, pengujian atau tidak stabil. . Untuk Ubuntu, ini release-updates, release-securitydll. Misalnya xenial-updates,, xenial-security. Ini ditampilkan dalam output sebagai a=xenial, a=xenial-security. PPA hanya menggunakan nama rilis untuk ini, itu sebabnya tidak banyak membantu dalam Pinning.
Komponen menceritakan tentang hal perizinan. Ini main, multiverse, restricted, universedi Ubuntu. Dalam output itu ditampilkan sebagai c=mainatau c=restrictedlain - lain. Sebagian besar PPA digunakan mainuntuk bidang ini, sehingga tidak banyak membantu dalam menyematkan banyak.
Arsitektur adalah tentang arsitektur OS. Ditampilkan sebagai b=i386atau b=amd64dalam output
Codename adalah nama rilis distribusi. Untuk 16,04 itu xenial. Untuk 14,04 itu trusty. Ditampilkan dalam apt-cache policyoutput sebagai n=xenialatau n=trusty. Itu sama untuk semua repositori untuk distribusi tunggal biasanya. Itu sebabnya tidak banyak membantu dalam menyematkan banyak.
Baris lain dalam apt-cache policyoutput dimulai dengan originmemberitahu asal Internet repositori. Ini juga dapat digunakan dalam menjepit. Tapi jangan dicampur dengan bidang Releasefile Origin. Itu berbeda.
Kami akan menggunakan nilai-nilai ini untuk menyematkan repositori.
Jadi, bagaimana kita menggunakan menyematkan 1 untuk membatasi repositori?
Ada beberapa cara untuk mengendalikan pinning dan hanya sebagian kecil yang efektif untuk Ubuntu. Penjelasan detail berada di luar cakupan jawabannya. Silakan merujuk ke apt_preferencehalaman manual untuk ini.
2. Pin format file
Sematkan atau apt file preferensi berada di /etc/apt/preferences.dfolder. Setiap pinning mengandung tiga garis.
Baris pertama dimulai dengan Package:dan nama paket yang dipisahkan koma mengikuti. Ekspresi dan gumpalan reguler diizinkan
Baris kedua dimulai dengan Pin:dan digunakan untuk menargetkan satu set paket.
Jika kami ingin menyematkan paket dari yang xeniallebih tinggi xenial-updates, kami akan gunakan release a=xenial.
Jika kami ingin menyematkan versi 5.0, kami akan gunakan di version 5.0sini. Pattens Glob diizinkan.
Atau jika kami ingin menyematkan paket dari asal http://archive.ubuntu.com, kami akan gunakan origin "archive.ubuntu.com". Catatan, kami tidak menulis http://protokol di sana.
Baris ketiga dimulai dengan Pin-Priority:dan nilainya adalah angka. Yang menandakan prioritas dari item yang ditargetkan di atas.
3. Menggunakan Release bidang file untuk mengatur prioritas
Dalam contoh ini, paket dari xenialarsip diberikan prioritas lebih tinggi daripada xenial-updatesdanxenial-security .
Setelah menyematkan, menjalankan apt-cache policy nautiluspertunjukan menunjukkan bahwa memang telah memberikan prioritas lebih tinggi ke versi yang lebih rendah dari xenialarsip daripada versi yang lebih tinggi dari xenial-updatesarsip. Perhatikan Candidate:garisnya.
Tapi, Jika kami ingin memberikan prioritas lebih dari paket yang disediakan PPA juga, ini tidak akan berhasil. Karena PPA menggunakan nama arsip yang sama xenialsecara default. Jadi, menetapkan prioritas untuk a=xenialjuga berlaku untuk paket-paket itu. Misalnya (setelah PPA diaktifkan),
Sekarang versi kandidat berasal dari PPA. Kedua paket dari xenialarsip repo resmi Ubuntu dan PPA memiliki prioritas yang sama 1001, karena keduanya menggunakan nilai yang sama untuk Archivedi file Release. Agar berhasil disematkan, kita perlu menggabungkan lebih banyak bidang dalam file Pin.
Beberapa contoh
Sematkan repositori PPA
Untuk menyematkan paket dari repositori, kita perlu menargetkannya menggunakan informasi yang ditemukan dari apt-cache policyperintah. Kami baru saja melihat itua=xenial tidak akan membantu menunjuk repositori. Kita perlu menggunakan beberapa bidang bersama-sama menggunakan koma dalam file preferensi untuk secara tepat menargetkan repositori.
Misalnya, untuk mencegah semua paket dari http://ppa.launchpad.net/oibaf/graphics-drivers/ppa, kita bisa menggunakan
Di sini kita menggunakan nilai nama kode serta Originnilai PPA. (Meskipun nilai nama kode sebenarnya tidak diperlukan di sini). Terkadang repositori kehilangan nilai ini. Dalam kasus tersebut, beberapa teknik lain harus digunakan. Keluaran dari apt-cache policy libgl1-mesa-glxkata itu bekerja. Ini menurunkan prioritas semua paket PPA ini.
Abaikan fakta bahwa itu adalah Calon. Ini senang, karena sudah diinstal di sistem saya . Periksa prioritas di kanan
Sematkan repositori saat info rilis tidak ada
Jika kita ingin menyematkan repositori yang informasi rilisnya tidak ada, seperti ini http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04, kita harus menggunakan metode lain. Karena, tidak ada repositori lain yang menggunakan sumber itu, kami dapat dengan aman menggunakan originuntuk menyimpan repositori ini.
Dan kemudian hapus komentar dari sources.list. Mungkin bukan cara terbaik, tetapi setidaknya apt-gethalaman manual tidak menentukan cara apa pun untuk melakukan itu.
Pada catatan terkait, misalnya proses peningkatan distribusi Ubuntu menonaktifkan semua repositori pihak ke-3 selama peningkatan (dan tidak hanya menjalankan beberapa opsi untuk mengecualikan mereka untuk sementara).
Jawaban:
Gunakan Pinning
Anda dapat menonaktifkan pembaruan otomatis dari repositori tertentu tanpa sepenuhnya menghapusnya melalui
apt
kebijakan:Untuk menonaktifkan pembaruan otomatis dari repositori
repo
, tambahkan file/etc/apt/preferences.d/repo
dengan konten berikut:Yang akan memberikan semua paket dari repositori ini prioritas yang lebih rendah daripada paket yang sudah diinstal (yang memiliki 100).
Untuk informasi lebih lanjut
man apt_preferences
atau periksa Wiki Komunitas Ubuntu .sumber
apt-cache policy package-name
release n=repo
tidak akan menembolok siapa punAnda dapat menentukan rilis dengan
-t
opsi. Sebagai contoh, saya telah menambahkan repositori berikut/etc/apt/sources.list
untuk menginstal rilis terbaru Iceweasel:Seperti yang Anda ketahui ada paket yang sama
iceweasel
di repositori resmi Debian. Jika saya ingin menginstal Iceweasel dari rilis spesifik ini saya jalankan:dari halaman manual apt-get:
Saya pikir ini adalah solusi yang lebih baik.
UPDATE : Seperti @SuB disebutkan dalam komentar, "
-t
menentukan rilis bukan nama repositori. Tidak ada nama repositori di Ubuntu (tidak seperti linux berbasis RedHat seperti RHEL, Fedora, CentOS, ...)".sumber
apt-get
manual,-t
tentukan rilis bukan nama repositori. Tidak ada nama repositori di Ubuntu (tidak seperti linux berbasis RedHat seperti RHEL, Fedora, CentOS, ...)-t xenial
bekerja untuk satu paket. tetapi semua dependensinya masih akan diambil dari paket yang lebih tinggiJawaban singkat
Anda harus menyematkan repositori yang tidak ingin Anda instal dengan prioritas kurang dari 100. Artinya (dari
apt_preference
halaman manual)Dan untuk memilih repositori untuk disematkan, Anda akan menggunakan bidang dari
Release
file repositori . Sepertiarchive
,label
,release
,version
dll Dengan menentukan nilai-nilai bidang ini, Anda justru dapat memilih repositori dan menetapkan prioritas pilihan Anda untuk itu. Periksa halaman apt_preference untuk lebih jelasnya.Jawaban panjang
Sebelum melanjutkan, kita perlu mengetahui beberapa hal penting tentang menyematkan. Itu termasuk
Bidang
Release
file dan pemetaan untukapt-cache policy
outputFormat file preferensi apt
Menggunakan
Release
bidang file untuk menetapkan prioritas1. Bidang
Release
file danapt-cache policy
outputDari artikel Wiki Debian
Anda akan melihat output dari
apt-cache policy
seperti iniNilai dalam baris ini berasal dari
Release
file.Deskripsi mengatur deskripsi untuk repositori. Ini tidak ditampilkan dalam
apt-cache policy
outputLabel itu adalah label repositori. Banyak repositori memiliki label kosong. Itu ditampilkan di
l=<label>
dalam output.Asal ini menceritakan tentang asal repositori. Repositori resmi Ubuntu memiliki
Ubuntu
nilai. Tampil sepertio=
pada outputVersi adalah versi distribusi. Ini 16,04 untuk Xenial. Tampil seperti
v=
pada outputSuite sama dengan Arsip . Dari debian wiki itu adalah Nama distribusi Debian paket dalam direktori ini milik (atau dirancang untuk), yaitu stabil, pengujian atau tidak stabil. . Untuk Ubuntu, ini
release-updates
,release-security
dll. Misalnyaxenial-updates
,,xenial-security
. Ini ditampilkan dalam output sebagaia=xenial
,a=xenial-security
. PPA hanya menggunakan nama rilis untuk ini, itu sebabnya tidak banyak membantu dalam Pinning.Komponen menceritakan tentang hal perizinan. Ini
main
,multiverse
,restricted
,universe
di Ubuntu. Dalam output itu ditampilkan sebagaic=main
atauc=restricted
lain - lain. Sebagian besar PPA digunakanmain
untuk bidang ini, sehingga tidak banyak membantu dalam menyematkan banyak.Arsitektur adalah tentang arsitektur OS. Ditampilkan sebagai
b=i386
ataub=amd64
dalam outputCodename adalah nama rilis distribusi. Untuk 16,04 itu
xenial
. Untuk 14,04 itutrusty
. Ditampilkan dalamapt-cache policy
output sebagain=xenial
ataun=trusty
. Itu sama untuk semua repositori untuk distribusi tunggal biasanya. Itu sebabnya tidak banyak membantu dalam menyematkan banyak.Baris lain dalam
apt-cache policy
output dimulai denganorigin
memberitahu asal Internet repositori. Ini juga dapat digunakan dalam menjepit. Tapi jangan dicampur dengan bidangRelease
fileOrigin
. Itu berbeda.Kami akan menggunakan nilai-nilai ini untuk menyematkan repositori.
Jadi, bagaimana kita menggunakan menyematkan 1 untuk membatasi repositori?
Ada beberapa cara untuk mengendalikan pinning dan hanya sebagian kecil yang efektif untuk Ubuntu. Penjelasan detail berada di luar cakupan jawabannya. Silakan merujuk ke
apt_preference
halaman manual untuk ini.2. Pin format file
Sematkan atau apt file preferensi berada di
/etc/apt/preferences.d
folder. Setiap pinning mengandung tiga garis.Baris pertama dimulai dengan
Package:
dan nama paket yang dipisahkan koma mengikuti. Ekspresi dan gumpalan reguler diizinkanBaris kedua dimulai dengan
Pin:
dan digunakan untuk menargetkan satu set paket.Jika kami ingin menyematkan paket dari yang
xenial
lebih tinggixenial-updates
, kami akan gunakanrelease a=xenial
.Jika kami ingin menyematkan versi 5.0, kami akan gunakan di
version 5.0
sini. Pattens Glob diizinkan.Atau jika kami ingin menyematkan paket dari asal
http://archive.ubuntu.com
, kami akan gunakanorigin "archive.ubuntu.com"
. Catatan, kami tidak menulishttp://
protokol di sana.Baris ketiga dimulai dengan
Pin-Priority:
dan nilainya adalah angka. Yang menandakan prioritas dari item yang ditargetkan di atas.3. Menggunakan
Release
bidang file untuk mengatur prioritasBerikut ini sebuah contoh
Dalam contoh ini, paket dari
xenial
arsip diberikan prioritas lebih tinggi daripadaxenial-updates
danxenial-security
.Setelah menyematkan, menjalankan
apt-cache policy nautilus
pertunjukan menunjukkan bahwa memang telah memberikan prioritas lebih tinggi ke versi yang lebih rendah darixenial
arsip daripada versi yang lebih tinggi darixenial-updates
arsip. PerhatikanCandidate:
garisnya.Tapi, Jika kami ingin memberikan prioritas lebih dari paket yang disediakan PPA juga, ini tidak akan berhasil. Karena PPA menggunakan nama arsip yang sama
xenial
secara default. Jadi, menetapkan prioritas untuka=xenial
juga berlaku untuk paket-paket itu. Misalnya (setelah PPA diaktifkan),Sekarang versi kandidat berasal dari PPA. Kedua paket dari
xenial
arsip repo resmi Ubuntu dan PPA memiliki prioritas yang sama1001
, karena keduanya menggunakan nilai yang sama untukArchive
di file Release. Agar berhasil disematkan, kita perlu menggabungkan lebih banyak bidang dalam file Pin.Beberapa contoh
Sematkan repositori PPA
Untuk menyematkan paket dari repositori, kita perlu menargetkannya menggunakan informasi yang ditemukan dari
apt-cache policy
perintah. Kami baru saja melihat itua=xenial
tidak akan membantu menunjuk repositori. Kita perlu menggunakan beberapa bidang bersama-sama menggunakan koma dalam file preferensi untuk secara tepat menargetkan repositori.Misalnya, untuk mencegah semua paket dari
http://ppa.launchpad.net/oibaf/graphics-drivers/
ppa, kita bisa menggunakanDi sini kita menggunakan nilai nama kode serta
Origin
nilai PPA. (Meskipun nilai nama kode sebenarnya tidak diperlukan di sini). Terkadang repositori kehilangan nilai ini. Dalam kasus tersebut, beberapa teknik lain harus digunakan. Keluaran dariapt-cache policy libgl1-mesa-glx
kata itu bekerja. Ini menurunkan prioritas semua paket PPA ini.Abaikan fakta bahwa itu adalah Calon. Ini senang, karena sudah diinstal di sistem saya . Periksa prioritas di kanan
Sematkan repositori saat info rilis tidak ada
Jika kita ingin menyematkan repositori yang informasi rilisnya tidak ada, seperti ini
http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04
, kita harus menggunakan metode lain. Karena, tidak ada repositori lain yang menggunakan sumber itu, kami dapat dengan aman menggunakanorigin
untuk menyimpan repositori ini.Catatan 1: Asal ini adalah asal Internet, bukan yang menentukan Vendor dalam file Rilis.
Catatan 2:
Pin-Priority
angka memiliki arti khusus. Periksaapt_preference
halaman manual untuk detailnya.sumber
Alternatif berbasis gui adalah membuka pusat perangkat lunak dan memilih edit> sumber perangkat lunak ...
yang perlu Anda lakukan adalah hapus centang pada repositori yang tidak Anda inginkan untuk pembaruan.
Semoga ini membantu
sumber
Pilihan yang jelas adalah mengubah
/etc/apt/sources.list
dan mengomentari semua repositori lainnya, dan kemudian jalankanDan kemudian hapus komentar dari
sources.list
. Mungkin bukan cara terbaik, tetapi setidaknyaapt-get
halaman manual tidak menentukan cara apa pun untuk melakukan itu.Pada catatan terkait, misalnya proses peningkatan distribusi Ubuntu menonaktifkan semua repositori pihak ke-3 selama peningkatan (dan tidak hanya menjalankan beberapa opsi untuk mengecualikan mereka untuk sementara).
sumber
Satu opsi GUI lainnya adalah dengan hanya memilih asal di pengelola paket Synaptic.
sumber