Czy istnieje sposób na wybieranie pakietów Cherry z repozytorium ppa, które dodajesz? To znaczy, aby wykluczyć niektóre z aktualizacji, włączając inne?
Na przykład chcę tylko pakiet przeglądarki chromu z tego repozytorium, ale nie innych. Więc nie chcę, sudo apt-get upgrade
żeby inne ppa (oprócz przeglądarki chromu) instalowały się na moich istniejących, tylko tym.
Zdaję sobie sprawę, że jest to licencja na strzelanie sobie w stopę, jeśli źle odczytam zależności i wykluczę te, które są potrzebne do tych, które załączyłem, ale wiem na pewno, że w tym przypadku inne pakiety nie są zależnościami dla tego.
Czy to w ogóle możliwe? Może jest jakiś plik białej / czarnej listy lub coś takiego?
Odpowiedzi:
Znalazłem jeden sposób, aby to zrobić.
Sztuczka polega na użyciu dwóch klauzul przypinających. Pierwszy nie zezwala na WSZYSTKIE pakiety z PPA, a drugi wybiera te, które chcesz.
W powyższym przykładzie najpierw dodaję ppa jak zwykle:
Teraz, jeśli uruchomię politykę apt-cache, pokaże mi, że dostępna jest nowsza wersja przeglądarki chromu i że zainstaluje się z aktualizacją, ponieważ ma ten sam priorytet (500), co moja obecna przeglądarka chromu.
To świetnie, o ile ten pakiet, ale nie chcę instalować innych w tym ppa (które mają również priorytet 500). W tej chwili, jeśli spróbuję zaktualizować, otrzymam więcej niż tylko pakiety chromu, które chcę z tego repozytorium:
Mogę więc powiedzieć aptowi, że chcę, aby wszystkie pakiety w tym ppa, w tym przypadku podgląd aplikacji internetowych, miały niższy priorytet, z wyjątkiem tych z „chromem” w nazwie. Mechanizmem tego jest przypinanie paczki
Plik tworzę w /etc/apt/preferences.d/ z dwoma klauzulami. Pierwszy mówi, że nadaj wszystkim pakietom ppa podglądu webapps niższy priorytet niż zwykły (tak, że nie są one preferowane, nawet jeśli mają wyższy numer wersji. Druga klauzula częściowo zastępuje pierwszy, mówiąc, że daj pakiety w ten ppa z „chromem” w nazwie ma ten sam priorytet co inne pakiety, aby został zainstalowany (dzięki temu, że ma wyższy numer wersji).
Aby zidentyfikować poprawny ciąg dla opcji „Pin: release”, możemy ponownie użyć polityki apt-cache.
W przypadku wersji apt <0.8.14 należy wyraźnie określić przypięte pakiety, ponieważ symbole wieloznaczne nie działają:
A teraz, kiedy próbuję zaktualizować, otrzymuję tylko te pakiety, których chcę od tego ppa, a nie innych. Wszystko ładnie wybrane dla mnie:
źródło
Za pomocą
?origin
selektora możesz również wybrać wersję, z której chcesz zainstalować :W konkretnym przypadku możesz użyć:
Lub możesz określić wersję za pomocą
<packagename>=<version>
:źródło
Możesz faktycznie „wybrać” niektóre pakiety za pośrednictwem Synaptic i jest to bardzo łatwe. Działa to tak:
Jeśli chcesz to zrobić tylko dla niektórych PPA, wybierz „Pochodzenie” (lewy dolny róg) w oknie Synaptic, a następnie wybierz PPA, który chcesz zmienić
wybierz wszystkie pakiety, których nie chcesz już automatycznie aktualizować.
wybierz menu „Wersja pakietu / blokady”. Wszystkie wybrane pakiety nie będą już aktualizowane automatycznie, dopóki nie odblokujesz ich ponownie.
źródło