LINUX.ORG.RU

Несколько вопросов по apt

 , ,


1

1

Категорически всех приветствую. Возникло пару вопросов по apt/aptitude. В общем, года 2-3 пользуюсь дебианом на десктопе, сначала сидел на testing/sid, месяца 3 назад решил что останусь на стабильной ветке jessie. Обновлялся всегда через aptitude update/install. Некоторые пакеты я вручную из аптитуды ставил из сида, например fglrx-driver. Вручную для fglrx пины не прописывал нигде, только выбрал в аптитуде последнюю версию. И вот, сейчас я сделал aptitude update, и вижу что он предлагает мне обновить fglrx-driver на 15-ю версию, что из сида. В stable/jessie - 14-я:

https://packages.debian.org/search?searchon=names&keywords=fglrx-driver

Тот же vim, например, обновить он не предлагает, стоит версия из stable/jessie.

Вот и вопрос - получается aptitude где-то запомнил, что я вручную ставил версию из сида и теперь берёт обновления оттуда?

И ещё один вопрос. Никогда не делал dist-upgrade, нужен ли он вообще?

Вот немного информации:

root@indvdum-desktop:~# cat /etc/apt/apt.conf
APT::Default-Release "jessie";
root@indvdum-desktop:~# cat /etc/apt/sources.list
# stable
deb http://ftp.ru.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.ru.debian.org/debian/ stable main contrib non-free

deb http://security.debian.org/ stable/updates main
deb-src http://security.debian.org/ stable/updates main

# stable-updates, previously known as 'volatile'
deb http://ftp.ru.debian.org/debian/ stable-updates main
deb-src http://ftp.ru.debian.org/debian/ stable-updates main

# testing
deb http://ftp.ru.debian.org/debian testing main contrib non-free
deb http://security.debian.org/ testing/updates main non-free 
deb-src http://security.debian.org/ testing/updates main non-free

# unstable
deb http://ftp.ru.debian.org/debian unstable main contrib non-free
deb-src http://ftp.ru.debian.org/debian unstable main contrib non-free

# experimental
deb http://ftp.ru.debian.org/debian experimental main contrib non-free
deb-src http://ftp.ru.debian.org/debian experimental main contrib non-free

# wheezy-backports
deb http://http.debian.net/debian wheezy-backports main contrib non-free

# snapshot for fglrx
# deb     http://snapshot.debian.org/archive/debian/20140917/ stable main contrib non-free
# deb     http://snapshot.debian.org/archive/debian/20140917/ testing main contrib non-free
# deb     http://snapshot.debian.org/archive/debian/20140917/ unstable main contrib non-free
# deb     http://snapshot.debian.org/archive/debian/20140917/ experimental main contrib non-free
root@indvdum-desktop:~# ls /etc/apt/preferences.d/
autofs
root@indvdum-desktop:~# cat /etc/apt/preferences.d/*
Package: autofs
Pin: release a=stable
Pin-Priority: 1001
root@indvdum-desktop:~# apt-cache policy fglrx-driver 
fglrx-driver:
  Установлен: 1:14.12-2
  Кандидат:   1:15.5-1
  Таблица версий:
     1:15.5-1 0
        500 http://ftp.ru.debian.org/debian/ unstable/non-free amd64 Packages
 *** 1:14.12-2 0
        100 /var/lib/dpkg/status
     1:14.9+ga14.201-2 0
        990 http://ftp.ru.debian.org/debian/ stable/non-free amd64 Packages
     1:14.9+ga14.201-2~bpo70+1 0
        100 http://http.debian.net/debian/ wheezy-backports/non-free amd64 Packages
root@indvdum-desktop:~# apt-cache policy vim
vim:
  Установлен: 2:7.4.488-7
  Кандидат:   2:7.4.488-7
  Таблица версий:
     2:7.4.712-3 0
        500 http://ftp.ru.debian.org/debian/ testing/main amd64 Packages
        500 http://ftp.ru.debian.org/debian/ unstable/main amd64 Packages
 *** 2:7.4.488-7 0
        990 http://ftp.ru.debian.org/debian/ stable/main amd64 Packages
        100 /var/lib/dpkg/status
     2:7.4.488-3~bpo70+1 0
        100 http://http.debian.net/debian/ wheezy-backports/main amd64 Packages

Да. Если несколько веток прописаны, то aptitude запоминает какие пакеты от какой ветки стоят

sehellion ★★★★★ ()
Ответ на: комментарий от orm-i-auga

А вот этого не подскажу. Не вникал в его работу, просто пользуюсь

