Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-05-09 23:32:11

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

[SOLVED] APT: Pin ignoruje wartości większe niż 999?

Ponieważ w LibreOffice 4.0 zepsuli opcje, których potrzebuję, planuję pozostać przy 3.6.5 tak długo, jak to możliwe (i konieczne). Chciałem sobie przy pomocy preferences ustawić APT tak, aby posiadana przeze mnie wersja zawsze miała najwyższy priorytet.

W katalogu preferences.d mam dwa pliki:

Kod:

$ cat /etc/apt/preferences.d/01_releases 
Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 600

Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: 400

Package: *
Pin: release o=Debian,a=experimental
Pin-Priority: 102

Kod:

$ cat /etc/apt/preferences.d/10_LibreOffice 
Package: libreoffice* ure uno-libs3
Pin: version 3.6.5~rc2-1+b1
Pin-Priority: 999

Poza tym w apt.conf mam wpis, który chyba to dubluje:

Kod:

$ cat /etc/apt/apt.conf.d/02default-release 
APT::Default-Release "testing";

Póki co jest dobrze — APT preferuje moją wersję, chociaż w repozytorium ma nowsze:

Kod:

$ apt-cache policy libreoffice
libreoffice:
  Zainstalowana: 1:3.6.5~rc2-1+b1
  Kandydująca:   1:3.6.5~rc2-1+b1
  Sposób przypięcia: (nie znaleziono)
  Tabela wersji:
     1:4.0.3-1 999
        400 http://ftp.pl.debian.org/debian/ unstable/main amd64 Packages
     1:4.0.3~rc3-1 999
        102 http://ftp.pl.debian.org/debian/ experimental/main amd64 Packages
 *** 1:3.6.5~rc2-1+b1 999
        100 /var/lib/dpkg/status
     1:3.5.4+dfsg-4 999
        990 http://ftp.pl.debian.org/debian/ testing/main amd64 Packages

Zgodnie z dokumentacją apt_preferences, najwyższym priorytetem jest „P >= 1000”, który wymusza instalację danej wersji zawsze i wszędzie — nawet jeżeli oznacza to powrót do wcześniejszej wersji.

Jak teraz w pliku /etc/apt/preferences.d/10_LibreOffice zamienię Pin-Priority na 1001, to APT radośnie stwierdza, że wersja z Wheezy jest najlepszą możliwą i najchętniej dokonałby downgrade (patrzcie na „Kandydująca”):

Kod:

$ apt-cache policy libreoffice
libreoffice:
  Zainstalowana: 1:3.6.5~rc2-1+b1
  Kandydująca:   1:3.5.4+dfsg-4
  Sposób przypięcia: (nie znaleziono)
  Tabela wersji:
     1:4.0.3-1 1001
        400 http://ftp.pl.debian.org/debian/ unstable/main amd64 Packages
     1:4.0.3~rc3-1 1001
        102 http://ftp.pl.debian.org/debian/ experimental/main amd64 Packages
 *** 1:3.6.5~rc2-1+b1 1001
        100 /var/lib/dpkg/status
     1:3.5.4+dfsg-4 1001
        990 http://ftp.pl.debian.org/debian/ testing/main amd64 Packages

Potrafi ktoś to wyjaśnić? Wygląda to tak, jak gdyby APT ignorował priorytety wyższe niż 999, ale najprawdopodobniej po prostu nie rozumiem, jak on działa.

System to właściwie Wheezy — co prawda używam testinga, ale od tygodnia nie robiłem aktualizacji. Wersje ważnych pakietów poniżej:

Kod:

$ dpkg -l |grep -P '(dpkg|apt)\b' | while read state pkg version other; do echo "$pkg: $version" ; done
apt: 0.9.7.8
apt-file: 2.5.1
apt-listchanges: 2.85.11
apt-show-versions: 0.20
apt-utils: 0.9.7.8
dpkg: 1.16.10
dpkg-dev: 1.16.10
libapt-inst1.5:amd64: 0.9.7.8
libapt-pkg-perl: 0.1.26+b1
libapt-pkg4.12:amd64: 0.9.7.8
libdpkg-perl: 1.16.10
python-apt: 0.8.8.2
python-apt-common: 0.8.8.2

Ostatnio edytowany przez Minio (2013-05-10 12:32:54)

Offline

 

#2  2013-05-10 00:57:58

  yossarian - Szczawiożerca

yossarian
Szczawiożerca
Skąd: Shangri-La
Zarejestrowany: 2011-04-25

Re: [SOLVED] APT: Pin ignoruje wartości większe niż 999?

Porównaj wersje:

$ cat /etc/apt/preferences.d/10_LibreOffice
Package: libreoffice* ure uno-libs3
Pin: version 3.6.5~rc2-1+b1
Pin-Priority: 999

$ apt-cache policy libreoffice
libreoffice:
  Zainstalowana: 1:3.6.5~rc2-1+b1
  Kandydująca:   1:3.6.5~rc2-1+b1
  Sposób przypięcia: (nie znaleziono)

Z jedynką jest to samo?

Offline

 

#3  2013-05-10 12:32:32

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: [SOLVED] APT: Pin ignoruje wartości większe niż 999?

Masz rację.

Byłem przekonany, że APT traktuje brak epoch (liczby przed dwukropkiem) jako 1. Tymczasem on traktuje brak jako 0. Tak więc mój pin pasował do pakietów 0:3.6.5~rc2-1+b1, czyli nigdzie. Po zamianie wersji na 1:3.6.5~rc2-1+b1 wszystko działa jak należy.

Dziękuję za pomoc.

Offline

 

#4  2013-05-10 12:42:12

  yossarian - Szczawiożerca

yossarian
Szczawiożerca
Skąd: Shangri-La
Zarejestrowany: 2011-04-25

Re: [SOLVED] APT: Pin ignoruje wartości większe niż 999?

Wiem co to epoch ;)

Tu akurat łatwo było na to wpaść:

Sposób przypięcia: (nie znaleziono)

Offline

 

#5  2013-05-10 13:10:46

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: [SOLVED] APT: Pin ignoruje wartości większe niż 999?

yossarian: nie wątpię, że wiesz. Wyjaśnienie podałem raczej z myślą o tych, którzy nie wiedzą, a trafią na ten wątek np. z wyszukiwarki. Zwłaszcza że w Linuksie epoch zazwyczaj odnosi się do czasu (gdzie zresztą funkcjonuje w dwóch różnych znaczeniach), a tutaj chodzi o coś zupełnie innego.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)