Krótka odpowiedź:
Plik preferencji APT / etc / apt / preferencje można wykorzystać do kontrolowania, które wersje pakietów zostaną wybrane do instalacji.
Oto plik /etc/apt/preferences
, który apt-get
decyduje, którą wersję należy wybrać, jeśli istnieje wiele wersji pojedynczego pakietu. Dzięki temu każdy pakiet pochodzący z lokalnego repozytorium będzie miał pierwszeństwo przed innymi pakietami.
Opakowanie: *
Pin: origin „”
Priorytet pinów: 1001
Nie będzie to kontrolować wersji, ale preferencji źródłowej, jeśli oba pakiety mają tę samą wersję. Jeśli chcesz przypisać najwyższy priorytet tej samej wersji pakietu w lokalnym repozytorium, wypisz je u góry do /etc/apt/sources.list
pliku>
Odpowiedz na oryginalne pytanie:
Jak przypisać najwyższy priorytet lokalnemu repozytorium bez użycia pliku sources.list?
Nie ma możliwości przypisania najwyższego priorytetu lokalnemu repozytorium bez użycia sources.list
pliku. musisz umieścić je na szczycie listy „sources.list”, jeśli chcesz przypisać najwyższy priorytet lokalnemu repozytorium.
Podsumowująca odpowiedź na to pytanie:
Jak mogę ustawić apt-get, aby preferował lokalne pakiety repozytoriów zamiast ponownie pobierać tę samą wersję pakietu z oficjalnych repozytoriów? Lokalne repozytorium jest podpisane i zaufane. Wypróbowaliśmy już priorytet preferencji apt.
Korzystając z /etc/apt/sources.list
pliku, musisz umieścić linię lokalnego repozytorium na górze tego pliku. jak ten poniżej.
deb cdrom: [Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)] / ścisłe główne ograniczone
plik deb: / media / Main / Precise-Debs-New /
plik deb: / media / Main / Linux-Software / Ubuntu / Precise /
deb http://archive.ubuntu.com/ubuntu precyzyjny wszechświat ograniczony wieloświat
deb-src http://archive.ubuntu.com/ubuntu precyzyjny wszechświat główny multiverse ograniczony #Dodane przez software-properties
# deb cdrom: [Xubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423.1)] / precyzyjny główny wszechświat ograniczony wszechświat
# deb cdrom: [Ubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423)] / ścisłe główne ograniczone
# deb http://archive.canonical.com/ubuntu precyzyjny partner
# deb-src http://archive.canonical.com/ubuntu precyzyjny partner
# deb http://extras.ubuntu.com/ubuntu precyzyjny główny
# deb-src http://extras.ubuntu.com/ubuntu dokładny główny
I tak, „apt_preference” nie ma nic wspólnego z wybieraniem instancji pakietów o tej samej wersji. Chodzi o to, że nie można użyć /etc/apt/preference
pliku, aby wymusić wybranie / użycie .deb
pliku z lokalnego repozytorium poprzez przypisanie najwyższego priorytetu do lokalnego. Ten plik (preferencja) służy do wybierania konkretnej wersji, a nie konkretnej instancji (plik .deb) tej samej wersji. W tym drugim przypadku musisz użyć /etc/apt/sources.list
pliku z wyżej wymienioną metodą.
Wyjaśnienie:
Wydaje się, że wszyscy źle zrozumieliśmy apt_preference
cel, instrukcja apt_preference opisuje to w pierwszych 3 akapitach !!
Plik preferencji APT / etc / apt / preferencje można wykorzystać do kontrolowania, które wersje pakietów zostaną wybrane do instalacji.
Kilka wersji pakietu może być dostępnych do zainstalowania, gdy plik sources.list (5) zawiera odniesienia do więcej niż jednej dystrybucji (na przykład stabilnej i testowej). APT przypisuje priorytet każdej dostępnej wersji. Z zastrzeżeniem ograniczeń zależności, apt-get (8) wybiera wersję o najwyższym priorytecie instalacji. Plik preferencji APT domyślnie zastępuje priorytety, które APT domyślnie przypisuje do wersji pakietu, tym samym dając użytkownikowi kontrolę nad tym, który z nich zostanie wybrany do instalacji.
A bardzo ważny jest trzeci akapit
Kilka instancji tej samej wersji pakietu może być dostępnych, gdy plik sources.list (5) zawiera odwołania do więcej niż jednego źródła. W tym przypadku apt-get (8) pobiera instancję najwcześniej wymienioną w pliku sources.list (5). Plik preferencji APT nie wpływa na wybór instancji, a jedynie na wybór wersji .
Te kursywa zostały wykonane przeze mnie
Zobaczmy to na przykładzie:
Mam precyzyjną wersję compiz-fusion-plugins-extra
, ale wyłączyłem ją dla celów demonstracyjnych
Oto plik /etc/apt/preferences
, który apt-get
decyduje, którą wersję należy wybrać, jeśli istnieje wiele wersji pojedynczego pakietu. (W tym przykładzie compiz-fusion-plugins-extra
ma kilka wersji.
Opakowanie: *
Pin: origin „”
Priorytet pinów: 1001
Ten plik mówi, apt-get
aby zainstalować z lokalnego repozytorium dla wszystkich pakietów, które mają kilka wersji, istnieje w innym repozytorium.
Innymi słowy, jeśli mam pakiet xapps
z wersją 1.0
w moim lokalnym repozytorium, a ten sam pakiet xapps
istnieje w repozytorium Precise z wyższą wersją, powiedzmy 2.0
, apt-get
że preferuje wersję z lokalnego repozytorium, tj 1.0
. Wersję .
Oto mój /etc/apt/sources.list
plik
deb http://archive.ubuntu.com/ubuntu precyzyjny wszechświat ograniczony wieloświat
deb-src http://archive.ubuntu.com/ubuntu precyzyjny wszechświat główny multiverse ograniczony #Dodane przez software-properties
deb http://security.ubuntu.com/ubuntu/ precyzyjny wszechświat zabezpieczeń wszechświat ograniczony
deb http://archive.ubuntu.com/ubuntu precyzyjne aktualizacje uniwersalny główny multiwers ograniczony
deb http://archive.ubuntu.com/ubuntu precyzyjne-backports wszechświat główny multiwers ograniczony
# deb http://archive.canonical.com/ubuntu precyzyjny partner
# deb-src http://archive.canonical.com/ubuntu precyzyjny partner
# deb http://extras.ubuntu.com/ubuntu precyzyjny główny
# deb-src http://extras.ubuntu.com/ubuntu dokładny główny
plik deb: / media / Main / Linux-Software / Ubuntu / Oneiric / #to jest repozytorium oniryczne.
plik deb: / media / Main / Linux-Software / Ubuntu / Natty / natty /
plik deb: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu /
plik deb: / media / Main / Linux-Software / Ubuntu / Natty / natty_new /
Chociaż wcześniej wymieniłem repozytorium precyzyjne w pliku, nie powoduje apt-get
to wybrania pakietu z tego repozytorium. Jak opisano w instrukcji
Plik preferencji APT nie wpływa na wybór instancji, a jedynie na wybór wersji.
Tak więc wynik polecenia apt-cache policy compiz-fusion-plugins-extra
był zgodny z oczekiwaniami, jak poniżej
anwar @ edubuntu-lenovo: / etc / apt $ apt-cache policy compiz-fusion-plugins-extra
compiz-fusion-plugins-extra:
Zainstalowano: (brak)
Kandydat: 0.9.5.94-0ubuntu1 / ** wybór niższych wersji dla priorytetu ** /
Tabela wersji:
0.9.7.0 ~ bzr9-0ubuntu6 0
500 http://archive.ubuntu.com/ubuntu/ precision / universe i386 Packages
0.9.5.94-0ubuntu1 0
Plik 1001: / media / Main / Linux-Software / Ubuntu / Oneiric / Packages
0,9.4-0ubuntu3 0
Plik 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
Tutaj wersja kandydacka to 0.9.5.94-0ubuntu1
(która znajduje się w lokalnym repozytorium), a nie 0.9.7.0~bzr9-0ubuntu6 0
, która znajduje się w repozytorium dokładnych. chociaż jeden z nich został wymieniony jako pierwszy w sources.list
pliku.
Przykładowa apt-get
próba instalacji compiz-fusion-plugins-extra
po ustawieniu najwyższego priorytetu w lokalnym repozytorium.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install compiz-fusion-plugins-extra
Czytanie list pakietów ... Gotowe
Budowanie drzewa zależności
Odczytywanie informacji o stanie ... Gotowe
Następujące pakiety zostały automatycznie zainstalowane i nie są już wymagane:
x11-apps x11-xfs-utils xinit x11-session-utils libfs6
Użyj polecenia „apt-get autorove”, aby je usunąć.
Zostaną zainstalowane następujące dodatkowe pakiety:
compiz-core compiz-plugins-default compiz-plugins-extra
compiz-plugins-main-default libdecoration0 xserver-xorg-core
xserver-xorg-video-intel
Sugerowane pakiety:
compizconfig-settings-manager xfonts-100dpi xfonts-75dpi
Następujące pakiety zostaną USUNIĘTE:
compiz compiz-gnome compizconfig-backend-gconf edubuntu-desktop
libcompizconfig0 ubuntu-desktop unity xorg xserver-xorg
xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-mouse
xserver-xorg-input-synaptics xserver-xorg-input-vmmouse
xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-ati
xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-geode
xserver-xorg-video-mach64 xserver-xorg-video-xesserver-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
Zostaną zainstalowane następujące NOWE pakiety:
compiz-fusion-plugins-extra compiz-plugins-extra
Następujące pakiety zostaną obniżone:
compiz-core compiz-plugins-default compiz-plugins-main-default
libdecoration0 xserver-xorg-core xserver-xorg-video-intel
0 uaktualnionych, 2 nowo zainstalowane, 6 obniżonych, 37 do usunięcia i 698 niezaktualizowanych.
Musisz uzyskać 0 B / 5,772 kB archiwów.
Po tej operacji zwolnione zostanie 8294 kB miejsca na dysku.
Czy chcesz kontynuować [T / n]?
Dziwne !!!, Próbuje obniżyć już zainstalowane pakiety compiz precyzyjnie w celu rozwiązania zależności (pasujących do Oneirica) z nowo wybranymi compiz-fusion-plugins-extra
!!!.
Bardziej niebezpieczne jest to, że próbuje usunąć pakiety sterowników karty graficznej (xserver-xorg -....), aby uniknąć konfliktu z nowymi kompilacjami.
(Prawdopodobnie, jeśli miałem je również w moim lokalnym repozytorium, mogą bezpiecznie chcieć obniżyć wersję. Ale ponieważ te pakiety są zwykle instalowane, nie pobrałem ich, więc nie mam ich w lokalnym repozytorium, stąd ten wynik) .
Wniosek : Tak więc /etc/apt/preferences
zaleca się używanie tylko z lokalnym repozytorium, jeśli masz pełne repozytorium w systemie lokalnym.
Co jeśli kilka wystąpień (plik .deb) tej samej wersji istnieje w wielu repozytoriach.
Które jest opisane w apt_preference
instrukcji
Kilka instancji tej samej wersji pakietu może być dostępnych, gdy plik sources.list (5) zawiera odwołania do więcej niż jednego źródła. W tym przypadku apt-get (8) pobiera instancję najwcześniej wymienioną w pliku sources.list (5).
Przykład przypadków użycia /etc/apt/preferences
pliku:
Przykładem zmuszania apt-get
do wyboru wersji dostępnej z niestandardowego repozytorium zamiast standardowej wersji Ubuntu może być dystrybucja „Linux Mint”. Używają tego niestandardowego preference
pliku.
Opakowanie: *
Pin: zwolnij o = linuxmint
Priorytet pinów: 700
Opakowanie: *
Pin: origin packages.linuxmint.com
Priorytet pinów: 700
Opakowanie: *
Pin: release o = Ubuntu
Priorytet pinów: 500
To skutecznie powoduje, że dostarczają pakiety, gdy mają je w swoich repozytoriach. Ale jeśli ich nie mają, używają standardowego repozytorium Ubuntu.
Przykład działający apt-get
po ustawieniu najwyższego priorytetu dla lokalnego repozytorium
Chciałem tylko zainstalować kubuntu-desktop
pakiet na Ubuntu, aby przetestować KDE. (Zapomniałem, ustawiłem preferencje za pomocą /etc/apt/preference
pliku) . Miałem iso instalatora kubuntu-12.04-alternate, więc pomyślałem, że mogę go użyć.
(po prawidłowym ustawieniu iso jako źródła repozytorium) uruchomiłem
sudo apt-get install kubuntu-desktop
, a potem byłem zaskoczony, widząc wynik poniżej.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install kubuntu-desktop
Czytanie list pakietów ... Gotowe
Budowanie drzewa zależności
Odczytywanie informacji o stanie ... Gotowe
Nie można zainstalować niektórych pakietów. Może to oznaczać, że masz
zażądał niemożliwej sytuacji lub jeśli używasz niestabilnej
dystrybucja, że niektóre wymagane pakiety nie zostały jeszcze utworzone
lub został przeniesiony z Przychodzących.
Następujące informacje mogą pomóc rozwiązać problem:
Następujące pakiety mają niezaspokojone zależności:
kubuntu-desktop: Zależy: język-selektor-kde, ale nie zostanie zainstalowany
Poleca: amarok, ale nie zostanie zainstalowany
Poleca: apturl-kde, ale nie zostanie zainstalowany
Poleca: gdebi-kde, ale nie zostanie zainstalowany
Zaleca: gpgsm, ale nie zostanie zainstalowany
Zaleca: ibus-qt4, ale nie zostanie zainstalowany
Poleca: jockey-kde, ale nie zostanie zainstalowany
Zaleca: wtyczki kdegraphics-strigi-plugins, ale nie zostaną zainstalowane
Poleca: kdepim-wizards, ale nie zostanie zainstalowany
Zaleca: kpackagekit, ale nie zostanie zainstalowany
Poleca: libreoffice-kde, ale nie będzie instalowane
Zaleca: tlen w stylu libreoffice, ale nie zostanie zainstalowany
Poleca: network-manager-pptp-kde, ale nie zostanie zainstalowany
Poleca: plazma-widget-facebook, ale nie zostanie zainstalowany
Poleca: plazma-widget-kimpanel, ale nie zostanie zainstalowany
Poleca: usb-creator-kde, ale nie zostanie zainstalowany
E: Nie można rozwiązać problemów, trzymałeś uszkodzone paczki.
Byłem zaskoczony wynikiem. nagle pamiętam, że ustawiłem preferencję ( do napisania tej odpowiedzi ), /etc/apt/preference
aby ustawić najwyższy priorytet dla mojego lokalnego repozytorium.
więc uruchomiłem to: apt-cache policy kubuntu-desktop
wynik był jak poniżej:
anwar @ edubuntu-lenovo: ~ $ apt-cache policy kubuntu-desktop
kubuntu-desktop:
Zainstalowano: (brak)
Kandydat: 1.222.1kde47 ~ ppa2
Tabela wersji:
1,254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424) / precision / main i386 Packages
500 http://archive.ubuntu.com/ubuntu/ precision / main i386 Packages
1.222.1kde47 ~ ppa2 0
Plik 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222,1 0
Plik 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1,222 0
Plik 1001: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Packages
W tym wyniku widzimy, że zarówno „cdrom”, jak i „dokładne repozytorium główne” ma wersję 1.254 , podczas gdy lokalne repozytorium ma wersję 1.222.1kde47 ~ ppa2 , która jest niższą wersją. Mimo że są one umieszczane przed lokalnymi w pliku sources.list, lokalne pakiety mają pierwszeństwo.
Aby wyraźnie zobaczyć, że apt-get
rzeczywiście próbuje zainstalować z lokalnego, uruchomiłem synaptic
i dostałem to, co pokazuje, że system Apt uważa 1.222.1kde47 ~ ppa2 za wersję kandydującą do zainstalowania.
apt-cache policy kubuntu-desktop
Pokazuje też te same rzeczy
anwar @ edubuntu-lenovo: ~ $ apt-cache policy kubuntu-desktop
kubuntu-desktop:
Zainstalowano: (brak)
Kandydat: 1.222.1kde47 ~ ppa2
Tabela wersji:
1,254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424) / precision / main i386 Packages
500 http://archive.ubuntu.com/ubuntu/ precision / main i386 Packages
1.222.1kde47 ~ ppa2 0
Plik 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222,1 0
Plik 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1,222 0
Plik 1001: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Packages
Aby rozwiązać ten problem, usunąłem /etc/apt/preference
plik sudo rm /etc/apt/preference
.
Potem znów to uruchomiłem apt-cache policy kubuntu-desktop
. widząc tylko ten oczekiwany wynik.
anwar @ edubuntu-lenovo: ~ $ sudo rm / etc / apt / preferences
anwar @ edubuntu-lenovo: ~ $ sudo apt-cache policy kubuntu-desktop
kubuntu-desktop:
Zainstalowano: (brak)
Kandydat: 1,254
Tabela wersji:
1,254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424) / precision / main i386 Packages
500 http://archive.ubuntu.com/ubuntu/ precision / main i386 Packages
1.222.1kde47 ~ ppa2 0
500 plików: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222,1 0
500 plików: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1,222 0
500 plików: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Packages
Ponownie uruchomiłem to. sudo apt-get install kubuntu-desktop
aby zobaczyć wynik poniżej:
......... Niepotrzebne dane zostały usunięte .........
0 zaktualizowanych, 213 nowo zainstalowanych, 0 do usunięcia i 150 niezaktualizowanych.
Musisz uzyskać 0 B / 89,6 MB archiwów.
Po tej operacji zostanie wykorzystane 269 MB dodatkowego miejsca na dysku.
Czy chcesz kontynuować [T / n]?
Możesz sprawdzić pełny wynik tutaj
Więc jestem prawie pewien części Objaśnienia.
Odniesienie 1: Podręcznik apt_preference
Odniesienie 2: Jak zachować określoną wersję zainstalowanych pakietów