Podsumowanie
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.
Pierwotne pytanie brzmiało: „Jak przypisać najwyższy priorytet lokalnemu repozytorium bez korzystania z pliku sources.list”
Mam skonfigurowane lokalne repozytorium z pobranymi pakietami. Używam go, aby uniknąć pobierania tych samych pakietów przez Internet, gdy muszę ponownie zainstalować Ubuntu. Jest to podstawowe repozytorium utworzone za pomocą apt-ftparchive packages . > Packages
. Uczyniłem to zaufanym repozytorium, aby uniknąć ostrzeżenia „nieuwierzytelnione repozytorium”. ( Jeśli masz niezaufane repozytorium apt
lub synaptic
spróbuj pobrać te same pakiety przez Internet, ponieważ jest to zaufane ).
Korzystam z tego lokalnego repozytorium od co najmniej 1 roku. Ale zawsze muszę umieścić linię mojego lokalnego repozytorium na górze sources.list
pliku, aby z niej skorzystać. Ale to denerwujące, ponieważ muszę otworzyć terminal i pisać na nim za każdym razem, gdy ponownie instaluję Ubuntu, chociaż jest lepsze narzędzie software-properties-gtk
. Nie mogę użyć tego narzędzia, ponieważ umieszcza ono linię źródłową na końcu `sources.list.
A prawdziwym problemem jest tym, apt
czy synaptic
zawsze pobrać pakiet ze źródła, które jest wspomniano wcześniej, bez sprawdzania, czy pakiety są już dostępne w lokalnym repozytorium. Nie mam więc innego wyboru, jak umieścić lokalne źródło na początku sources.list
robienia terminalu (właściwie nie nienawidzę terminala, ale potrzebuję rozwiązania).
Próbowałem tej metody . Ale to mi nie pomaga.
Mój plik preferencji to /etc/apt/preferences.d/local-pin-900
Package: *
Pin: release o=Local,n=ubuntu-local
Pin-Priority: 900
Mój plik wydania to
Origin: Local
Label: Local-Ubuntu
Description: Local Ubuntu Repository
Codename: ubuntu-local
MD5Sum:
ed43222856d18f389c637ac3d7dd6f85 1043412 Packages
d41d8cd98f00b204e9800998ecf8427e 0 Sources
Kiedy włączę apt-preferencje, apt-cache policy
poprawnie pokazuje preferencje, np. Pokazuje, że lokalne repozytorium ma najwyższy priorytet.
Ale kiedy to robię sudo apt-get install <package-name>
, apt
próbuje pobrać go z Internetu. Ale kiedy umieszczam moje lokalne repo na górze, instaluje się z lokalnego repozytorium.
Więc moje pytanie jest -> „Czy to możliwe, aby wymusić skłonni do korzystania z lokalnym repozytorium kiedy pakiet jest dostępny w lokalnym repozytorium, bez wyraźnie umieszczając«lokalnego źródła»na szczycie mojej listy repozytorium (np sources.list pliku)? „
Edycja: dane wyjściowe apt-cache policy $package_name
są następujące
nautilus-wipe: Zainstalowano: (brak) Kandydat: 0,1.1-2 Tabela wersji: 0,1.1–2 0 500 http://archive.ubuntu.com/ubuntu/ precision / universe i386 Packages Plik 900: / media / Main / Linux-Software / Ubuntu / Precise / Packages
To pokazuje, że moje lokalne repozytorium ma większe preferencje, chociaż nie jest to pierwsze, które znajduje się w sources.list
pliku.
Oto wynik działania apt-get install nautilus-wipe
Czytanie list pakietów ... Gotowe Budowanie drzewa zależności Odczytywanie informacji o stanie ... Gotowe Zostaną zainstalowane następujące NOWE pakiety: nautilus-wipe 0 zaktualizowanych, 1 nowo zainstalowanych, 0 do usunięcia i 131 niezaktualizowanych. Musisz zdobyć 30,7 kB archiwów. Po tej operacji zostanie wykorzystane 150 kB dodatkowego miejsca na dysku. „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: 7d497b8dfcefe1c0b51a45f3b046699
Wciąż próbuje pobrać plik z Internetu, choć myślę, że powinien być zadowolony z lokalnego.
Wynik użycia „” lub localhost, jak sugerował mediageek
Korzystanie z localhost nie ma wpływu. ale „” ma, ale nie różni się od mojej metody
Package: *
Pin: origin ""
Pin-Priority: 1001
Użyłem ich przed opublikowaniem pytania. Ale znowu spróbowałem tego (na surowość). Ten sam wynik. apt-cache policy
pokazując, że moje lokalne repozytorium ma rzeczywiście najwyższy priorytet. ale kiedy próbowałem zainstalować, pojawia się komunikat „Potrzebuję uzyskać XXX / XXX KB archiwum”.
apt-get
polecenia. Mówi: „Należy pobrać 0 kb”.apt-cache policy
apt-cache policy
i zauważyłem, że lokalne repozytorium ma wyższy priorytet. Ale nadalapt-get
próbuję zainstalować go z Internetu. Myślę, że po prostu nie jest możliwe bez użyciasources.list
pliku.apt-cache policy
pokazałem, że wersja jest taka samaOdpowiedzi:
Krótka odpowiedź:
Oto plik
/etc/apt/preferences
, któryapt-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.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:
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:
Korzystając z
/etc/apt/sources.list
pliku, musisz umieścić linię lokalnego repozytorium na górze tego pliku. jak ten poniżej.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 !!A bardzo ważny jest trzeci akapit
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 demonstracyjnychOto plik
/etc/apt/preferences
, któryapt-get
decyduje, którą wersję należy wybrać, jeśli istnieje wiele wersji pojedynczego pakietu. (W tym przykładziecompiz-fusion-plugins-extra
ma kilka wersji.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 pakietxapps
istnieje w repozytorium Precise z wyższą wersją, powiedzmy2.0
,apt-get
że preferuje wersję z lokalnego repozytorium, tj1.0
. Wersję .Oto mój
/etc/apt/sources.list
plikChociaż wcześniej wymieniłem repozytorium precyzyjne w pliku, nie powoduje
apt-get
to wybrania pakietu z tego repozytorium. Jak opisano w instrukcjiTak więc wynik polecenia
apt-cache policy compiz-fusion-plugins-extra
był zgodny z oczekiwaniami, jak poniżejTutaj wersja kandydacka to
0.9.5.94-0ubuntu1
(która znajduje się w lokalnym repozytorium), a nie0.9.7.0~bzr9-0ubuntu6 0
, która znajduje się w repozytorium dokładnych. chociaż jeden z nich został wymieniony jako pierwszy wsources.list
pliku.Przykładowa
apt-get
próba instalacjicompiz-fusion-plugins-extra
po ustawieniu najwyższego priorytetu w lokalnym repozytorium.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
instrukcjiPrzykł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 niestandardowegopreference
pliku.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 repozytoriumChciał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.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: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łemsynaptic
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 rzeczyAby rozwiązać ten problem, usunąłem
/etc/apt/preference
pliksudo rm /etc/apt/preference
.Potem znów to uruchomiłem
apt-cache policy kubuntu-desktop
. widząc tylko ten oczekiwany wynik.Ponownie uruchomiłem to.
sudo apt-get install kubuntu-desktop
aby zobaczyć wynik poniżej: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
źródło