Debian Stretch хочет обновить основные пакеты после включения бэкпортов

Debian Stretch хочет обновить основные пакеты после включения бэкпортов

Certbotтребует, чтобы я активировал stretch-backports для его установки. Так что после того, как

$ cat /etc/apt/sources.list.d/backports.list
deb http://ftp.debian.org/debian stretch-backports main

и делая sudo apt updateя получаю

$ apt list --upgradable
Listing... Done
libpam-systemd/stretch-backports 237-3~bpo9+1 amd64 [upgradable from: 232-25+deb9u3]
libsystemd0/stretch-backports 237-3~bpo9+1 amd64 [upgradable from: 232-25+deb9u3]
libudev1/stretch-backports 237-3~bpo9+1 amd64 [upgradable from: 232-25+deb9u3]
systemd/stretch-backports 237-3~bpo9+1 amd64 [upgradable from: 232-25+deb9u3]
systemd-sysv/stretch-backports 237-3~bpo9+1 amd64 [upgradable from: 232-25+deb9u3]
udev/stretch-backports 237-3~bpo9+1 amd64 [upgradable from: 232-25+deb9u3]

$ sudo apt upgrade
[...]
The following packages have been kept back:
  systemd-sysv
The following packages will be upgraded:
  libpam-systemd libsystemd0 libudev1 systemd udev
5 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Need to get 4,795 kB of archives.
After this operation, 2,540 kB of additional disk space will be used.
Do you want to continue? [Y/n]

Похоже, что он действительно продолжит обновлять упомянутые пакеты.

Однако, изэтот ответ, Я цитирую:

Пакеты из бэкпортов никогда не являются допустимыми кандидатами на установку для обновления из основных репозиториев, только для обновления с предыдущей версии бэкпортированного пакета; поэтому, хотя apt list --upgradableон и указан как обновляемый пакет, apt upgradeон не будет рассматриваться для обновления. Вы можете увидеть это в выводеapt-cache policy

Итак, проверка

$ apt policy systemd
systemd:
  Installed: 232-25+deb9u3
  Candidate: 237-3~bpo9+1
  Version table:
     237-3~bpo9+1 100
        100 http://ftp.debian.org/debian stretch-backports/main amd64 Packages
 *** 232-25+deb9u3 100
        100 /var/lib/dpkg/status
     232-25+deb9u2 500
        500 http://ftp.debian.org/debian stretch/main amd64 Packages

похоже, что версия backports подходит для обновления.

Как включить обновление с бэкпортов только для тех пакетов, которые изначально были установлены с бэкпортов (т.е. через apt -t stretch-backports)?

ИЗМЕНИТЬ: Мойsources.list

$ cat /etc/apt/sources.list
deb http://ftp.debian.org/debian stretch main
deb-src http://ftp.debian.org/debian stretch main

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

решение1

Вам не нужно ничего включать, чтобы обеспечить документированное поведение для backports, но вам нужно убедиться, что система знает, откуда берутся ваши установленные пакеты. В вашем случае у вас есть версия from systemd, stretch/updatesно ваши источники не ссылаются на нее, поэтому aptвыдает установленной версии systemdоценку 100, которая меньше или равна оценке backports (см. ваш apt policyвывод).

Чтобы исправить это, убедитесь, что у вас /etc/apt/sources.listесть записи для stretch-updates, что-то вроде

deb http://ftp.debian.org/debian stretch-updates main
deb-src http://ftp.debian.org/debian stretch-updates main

Затем вы должны увидеть apt policy systemdследующие результаты:

systemd:
  Installed: 232-25+deb9u3
  Candidate: 232-25+deb9u3
  Version table:
     237-3~bpo9+1 100
        100 http://ftp.debian.org/debian stretch-backports/main amd64 Packages
 *** 232-25+deb9u3 500
        500 http://ftp.debian.org/debian stretch-updates/main amd64 Packages
        100 /usr/var/lib/dpkg/status
     232-25+deb9u2 500
        500 http://ftp.debian.org/debian stretch/main amd64 Packages

Связанный контент