Jawaban singkatnya:
File preferensi APT / etc / apt / preferensi dapat digunakan untuk mengontrol versi paket mana yang akan dipilih untuk instalasi.
Ini adalah file /etc/apt/preferences, yang apt-getdigunakan 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.
Paket: *
Pin: asal ""
Pin-Prioritas: 1001
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.listfile>
Jawab pertanyaan awal:
Bagaimana cara menetapkan prioritas tertinggi ke repositori lokal tanpa menggunakan file sources.list?
Tidak ada cara untuk menetapkan prioritas tertinggi ke repositori lokal tanpa menggunakan sources.listfile. Anda harus meletakkannya di atas "sources.list" jika Anda ingin menetapkan prioritas tertinggi untuk repo lokal Anda.
Ringkasan jawaban untuk pertanyaan ini:
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.
Menggunakan /etc/apt/sources.listfile, Anda harus meletakkan baris repositori lokal Anda di bagian atas file ini. seperti yang di bawah ini.
deb cdrom: [Kubuntu 12.04 LTS _Pulise Pangolin_ - Rilis i386 (20120424)] / tepat dibatasi utama
file deb: / media / Utama / Precise-Debs-New /
file deb: / media / Utama / Linux-Software / Ubuntu / Precise /
deb http://archive.ubuntu.com/ubuntu multiverse utama yang tepat dibatasi semesta
deb-src http://archive.ubuntu.com/ubuntu tepat semesta multiverse utama dibatasi #Ditambahkan oleh properti-perangkat lunak
# deb cdrom: [Xubuntu 12.04 LTS _Precise Pangolin_ - Rilis i386 (20120423.1)] / alam semesta multiverse terbatas utama yang tepat
# deb cdrom: [Ubuntu 12.04 LTS _Precise Pangolin_ - Rilis i386 (20120423)] / tepat dibatasi utama
# deb http://archive.canonical.com/ubuntu mitra yang tepat
# deb-src http://archive.canonical.com/ubuntu mitra yang tepat
# deb http://extras.ubuntu.com/ubuntu main tepatnya
# deb-src http://extras.ubuntu.com/ubuntu utama yang tepat
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/preferencefile untuk memaksa memilih / menggunakan .debfile 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.listfile dengan metode yang disebutkan di atas.
Penjelasan:
Sepertinya kita semua salah mengerti apt_preferencetujuannya, manual apt_preference menjelaskan hal ini dalam 3 paragraf pertama !!
File preferensi APT / etc / apt / preferensi dapat digunakan untuk mengontrol versi paket mana yang akan dipilih untuk instalasi.
Beberapa versi paket mungkin tersedia untuk instalasi ketika file sources.list (5) berisi referensi ke lebih dari satu distribusi (misalnya, stabil dan pengujian). APT memberikan prioritas untuk setiap versi yang tersedia. Tunduk pada batasan ketergantungan, apt-get (8) memilih versi dengan prioritas tertinggi untuk instalasi. File preferensi APT mengesampingkan prioritas yang ditetapkan APT untuk versi paket secara default, sehingga memberikan kontrol pengguna atas mana yang dipilih untuk instalasi.
Dan yang paling penting adalah di paragraf ketiga
Beberapa contoh paket versi yang sama mungkin tersedia ketika file sources.list (5) berisi referensi ke lebih dari satu sumber. Dalam hal ini apt-get (8) mengunduh instance yang paling awal terdaftar dalam file sources.list (5). File preferensi APT tidak mempengaruhi pilihan misalnya, hanya pilihan versi .
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 demonstrasi
Ini adalah file /etc/apt/preferences, yang apt-getdigunakan untuk memutuskan, versi mana yang harus dipilih jika ada banyak versi paket tunggal. (Dalam contoh ini, compiz-fusion-plugins-extraada beberapa versi.
Paket: *
Pin: asal ""
Pin-Prioritas: 1001
File ini mengatakan apt-getuntuk menginstal dari repositori lokal untuk semua paket yang memiliki beberapa versi ada di repositori berbeda.
Dengan kata lain, jika saya memiliki paket xappsdengan versi 1.0di repositori lokal saya, dan paket yang sama ini xappsada di repositori Precise dengan versi yang lebih tinggi, katakanlah 2.0, apt-getakan lebih suka versi dari repositori lokal, yaitu versi 1.0.
Ini /etc/apt/sources.listfile saya
deb http://archive.ubuntu.com/ubuntu multiverse utama yang tepat dibatasi semesta
deb-src http://archive.ubuntu.com/ubuntu tepat semesta multiverse utama dibatasi #Ditambahkan oleh properti-perangkat lunak
deb http://security.ubuntu.com/ubuntu/ multiverse main-security universe utama dibatasi
deb http://archive.ubuntu.com/ubuntu pembaruan-tepat semesta multiverse utama dibatasi
deb http://archive.ubuntu.com/ubuntu-backports universe multiverse utama dibatasi
# deb http://archive.canonical.com/ubuntu mitra yang tepat
# deb-src http://archive.canonical.com/ubuntu mitra yang tepat
# deb http://extras.ubuntu.com/ubuntu main tepatnya
# deb-src http://extras.ubuntu.com/ubuntu utama yang tepat
file deb: / media / Main / Linux-Software / Ubuntu / Oneiric / #ini adalah repositori oneiric.
file deb: / media / Utama / Linux-Software / Ubuntu / Natty / natty /
file deb: / media / Utama / Linux-Software / Ubuntu / Natty / kubuntu /
file deb: / media / Utama / Linux-Software / Ubuntu / Natty / natty_new /
Meskipun, saya telah mendaftarkan repositori yang tepat sebelumnya dalam file, itu tidak menyebabkan apt-getmemilih paket dari repositori itu. Seperti yang dijelaskan dalam manual
File preferensi APT tidak mempengaruhi pilihan misalnya, hanya pilihan versi.
Jadi, output dari perintah apt-cache policy compiz-fusion-plugins-extraitu seperti yang diharapkan seperti di bawah ini
anwar @ edubuntu-lenovo: / etc / apt $ apt-cache policy compiz-fusion-plugins-extra
compiz-fusion-plugins-extra:
Diinstal: (tidak ada)
Kandidat: 0.9.5.94-0ubuntu1 / ** memilih versi yang lebih rendah untuk prioritas ** /
Tabel versi:
0.9.7.0 ~ bzr9-0ubuntu6 0
500 Paket http://archive.ubuntu.com/ubuntu/tepat / universe i386
0.9.5.94-0ubuntu1 0
File 1001: / media / Utama / Linux-Software / Ubuntu / Oneiric / Paket
0.9.4-0ubuntu3 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
Di sini, versi kandidat adalah 0.9.5.94-0ubuntu1, (yang ada di repositori lokal), bukan 0.9.7.0~bzr9-0ubuntu6 0, yang ada di repositori sebelumnya. meskipun yang tepat terdaftar pertama dalam sources.listfile.
Contoh menjalankan apt-getmencoba menginstal compiz-fusion-plugins-extrasetelah menetapkan prioritas tertinggi untuk repositori lokal.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install compiz-fusion-plugins-extra
Membaca daftar paket ... Selesai
Membangun pohon ketergantungan
Membaca informasi keadaan ... Selesai
Paket-paket berikut secara otomatis diinstal dan tidak lagi diperlukan:
x11-apps x11-xfs-utils xinit x11-session-utils libfs6
Gunakan 'apt-get autoremove' untuk menghapusnya.
Paket tambahan berikut akan diinstal:
compiz-core compiz-plugins-default compiz-plugins-extra
compiz-plugins-main-default libdecoration0 xserver-xorg-core
xserver-xorg-video-intel
Paket yang disarankan:
compizconfig-settings-manager xfonts-100dpi xfonts-75dpi
Paket-paket berikut akan DIHAPUS:
compiz compiz-gnome compizconfig-backend-gconf edubuntu-desktop
libcompizconfig0 ubuntu-desktop unity xorg xserver-xorg
xserver-xorg-input-semua xserver-xorg-input-evdev xserver-xorg-input-mouse
xserver-xorg-input-synaptics xserver-xorg-input-vmmouse
xserver-xorg-input-wacom xserver-xorg-video-semua xserver-xorg-video-ati
xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-geode
xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic
xserver-xorg-video-nouveau xserver-xorg-video-openchrome
xserver-xorg-video-qxl xserver-xorg-video-r128 xserver-xorg-video-radeon
xserver-xorg-video-s3 xserver-xorg-video-savage
xserver-xorg-video-siliconmotion xserver-xorg-video-sis
xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident
xserver-xorg-video-vesa xserver-xorg-video-vmware
Paket BARU berikut ini akan diinstal:
compiz-fusion-plugins-extra compiz-plugins-extra
Paket-paket berikut akan DIPERBARUI:
compiz-core compiz-plugins-default compiz-plugins-main-default
libdecoration0 xserver-xorg-core xserver-xorg-video-intel
0 ditingkatkan, 2 baru dipasang, 6 diturunkan, 37 untuk dihapus dan 698 tidak ditingkatkan.
Perlu mendapatkan 0 B / 5.772 kB arsip.
Setelah operasi ini, ruang disk 8.294 kB akan dibebaskan.
Apakah Anda ingin melanjutkan [Y / n]?
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/preferenceshanya 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_preferencemanual
Beberapa contoh paket versi yang sama mungkin tersedia ketika file sources.list (5) berisi referensi ke lebih dari satu sumber. Dalam hal ini apt-get (8) mengunduh instance yang paling awal terdaftar dalam file sources.list (5).
Contoh kasus penggunaan untuk /etc/apt/preferencesfile:
Contoh dari pemaksaan apt-getuntuk memilih versi yang tersedia dari repo khusus, alih-alih yang standar Ubuntu mungkin adalah distribusi "Linux Mint". Mereka menggunakan preferencefile khusus ini .
Paket: *
Pin: lepaskan o = linuxmint
Pin-Prioritas: 700
Paket: *
Pin: origin packages.linuxmint.com
Pin-Prioritas: 700
Paket: *
Pin: lepaskan o = Ubuntu
Prioritas Pin: 500
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-getsetelah menetapkan prioritas tertinggi ke repositori lokal
Saya hanya ingin menginstal kubuntu-desktop paket melalui Ubuntu untuk menguji KDE. (Saya lupa itu, saya telah menetapkan preferensi menggunakan /etc/apt/preferencefile) . 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.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install kubuntu-desktop
Membaca daftar paket ... Selesai
Membangun pohon ketergantungan
Membaca informasi keadaan ... Selesai
Beberapa paket tidak dapat diinstal. Ini mungkin berarti Anda memilikinya
meminta situasi yang mustahil atau jika Anda menggunakan yang tidak stabil
distribusi yang beberapa paket yang diperlukan belum dibuat
atau dipindahkan dari Incoming.
Informasi berikut dapat membantu menyelesaikan situasi:
Paket-paket berikut memiliki dependensi yang tidak terpenuhi:
kubuntu-desktop: Tergantung: bahasa-selector-kde tetapi tidak akan diinstal
Merekomendasikan: amarok tetapi tidak akan diinstal
Merekomendasikan: apturl-kde tetapi tidak akan diinstal
Merekomendasikan: gdebi-KDE tetapi tidak akan diinstal
Merekomendasikan: gpgsm tetapi tidak akan diinstal
Merekomendasikan: ibus-qt4 tetapi tidak akan diinstal
Merekomendasikan: jockey-kde tetapi tidak akan diinstal
Merekomendasikan: kdegraphics-strigi-plugins tetapi tidak akan diinstal
Merekomendasikan: kdepim-penyihir tetapi tidak akan diinstal
Merekomendasikan: kpackagekit tetapi tidak akan diinstal
Merekomendasikan: libreoffice-KDE tetapi tidak akan diinstal
Merekomendasikan: libreoffice-style-oxygen tetapi tidak akan dipasang
Merekomendasikan: network-manager-pptp-kde tetapi tidak akan diinstal
Merekomendasikan: plasma-widget-facebook tetapi tidak akan diinstal
Merekomendasikan: plasma-widget-kimpanel tetapi tidak akan diinstal
Merekomendasikan: usb-creator-kde tetapi tidak akan diinstal
E: Tidak dapat memperbaiki masalah, Anda telah memegang paket yang rusak.
Saya terkejut dengan hasilnya. tiba-tiba saya ingat itu, saya telah menetapkan preferensi ( untuk menulis jawaban ini ) /etc/apt/preferenceuntuk menetapkan prioritas tertinggi ke repositori lokal saya.
jadi, saya menjalankan ini:, apt-cache policy kubuntu-desktopoutputnya seperti di bawah ini:
anwar @ edubuntu-lenovo: ~ $ apt-cache policy kubuntu-desktop
kubuntu-desktop:
Diinstal: (tidak ada)
Kandidat: 1.222.1kde47 ~ ppa2
Tabel versi:
1.254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Rilis i386 (20120424) / tepatnya / paket utama i386
500 Paket http://archive.ubuntu.com/ubuntu/tepat / main i386
1.222.1kde47 ~ ppa2 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222.1 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Paket
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-getmemang mencoba untuk menginstal dari yang lokal, saya berlari synapticdan mendapatkan ini, yang menunjukkan bahwa, sistem Apt menganggap 1.222.1kde47 ~ ppa2 sebagai versi kandidat untuk menginstal.
Juga apt-cache policy kubuntu-desktopmenunjukkan hal yang sama
anwar @ edubuntu-lenovo: ~ $ apt-cache policy kubuntu-desktop
kubuntu-desktop:
Diinstal: (tidak ada)
Kandidat: 1.222.1kde47 ~ ppa2
Tabel versi:
1.254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Rilis i386 (20120424) / tepatnya / paket utama i386
500 Paket http://archive.ubuntu.com/ubuntu/tepat / main i386
1.222.1kde47 ~ ppa2 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222.1 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Paket
Untuk mengatasi ini, saya menghapus /etc/apt/preferencefile dengan sudo rm /etc/apt/preference.
Kemudian berlari lagi ini lagi apt-cache policy kubuntu-desktop. hanya melihat output yang diharapkan ini.
anwar @ edubuntu-lenovo: ~ $ sudo rm / etc / apt / preferensi
anwar @ edubuntu-lenovo: ~ $ sudo apt-cache policy kubuntu-desktop
kubuntu-desktop:
Diinstal: (tidak ada)
Kandidat: 1.254
Tabel versi:
1.254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Rilis i386 (20120424) / tepatnya / paket utama i386
500 Paket http://archive.ubuntu.com/ubuntu/tepat / main i386
1.222.1kde47 ~ ppa2 0
500 file: / media / Utama / Linux-Software / Ubuntu / Natty / natty / Paket
1.222.1 0
500 file: / media / Utama / Linux-Software / Ubuntu / Natty / natty / Paket
1.222 0
500 file: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Paket
Juga jalankan ini lagi. sudo apt-get install kubuntu-desktopuntuk melihat output di bawah ini:
......... Detail yang tidak perlu dihapus .........
0 ditingkatkan, 213 baru dipasang, 0 untuk dihapus dan 150 tidak ditingkatkan.
Perlu mendapatkan 0 B / 89,6 MB arsip.
Setelah operasi ini, 269 MB ruang disk tambahan akan digunakan.
Apakah Anda ingin melanjutkan [Y / n]?
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