sehellion ★★★★★ ()
P > 1000, то пакет будет установлен, даже если версия ниже текущей.
990 < P <=1000, то пакет будет установлен, даже если он не из используемого релиза, но новее текущего
500 < P <=990, то пакет будет установлен, если нет более нового текущего
100 < P <=500, то пакет будет установлен, если нет другой версии или более свежей версии
0 < P <=100, то пакет будет установлен, если нет любой другой версии
P < 0, то запрещается устанавливать любую версию пакета

Deleted ()

APT устанавливает/обновляет пакеты, глядя на их версии и приоритеты. В твоем случае:

1) Ни одна из веток дистрибутива не имеет приоритета выше 1000, поэтому даунгрейдить, то есть устанавливать пакет с меньшей версией, чем уже установлена, APT не будет. Таким образом, среди кандидатов у vim есть 2:7.4.488-7 и 2:7.4.712-3, а у fglrx-driver - только 1:15.5-1.

2) Далее, APT выбирает пакет из ветки с наибольшим приоритетом (если же максимум приоритетов достигается на нескольких ветках одновременно, то берется пакет с наибольшей версией из них). В твоем случае для vim это 2:7.4.488-7 (приоритет 990) и у fglrx-driver 1:15.5-1 (приоритет 500).

APT не запоминает, из какой ветки установлен пакет, но если в конфигурационном файле где-то указано что-то вроде APT::Default-Release «stable», то у всех веток, помеченных как stable, приоритет становится 990, и без особого повода обновляться пакеты не будут.

TeopeTuK ★★★ ()
Ответ на: комментарий от TeopeTuK

Так, получается, если ничего не менять, он прекратит обновлять fglrx-driver из sid/testing только когда локально установленная версия будет <= версии из stable. А это фактически может быть лишь после следующего релиза. Ладно, спасибо за разъяснение.

orm-i-auga ★★★★★ ()
Ответ на: комментарий от TeopeTuK

А по поводу dist-upgrade не подскажешь? Если я правильно понял, там другой алгоритм разрешения конфликтов, т.е. если у меня сейчас не возникает конфликтов при обычном обновлении, то и смысла в dist-upgrade нет?

orm-i-auga ★★★★★ ()
Ответ на: комментарий от orm-i-auga

Чтобы не обновлял вообще никакие пакеты из ветки unstable, можно этой ветке присвоить приоритет меньше 100 (в том, что я сказал выше, была неточность: всегда в список кандидатов включается и текущая установленная версия с приоритетом 100, поэтому если приоритет у какой-нибудь ветки меньше 100, то автоматического обновления с нее не будет никогда). Если нужно зафиксировать только один пакет, то можно либо ему приоритет «пришпилить» прямо к версии (/etc/apt/preferences.d/somename):

Package: fglrx-driver
Pin: version 1:14.12-2
Pin-Priority: 1001
либо его «задержать»:
echo fglrx-driver hold | dpkg --set-selections
Главное, потом не удивляться, когда будет осуществляться глобальное обновление, а этот пакет так и останется необновленным.

TeopeTuK ★★★ ()
Ответ на: комментарий от orm-i-auga

смысла в dist-upgrade нет?

Смысл есть, но на stable это требуется редко. Лично я на любой ветке использую dist-upgrade (в новой утилите - full-upgrade).

anonymous ()
Ответ на: комментарий от orm-i-auga

dist-upgrade выбирает пакеты для обновления ровно таким же образом. Разница с upgrade в том, что upgrade ни при каких обстоятельствах не удаляет пакеты при обновлении, а dist-upgrade удаляет. Если возникает необходимость удалить пакет foo, чтобы обновить пакет bar (скажем, новая версия bar конфликтует с foo), то upgrade откажется обновлять пакет bar, а dist-upgrade удалит пакет foo и обновит пакет bar.

TeopeTuK ★★★ ()
Ответ на: комментарий от TeopeTuK

Если возникает необходимость удалить пакет foo, чтобы обновить пакет bar (скажем, новая версия bar конфликтует с foo), то upgrade откажется обновлять пакет bar, а dist-upgrade удалит пакет foo и обновит пакет bar.

Вот оно что, а я это иногда делал вручную, когда возникала такая ситуация — выбирал в аптитуде такой способ решения конфликта. Ладно, тогда всё еще проще.

orm-i-auga ★★★★★ ()
Ответ на: комментарий от anonymous

Хм, то что конфликты не всегда адекватно решает это ладно. А вот отсутствие флага автоматически установленных пакетов это плохо. Aptitude мне нравилась прежде всего псевдографическим интерфейсом. Надо посмотреть что ещё есть.

orm-i-auga ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.