Czy chcesz mieć możliwość określania repozytorium podczas uruchamiania, czy powinno być bardziej statyczne? Te dwie odpowiedzi poniżej zakładamy drugą opcję.
tshepang
Idealnie byłoby w czasie wykonywania. Opcja statyczna jest jednak wystarczająca.
Ton van den Heuvel
2
Kierujesz się, a rzeczywista pomoc, o którą prosisz, jest inna.
sundar
Odpowiedzi:
29
Użyj przypinania
Przypinanie to proces, który pozwala pozostać w stabilnej wersji Ubuntu (lub dowolnego innego systemu debian) podczas pobierania pakietów z nowszej wersji. - help.ubuntu.com
Możesz wyłączyć automatyczne aktualizacje z niektórych repozytoriów bez całkowitego usuwania ich za pomocą aptzasad:
Aby wyłączyć automatyczne aktualizacje z repozytorium repo, dodaj plik /etc/apt/preferences.d/repoo następującej treści:
Package: *
Pin: release n=repo
Pin-Priority: 50
Co da wszystkim pakietom z tego repozytorium niższy priorytet niż już zainstalowane pakiety (które mają 100).
Aby uzyskać więcej informacji man apt_preferenceslub sprawdź Wiki Wiki Ubuntu .
Szkoda, że jedyną odpowiedzią na apt_preferences jest ostatnia ...
Robert Siemer
jak dowiedzieć się, która wersja pochodzi z którego repozytorium?
Max N
2
@MaxN zwykle znajdziesz te informacje, uruchamiającapt-cache policy package-name
Anwar
Nie spowoduje to, że repozytorium nie będzie brane pod uwagę podczas aktualizacji. bo release n=reponikogo nie zbuforuje
Anwar
35
Możesz określić wydanie z -topcją. Jako przykład dodałem następujące repozytorium, /etc/apt/sources.listaby zainstalować najnowszą wersję Iceweasel:
deb http://mozilla.debian.net/ squeeze-backports iceweasel-release
Jak wiecie, iceweaselw oficjalnym repozytorium Debiana znajduje się ten sam pakiet . Jeśli chcę zainstalować Iceweasel z tej konkretnej wersji, uruchamiam:
apt-get install -t squeeze-backports iceweasel
ze strony podręcznika 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.
Myślę, że to lepsze rozwiązanie.
AKTUALIZACJA : Jak wspomniano w komentarzu @SuB, „ -tokreśla wersję, a nie nazwę repozytorium. W Ubuntu nie ma nazwy repozytorium (w przeciwieństwie do Linuksa opartego na RedHat, takiego jak RHEL, Fedora, CentOS, ...)”.
Jak widać w apt-getinstrukcji, należy -tpodać nazwę wydania, a nie repozytorium. W Ubuntu nie ma nazwy repozytorium (w przeciwieństwie do Linuksa opartego na RedHat, takiego jak RHEL, Fedora, CentOS, ...)
SuB
1
@SuB Tak, masz rację! Myliłem nazwę repozytorium z wydaniem!
rysownik
-t xenialdziała dla jednego pakietu. ale wszystkie jego zależności będą nadal pobierane z wyższych pakietów
Anwar,
11
Krótka odpowiedź
Musisz przypiąć repozytoria, z których nie chcesz instalować, z priorytetem mniejszym niż 100. Co oznacza (ze apt_preferencestrony man)
100 <= P <500
powoduje zainstalowanie wersji, chyba że dostępna jest wersja należąca do innej dystrybucji lub zainstalowana wersja jest nowsza
Aby wybrać repozytorium do przypięcia, użyjesz pól z Releasepliku repozytoriów . Takich jak archive, label, release, versionitd. Poprzez określenie wartości tych pól, można precyzyjnie wybrać repozytorium i przypisać preferowany pierwszeństwo do niego. Sprawdź stronę apt_preference, aby uzyskać więcej informacji.
Długa odpowiedź
Przed kontynuowaniem musimy dowiedzieć się czegoś ważnego na temat przypinania. Obejmuje to
Pola Releaseplików i odwzorowanie na apt-cache policydane wyjściowe
Format plików preferencji apt
Używanie Releasepól plików do ustawiania priorytetu
Wartości w tych wierszach pochodzą z Releaseplików.
Opis ustawia opis repozytorium. Nie jest to pokazywane w apt-cache policydanych wyjściowych
Oznacz to jest etykietą repozytorium. Wiele repozytoriów ma puste etykiety. Jest pokazany l=<label>na wyjściu.
Pochodzenie mówi o pochodzeniu repozytorium. Oficjalne repozytorium Ubuntu ma Ubuntutę wartość. Pokazane jak o=na wyjściu
Wersja jest wersją dystrybucji. Dla Xenial jest 16.04. Pokazane jak v=na wyjściu
Pakiet jest taki sam jak Archiwum . Z debian wiki jest to nazwa dystrybucji Debiana, do której pakiety w tym katalogu należą (lub są przeznaczone), tj. Stabilne, testujące lub niestabilne. . Dla Ubuntu, to są release-updates, release-securityitd. Na przykład xenial-updates, xenial-security. Jest pokazany na wyjściu jako a=xenial, a=xenial-security. Umowy PPA używają do tego tylko nazwy wydania, dlatego niewiele to pomoże w przypinaniu.
Komponent mówi o licencji. To main, multiverse, restricted, universew Ubuntu. Na wyjściu jest pokazany jako c=mainlub c=restricteditd. Większość PPA używa maintego pola, dlatego też nie pomaga zbyt mocno przypinać.
Architektura dotyczy architektury systemu operacyjnego. Pokazane jako b=i386lub b=amd64na wyjściu
Codename to nazwa wydania dystrybucji. Jest na 16.04 xenial. Jest na 14.04 trusty. Pokazane w apt-cache policydanych wyjściowych jako n=xeniallub n=trusty. Zwykle jest tak samo dla wszystkich repozytoriów dla jednej dystrybucji. Dlatego nie pomaga to w znacznym upinaniu.
Drugi wiersz apt-cache policywyjściowy rozpoczynający się od origininformuje o pochodzeniu internetowym repozytorium. Może być również stosowany do przypinania. Ale nie należy go mieszać z polem Releaseplików Origin. Te są różne.
Użyjemy tych wartości do przypięcia repozytorium.
Jak więc użyć przypinania 1 do ograniczenia repozytorium?
Istnieje kilka sposobów kontrolowania przypinania, a dla Ubuntu działa tylko niewielki podzbiór. Szczegółowe wyjaśnienie wykracza jednak poza zakres odpowiedzi. W tym celu zapoznaj się z apt_preferenceinstrukcją obsługi.
2. Format pliku PIN
Pliki preferencji pin lub apt znajdują się w /etc/apt/preferences.dfolderze. Każde przypięcie zawiera trzy linie.
Pierwszy wiersz zaczyna się od, Package:a po nim następują nazwy rozdzielone przecinkami. Wyrażenia regularne i globusy są dozwolone
Druga linia zaczyna się od Pin:i służy do celowania w zestaw pakietów.
Jeśli chcemy przypiąć paczki z xenialwyższych niż xenial-updates, użyjemy release a=xenial.
Jeśli chcemy przypiąć wersję 5.0, użyjemy version 5.0tutaj. Glob pattens są dozwolone.
Lub jeśli chcemy przypiąć paczki z miejsca pochodzenia http://archive.ubuntu.com, użyjemy origin "archive.ubuntu.com". Uwaga: nie piszemy http://tam protokołu.
Trzeci wiersz zaczyna się od, Pin-Priority:a jego wartość jest liczbą. Co oznacza priorytet wyżej wymienionych elementów docelowych.
3. Używanie Releasepól plików do ustawienia priorytetu
W tym przykładzie pakiety z xenialarchiwów mają wyższy priorytet niż xenial-updatesi xenial-security.
Po przypięciu uruchomienie programu apt-cache policy nautiluspokazuje, że rzeczywiście nadał wyższy priorytet niższej wersji z xenialarchiwum niż wyższej wersji z xenial-updatesarchiwum. Zwróć uwagę na Candidate:linię.
Ale jeśli chcemy nadać priorytet także pakietom dostarczonym przez PPA, to nie zadziała. Ponieważ PPA xenialdomyślnie używają tej samej nazwy archiwum . Tak więc przypisanie priorytetu a=xenialbędzie miało zastosowanie również do tych pakietów. Na przykład (po włączonym PPA),
Teraz wersja kandydacka pochodzi z PPA. Oba pakiety z xenialarchiwum oficjalnego repozytorium Ubuntu i PPA mają ten sam priorytet 1001, ponieważ oba używają tej samej wartości Archivew pliku Release. Aby pomyślnie przypiąć, musimy połączyć więcej pól w pliku Przypnij.
Kilka przykładów
Przypnij repozytorium PPA
Aby przypiąć paczki z repozytorium, musimy zaatakować go za pomocą informacji znalezionych w apt-cache policypoleceniu. Właśnie widzieliśmy, że a=xenialto nie pomoże wskazać repozytorium. Musimy używać wielu pól razem za pomocą przecinka w pliku preferencji, aby precyzyjnie celować w repozytorium.
Na przykład, aby zapobiec wszystkim pakietom z http://ppa.launchpad.net/oibaf/graphics-drivers/ppa, możemy użyć
Używamy tutaj wartości kryptonimu, a także Originwartości PPA. (Chociaż wartość kryptonimu nie jest tutaj wymagana). Czasami repozytorium może stracić tę wartość. W takich przypadkach należy zastosować inne techniki. Wynik apt-cache policy libgl1-mesa-glxmówi, że to działa. Obniżył priorytet wszystkich pakietów tego PPA.
Zignoruj fakt, że jest to kandydat. Stało się tak, ponieważ jest już zainstalowany w moim systemie . Sprawdź priorytet po prawej stronie
Przypnij repozytorium, gdy brakuje informacji o wersji
Jeśli chcemy przypiąć repozytorium, którego brakuje informacji o wersji, takie jak ten http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04, musimy użyć innej metody. Ponieważ żadne inne repozytorium nie korzysta z tego źródła, możemy bezpiecznie użyć go origindo przypięcia tego repozytorium.
A następnie usuń komentarze z sources.list. Może nie jest to najlepszy sposób, ale przynajmniej apt-getstrony podręcznika nie określają żadnego sposobu, aby to zrobić.
Z uwagi na to, na przykład proces aktualizacji dystrybucji Ubuntu wyłącza wszystkie repozytoria stron trzecich podczas aktualizacji (i nie uruchamia tylko niektórych opcji, aby tymczasowo je wykluczyć).
Odpowiedzi:
Użyj przypinania
Możesz wyłączyć automatyczne aktualizacje z niektórych repozytoriów bez całkowitego usuwania ich za pomocą
apt
zasad:Aby wyłączyć automatyczne aktualizacje z repozytorium
repo
, dodaj plik/etc/apt/preferences.d/repo
o następującej treści:Co da wszystkim pakietom z tego repozytorium niższy priorytet niż już zainstalowane pakiety (które mają 100).
Aby uzyskać więcej informacji
man apt_preferences
lub sprawdź Wiki Wiki Ubuntu .źródło
apt-cache policy package-name
release n=repo
nikogo nie zbuforujeMożesz określić wydanie z
-t
opcją. Jako przykład dodałem następujące repozytorium,/etc/apt/sources.list
aby zainstalować najnowszą wersję Iceweasel:Jak wiecie,
iceweasel
w oficjalnym repozytorium Debiana znajduje się ten sam pakiet . Jeśli chcę zainstalować Iceweasel z tej konkretnej wersji, uruchamiam:ze strony podręcznika apt-get:
Myślę, że to lepsze rozwiązanie.
AKTUALIZACJA : Jak wspomniano w komentarzu @SuB, „
-t
określa wersję, a nie nazwę repozytorium. W Ubuntu nie ma nazwy repozytorium (w przeciwieństwie do Linuksa opartego na RedHat, takiego jak RHEL, Fedora, CentOS, ...)”.źródło
apt-get
instrukcji, należy-t
podać nazwę wydania, a nie repozytorium. W Ubuntu nie ma nazwy repozytorium (w przeciwieństwie do Linuksa opartego na RedHat, takiego jak RHEL, Fedora, CentOS, ...)-t xenial
działa dla jednego pakietu. ale wszystkie jego zależności będą nadal pobierane z wyższych pakietówKrótka odpowiedź
Musisz przypiąć repozytoria, z których nie chcesz instalować, z priorytetem mniejszym niż 100. Co oznacza (ze
apt_preference
strony man)Aby wybrać repozytorium do przypięcia, użyjesz pól z
Release
pliku repozytoriów . Takich jakarchive
,label
,release
,version
itd. Poprzez określenie wartości tych pól, można precyzyjnie wybrać repozytorium i przypisać preferowany pierwszeństwo do niego. Sprawdź stronę apt_preference, aby uzyskać więcej informacji.Długa odpowiedź
Przed kontynuowaniem musimy dowiedzieć się czegoś ważnego na temat przypinania. Obejmuje to
Pola
Release
plików i odwzorowanie naapt-cache policy
dane wyjścioweFormat plików preferencji apt
Używanie
Release
pól plików do ustawiania priorytetu1. Pola
Release
pliku iapt-cache policy
wynikuZ artykułu Wiki Debian
Zobaczysz dane wyjściowe z
apt-cache policy
takichWartości w tych wierszach pochodzą z
Release
plików.Opis ustawia opis repozytorium. Nie jest to pokazywane w
apt-cache policy
danych wyjściowychOznacz to jest etykietą repozytorium. Wiele repozytoriów ma puste etykiety. Jest pokazany
l=<label>
na wyjściu.Pochodzenie mówi o pochodzeniu repozytorium. Oficjalne repozytorium Ubuntu ma
Ubuntu
tę wartość. Pokazane jako=
na wyjściuWersja jest wersją dystrybucji. Dla Xenial jest 16.04. Pokazane jak
v=
na wyjściuPakiet jest taki sam jak Archiwum . Z debian wiki jest to nazwa dystrybucji Debiana, do której pakiety w tym katalogu należą (lub są przeznaczone), tj. Stabilne, testujące lub niestabilne. . Dla Ubuntu, to są
release-updates
,release-security
itd. Na przykładxenial-updates
,xenial-security
. Jest pokazany na wyjściu jakoa=xenial
,a=xenial-security
. Umowy PPA używają do tego tylko nazwy wydania, dlatego niewiele to pomoże w przypinaniu.Komponent mówi o licencji. To
main
,multiverse
,restricted
,universe
w Ubuntu. Na wyjściu jest pokazany jakoc=main
lubc=restricted
itd. Większość PPA używamain
tego pola, dlatego też nie pomaga zbyt mocno przypinać.Architektura dotyczy architektury systemu operacyjnego. Pokazane jako
b=i386
lubb=amd64
na wyjściuCodename to nazwa wydania dystrybucji. Jest na 16.04
xenial
. Jest na 14.04trusty
. Pokazane wapt-cache policy
danych wyjściowych jakon=xenial
lubn=trusty
. Zwykle jest tak samo dla wszystkich repozytoriów dla jednej dystrybucji. Dlatego nie pomaga to w znacznym upinaniu.Drugi wiersz
apt-cache policy
wyjściowy rozpoczynający się odorigin
informuje o pochodzeniu internetowym repozytorium. Może być również stosowany do przypinania. Ale nie należy go mieszać z polemRelease
plikówOrigin
. Te są różne.Użyjemy tych wartości do przypięcia repozytorium.
Jak więc użyć przypinania 1 do ograniczenia repozytorium?
Istnieje kilka sposobów kontrolowania przypinania, a dla Ubuntu działa tylko niewielki podzbiór. Szczegółowe wyjaśnienie wykracza jednak poza zakres odpowiedzi. W tym celu zapoznaj się z
apt_preference
instrukcją obsługi.2. Format pliku PIN
Pliki preferencji pin lub apt znajdują się w
/etc/apt/preferences.d
folderze. Każde przypięcie zawiera trzy linie.Pierwszy wiersz zaczyna się od,
Package:
a po nim następują nazwy rozdzielone przecinkami. Wyrażenia regularne i globusy są dozwoloneDruga linia zaczyna się od
Pin:
i służy do celowania w zestaw pakietów.Jeśli chcemy przypiąć paczki z
xenial
wyższych niżxenial-updates
, użyjemyrelease a=xenial
.Jeśli chcemy przypiąć wersję 5.0, użyjemy
version 5.0
tutaj. Glob pattens są dozwolone.Lub jeśli chcemy przypiąć paczki z miejsca pochodzenia
http://archive.ubuntu.com
, użyjemyorigin "archive.ubuntu.com"
. Uwaga: nie piszemyhttp://
tam protokołu.Trzeci wiersz zaczyna się od,
Pin-Priority:
a jego wartość jest liczbą. Co oznacza priorytet wyżej wymienionych elementów docelowych.3. Używanie
Release
pól plików do ustawienia priorytetuOto przykład
W tym przykładzie pakiety z
xenial
archiwów mają wyższy priorytet niżxenial-updates
ixenial-security
.Po przypięciu uruchomienie programu
apt-cache policy nautilus
pokazuje, że rzeczywiście nadał wyższy priorytet niższej wersji zxenial
archiwum niż wyższej wersji zxenial-updates
archiwum. Zwróć uwagę naCandidate:
linię.Ale jeśli chcemy nadać priorytet także pakietom dostarczonym przez PPA, to nie zadziała. Ponieważ PPA
xenial
domyślnie używają tej samej nazwy archiwum . Tak więc przypisanie priorytetua=xenial
będzie miało zastosowanie również do tych pakietów. Na przykład (po włączonym PPA),Teraz wersja kandydacka pochodzi z PPA. Oba pakiety z
xenial
archiwum oficjalnego repozytorium Ubuntu i PPA mają ten sam priorytet1001
, ponieważ oba używają tej samej wartościArchive
w pliku Release. Aby pomyślnie przypiąć, musimy połączyć więcej pól w pliku Przypnij.Kilka przykładów
Przypnij repozytorium PPA
Aby przypiąć paczki z repozytorium, musimy zaatakować go za pomocą informacji znalezionych w
apt-cache policy
poleceniu. Właśnie widzieliśmy, żea=xenial
to nie pomoże wskazać repozytorium. Musimy używać wielu pól razem za pomocą przecinka w pliku preferencji, aby precyzyjnie celować w repozytorium.Na przykład, aby zapobiec wszystkim pakietom z
http://ppa.launchpad.net/oibaf/graphics-drivers/
ppa, możemy użyćUżywamy tutaj wartości kryptonimu, a także
Origin
wartości PPA. (Chociaż wartość kryptonimu nie jest tutaj wymagana). Czasami repozytorium może stracić tę wartość. W takich przypadkach należy zastosować inne techniki. Wynikapt-cache policy libgl1-mesa-glx
mówi, że to działa. Obniżył priorytet wszystkich pakietów tego PPA.Zignoruj fakt, że jest to kandydat. Stało się tak, ponieważ jest już zainstalowany w moim systemie . Sprawdź priorytet po prawej stronie
Przypnij repozytorium, gdy brakuje informacji o wersji
Jeśli chcemy przypiąć repozytorium, którego brakuje informacji o wersji, takie jak ten
http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04
, musimy użyć innej metody. Ponieważ żadne inne repozytorium nie korzysta z tego źródła, możemy bezpiecznie użyć goorigin
do przypięcia tego repozytorium.Uwaga 1: To źródło jest pochodzenia internetowego, a nie tego, które określa Dostawcę w pliku Release.
Uwaga 2:
Pin-Priority
liczba ma specjalne znaczenie. Sprawdźapt_preference
stronę podręcznika o szczegóły.źródło
Alternatywą opartą na gui byłoby otwarcie centrum oprogramowania i wybranie opcji edytuj> źródła oprogramowania ...
wszystko, co musisz zrobić, to odznaczyć repozytoria, od których nie chcesz aktualizacji.
Mam nadzieję że to pomoże
źródło
Oczywistym wyborem jest zmodyfikowanie
/etc/apt/sources.list
i skomentowanie wszystkich innych repozytoriów, a następnie uruchomienieA następnie usuń komentarze z
sources.list
. Może nie jest to najlepszy sposób, ale przynajmniejapt-get
strony podręcznika nie określają żadnego sposobu, aby to zrobić.Z uwagi na to, na przykład proces aktualizacji dystrybucji Ubuntu wyłącza wszystkie repozytoria stron trzecich podczas aktualizacji (i nie uruchamia tylko niektórych opcji, aby tymczasowo je wykluczyć).
źródło
Inną opcją GUI jest wybranie źródła w menedżerze pakietów Synaptic.
źródło