Что такое “Автоматический Источник” в depcache.cc в пакете исходного кода Кв.?

при просмотре исходного кода для способного диспетчера пакетов я хотел узнать внутреннюю логику pkgDepCache::Policy::GetCandidateVer функция.

pkgCache::VerIterator pkgDepCache::Policy::GetCandidateVer(PkgIterator const &Pkg)
{
   /* Not source/not automatic versions cannot be a candidate version 
      unless they are already installed */
   VerIterator Last(*(pkgCache *)this,0);

   for (VerIterator I = Pkg.VersionList(); I.end() == false; ++I)
   {
      if (Pkg.CurrentVer() == I)
     return I;

      for (VerFileIterator J = I.FileList(); J.end() == false; ++J)
      {
     if ((J.File()->Flags & Flag::NotSource) != 0)
        continue;

     /* Stash the highest version of a not-automatic source, we use it
        if there is nothing better */
     if ((J.File()->Flags & Flag::NotAutomatic) != 0 ||
         (J.File()->Flags & Flag::ButAutomaticUpgrades) != 0)

      ...

Что такое "автоматическая версия" и "автоматический источник" здесь?

1
задан 6 September 2017 в 17:16

1 ответ

Источник для Кв., как дали в Кв. sources.list например, может иметь a Release файл, который указывает различные свойства источника. Например, Release файл Ubuntu назад порты для 16,04:

Origin: Ubuntu
Label: Ubuntu
Suite: xenial-backports
Version: 16.04
Codename: xenial
Date: Wed, 06 Sep 2017 14:06:49 UTC
Architectures: amd64 arm64 armhf i386 powerpc ppc64el s390x
Components: main restricted universe multiverse
Description: Ubuntu Xenial Backports
NotAutomatic: yes
ButAutomaticUpgrades: yes
MD5Sum:
 f1647057d0c93fc58961ea0d03f5e524           244120 Contents-powerpc

Отметьте последние несколько полей в замеченном здесь. Это - те же, протестированные в том коде. Автоматический источник - тот в который NotAutomatic не yes. Эти поля используются для присвоения приоритета по умолчанию к источникам Кв. От man apt_preferences:

   If the target release has been specified then APT uses the following
   algorithm to set the priorities of the versions of a package. Assign:

   priority 1
       to the versions coming from archives which in their Release files
       are marked as "NotAutomatic: yes" but not as "ButAutomaticUpgrades:
       yes" like the Debian experimental archive.

   priority 100
       to the version that is already installed (if any) and to the
       versions coming from archives which in their Release files are
       marked as "NotAutomatic: yes" and "ButAutomaticUpgrades: yes" like
       the Debian backports archive since squeeze-backports.

Можно читать больше о том, как эти приоритеты используются Кв. в странице справочника.

Теперь, в первом комментарии, "не источник" означает версию пакета, которая не является из способного источника (запись в sources.list, например). Это было бы версией, это уже установлено, таким образом, информация прибывает из /var/lib/dpkg/status (можно проверить вывод apt-cache policy чтобы установленный пакет видел это). "Не автоматические версии" из источника, это отмечено NotAutomatic как описано выше. Такие источники называют "не автоматическими" во втором комментарии.

1
ответ дан 7 December 2019 в 15:30

Другие вопросы по тегам:

Похожие вопросы: