Ringkasan
Bagaimana saya bisa membuat apt-get prefer paket repositori lokal daripada mengunduh lagi versi paket yang sama dari repositori resmi? Repositori lokal ditandatangani dan dipercaya. Kami sudah mencoba prioritas preferensi yang tepat.
Pertanyaan aslinya adalah: "Bagaimana cara menetapkan prioritas tertinggi ke repositori lokal tanpa menggunakan file sources.list"
Saya telah menyiapkan repositori lokal dengan paket yang saya unduh. Saya menggunakannya untuk menghindari mengunduh paket yang sama melalui Internet, ketika saya harus menginstal ulang Ubuntu saya. Ini adalah repositori dasar, dibuat dengan apt-ftparchive packages . > Packages
. Saya menjadikan ini repositori tepercaya untuk menghindari peringatan "repositori tidak terauthentikasi". ( Ketika Anda memiliki repositori yang tidak dipercaya, apt
atau synaptic
mencoba mengunduh paket yang sama melalui Internet, karena itu dipercaya ).
Saya telah menggunakan repositori lokal ini setidaknya selama 1 tahun. Tapi saya harus selalu meletakkan baris repositori lokal saya di bagian atas sources.list
file untuk menggunakan ini. Tapi ini menjengkelkan, karena saya harus membuka terminal dan melakukan pengetikan setiap kali saya menginstal ulang Ubuntu, meskipun ada alat yang lebih baik software-properties-gtk
. Saya tidak dapat menggunakan alat ini karena menempatkan baris sumber di akhir `sources.list.
Dan masalah sebenarnya adalah bahwa, apt
atau synaptic
selalu mengunduh paket dari sumber yang disebutkan sebelumnya, tanpa memeriksa apakah paket sudah tersedia di repositori lokal. Jadi, saya tidak punya pilihan selain menempatkan sumber lokal di atas sources.list
melakukan terminal (saya sebenarnya tidak benci terminal, tapi saya butuh solusi).
Saya sudah mencoba metode ini . Tapi ini tidak membantu saya.
File preferensi saya adalah ini di /etc/apt/preferences.d/local-pin-900
Package: *
Pin: release o=Local,n=ubuntu-local
Pin-Priority: 900
File rilis saya adalah ini
Origin: Local
Label: Local-Ubuntu
Description: Local Ubuntu Repository
Codename: ubuntu-local
MD5Sum:
ed43222856d18f389c637ac3d7dd6f85 1043412 Packages
d41d8cd98f00b204e9800998ecf8427e 0 Sources
Ketika saya mengaktifkan preferensi apt, yang apt-cache policy
benar menunjukkan preferensi, misalnya Ini menunjukkan repositori lokal memiliki prioritas tertinggi.
Tetapi ketika saya melakukan ini sudo apt-get install <package-name>
, apt
cobalah untuk mengunduhnya dari Internet. Tetapi ketika saya menempatkan repo lokal saya di bagian atas, itu menginstal dari repositori lokal.
Jadi, pertanyaan saya adalah -> 'Apakah mungkin untuk memaksa menggunakan repositori lokal ketika paket tersedia di repositori lokal, tanpa secara eksplisit menempatkan "sumber lokal" di bagian atas daftar repositori saya (mis. File sources.list)? '
Sunting: output dari apt-cache policy $package_name
adalah sebagai berikut
nautilus-wipe: Diinstal: (tidak ada) Kandidat: 0.1.1-2 Tabel versi: 0.1.1-2 0 500 Paket http://archive.ubuntu.com/ubuntu/tepat / universe i386 900 file: / media / Utama / Linux-Software / Ubuntu / Precise / Paket
Ini menunjukkan bahwa repositori lokal saya memiliki preferensi yang lebih tinggi, meskipun itu bukan yang lebih dulu ada dalam sources.list
file.
Ini adalah output dari apt-get install nautilus-wipe
Membaca daftar paket ... Selesai Membangun pohon ketergantungan Membaca informasi keadaan ... Selesai Paket BARU berikut ini akan diinstal: nautilus-wipe 0 ditingkatkan, 1 baru dipasang, 0 untuk dihapus dan 131 tidak ditingkatkan. Perlu mendapatkan arsip 30,7 kB. Setelah operasi ini, 150 kB ruang disk tambahan akan digunakan. 'http://archive.ubuntu.com/ubuntu/pool/universe/n/nautilus-wipe/nautilus-wipe_0.1.1-2_i386.deb' nautilus-wipe_0.1.1-2_i386.deb 30730 MD5Sum: 7d497b8dfcefe1c0b51a4549904
Masih mencoba untuk mendapatkan file dari Internet, meskipun saya pikir itu harus puas dengan yang lokal.
Hasil menggunakan "" atau localhost sebagai mediageek disarankan
Menggunakan localhost tidak berpengaruh. tetapi "" memiliki tetapi tidak berbeda dari metode saya
Package: *
Pin: origin ""
Pin-Priority: 1001
Saya telah menggunakannya sebelum memposting pertanyaan. Tetapi sekali lagi saya mencoba ini (pasti). Hasil yang sama. apt-cache policy
menunjukkan bahwa repositori lokal saya memang memiliki prioritas tertinggi. tetapi ketika saya mencoba untuk menginstalnya mengatakan "Perlu untuk mendapatkan XXX / XXX KB arsip".
apt-get
perintah. Dikatakan "0 kb perlu diunduh".apt-cache policy
apt-cache policy
dan melihat bahwa repositori lokal memiliki prioritas lebih tinggi. Tetapi masihapt-get
mencoba menginstalnya dari internet. Saya berpikir bahwa itu tidak mungkin tanpa menggunakansources.list
file.apt-cache policy
menunjukkan bahwa versi itu samaJawaban:
Jawaban singkatnya:
Ini adalah file
/etc/apt/preferences
, yangapt-get
digunakan untuk memutuskan, versi mana yang harus dipilih jika ada banyak versi paket tunggal. Dengan ini, paket apa pun yang berasal dari repositori lokal, akan diutamakan daripada paket lain.Ini tidak akan mengontrol versi, tetapi preferensi sumber jika kedua paket memiliki versi yang sama. Jika Anda perlu menetapkan prioritas tertinggi untuk versi paket yang sama di repo lokal Anda, daftarkan mereka di bagian atas
/etc/apt/sources.list
file>Jawab pertanyaan awal:
Tidak ada cara untuk menetapkan prioritas tertinggi ke repositori lokal tanpa menggunakan
sources.list
file. Anda harus meletakkannya di atas "sources.list" jika Anda ingin menetapkan prioritas tertinggi untuk repo lokal Anda.Ringkasan jawaban untuk pertanyaan ini:
Menggunakan
/etc/apt/sources.list
file, Anda harus meletakkan baris repositori lokal Anda di bagian atas file ini. seperti yang di bawah ini.Dan ya, "apt_preference" tidak ada hubungannya dengan memilih contoh paket dengan versi yang sama. Intinya di sini adalah, Anda tidak dapat menggunakan
/etc/apt/preference
file untuk memaksa memilih / menggunakan.deb
file dari repositori lokal Anda dengan menetapkan prioritas tertinggi untuk yang lokal Anda. File itu (preferensi) digunakan untuk memilih versi tertentu, bukan contoh spesifik (file .deb) dari versi yang sama. Untuk kasus yang terakhir, Anda perlu menggunakan/etc/apt/sources.list
file dengan metode yang disebutkan di atas.Penjelasan:
Sepertinya kita semua salah mengerti
apt_preference
tujuannya, manual apt_preference menjelaskan hal ini dalam 3 paragraf pertama !!Dan yang paling penting adalah di paragraf ketiga
Orang Italia itu dibuat oleh saya
Mari kita lihat ini dengan sebuah contoh:
Saya memiliki versi tepat
compiz-fusion-plugins-extra
, tetapi saya menonaktifkannya untuk demonstrasiIni adalah file
/etc/apt/preferences
, yangapt-get
digunakan untuk memutuskan, versi mana yang harus dipilih jika ada banyak versi paket tunggal. (Dalam contoh ini,compiz-fusion-plugins-extra
ada beberapa versi.File ini mengatakan
apt-get
untuk menginstal dari repositori lokal untuk semua paket yang memiliki beberapa versi ada di repositori berbeda.Dengan kata lain, jika saya memiliki paket
xapps
dengan versi1.0
di repositori lokal saya, dan paket yang sama inixapps
ada di repositori Precise dengan versi yang lebih tinggi, katakanlah2.0
,apt-get
akan lebih suka versi dari repositori lokal, yaitu versi1.0
.Ini
/etc/apt/sources.list
file sayaMeskipun, saya telah mendaftarkan repositori yang tepat sebelumnya dalam file, itu tidak menyebabkan
apt-get
memilih paket dari repositori itu. Seperti yang dijelaskan dalam manualJadi, output dari perintah
apt-cache policy compiz-fusion-plugins-extra
itu seperti yang diharapkan seperti di bawah iniDi sini, versi kandidat adalah
0.9.5.94-0ubuntu1
, (yang ada di repositori lokal), bukan0.9.7.0~bzr9-0ubuntu6 0
, yang ada di repositori sebelumnya. meskipun yang tepat terdaftar pertama dalamsources.list
file.Contoh menjalankan
apt-get
mencoba menginstalcompiz-fusion-plugins-extra
setelah menetapkan prioritas tertinggi untuk repositori lokal.Strange !!!, Ini mencoba menurunkan versi paket compiz yang sudah diinstal dengan tepat untuk menyelesaikan dependensi (cocok dengan Oneiric's) dengan yang baru dipilih
compiz-fusion-plugins-extra
!!!.Yang lebih berbahaya adalah, ia mencoba untuk menghapus paket driver grafis (xserver-xorg -....) untuk menghindari konflik dengan compizes baru.
(Mungkin, jika saya juga memilikinya di repositori lokal saya, mereka mungkin ingin downgrade dengan aman. Tetapi karena paket-paket itu biasanya diinstal, saya tidak mengunduhnya, jadi tidak ada dalam repo lokal, maka hasil ini) .
Kesimpulan : Jadi, menggunakan
/etc/apt/preferences
hanya disarankan untuk digunakan dengan repositori lokal, jika Anda memiliki repositori lengkap di sistem lokal.Bagaimana jika beberapa instance (file .deb) dari versi yang sama ada di banyak repositori.
Yang dijelaskan oleh
apt_preference
manualContoh kasus penggunaan untuk
/etc/apt/preferences
file:Contoh dari pemaksaan
apt-get
untuk memilih versi yang tersedia dari repo khusus, alih-alih yang standar Ubuntu mungkin adalah distribusi "Linux Mint". Mereka menggunakanpreference
file khusus ini .Ini secara efektif menyebabkan mereka, untuk menyediakan paket ketika mereka memiliki mereka di repositori mereka. Tetapi jika mereka tidak memilikinya, mereka menggunakan repositori standar Ubuntu.
Contoh yang berjalan
apt-get
setelah menetapkan prioritas tertinggi ke repositori lokalSaya hanya ingin menginstal
kubuntu-desktop
paket melalui Ubuntu untuk menguji KDE. (Saya lupa itu, saya telah menetapkan preferensi menggunakan/etc/apt/preference
file) . Saya punya iso dari Kubuntu-12.04-alternate-installer, jadi saya pikir saya bisa menggunakannya.(setelah mengatur iso dengan benar sebagai sumber repositori) , saya berlari
sudo apt-get install kubuntu-desktop
, lalu terkejut dengan melihat output di bawah.Saya terkejut dengan hasilnya. tiba-tiba saya ingat itu, saya telah menetapkan preferensi ( untuk menulis jawaban ini )
/etc/apt/preference
untuk menetapkan prioritas tertinggi ke repositori lokal saya.jadi, saya menjalankan ini:,
apt-cache policy kubuntu-desktop
outputnya seperti di bawah ini:Dalam output ini, kita melihat bahwa "cdrom" dan "repositori utama yang tepat" memiliki nomor versi 1.254 , sedangkan repositori lokal memiliki versi 1.222.1kde47 ~ ppa2 , yang merupakan versi lebih rendah. Meskipun, mereka ditempatkan sebelum yang lokal di file sources.list, paket lokal diutamakan.
Untuk secara eksplisit melihat bahwa
apt-get
memang mencoba untuk menginstal dari yang lokal, saya berlarisynaptic
dan mendapatkan ini, yang menunjukkan bahwa, sistem Apt menganggap 1.222.1kde47 ~ ppa2 sebagai versi kandidat untuk menginstal.Juga
apt-cache policy kubuntu-desktop
menunjukkan hal yang samaUntuk mengatasi ini, saya menghapus
/etc/apt/preference
file dengansudo rm /etc/apt/preference
.Kemudian berlari lagi ini lagi
apt-cache policy kubuntu-desktop
. hanya melihat output yang diharapkan ini.Juga jalankan ini lagi.
sudo apt-get install kubuntu-desktop
untuk melihat output di bawah ini:Anda dapat memeriksa hasil lengkapnya di sini
Kemudian saya cukup yakin tentang bagian Penjelasan.
Referensi 1: Manual apt_preference
Referensi 2: Cara Mempertahankan versi tertentu dari paket yang diinstal
sumber