Как найти конкретный файл информации о состоянии `* Release` для данного пакета?

Мне нужно программно собрать информацию apt Origin и Suite для определенного пакета, чтобы настроить unattended-upgrades.

Я могу вручную найти соответствующий файл информации о состоянии apt и затем обработать его, однако мне нужно автоматизировать этот процесс.

Например, если I:

  • добавить PPA ppa:qbittorrent-team/qbittorrent-stable
  • install qbittorrent-nox

среди других файлов, apt будет создать /var/lib/apt/lists/ppa.launchpad.net_qbittorrent-team_qbittorrent-stable_ubuntu_dists_xenial_InRelease, это файл, который я ищу.

Я пытался с apt-cache showpkg qbittorrent-nox, но это дает .../ppa.launchpad.net_qbittorrent-team_qbittorrent-stable_ubuntu_dists_xenial_main_binary-armhf_Packages, что не то, что я ищу.

Существует ли точный программный способ найти имя файла *Release, начиная с пакета?

0
задан 7 September 2019 в 15:44

1 ответ

На основе исследования я сделал, нет никакого прямого способа решить эту проблему.

Однако согласно документ формата репозитория Debian, именование информационных файлов состояния имеет точные правила, которые могут использоваться.

Поэтому можно найти пакет _Packages соответствующее имя файла через apt-cache showpkg, затем обработать его согласно правилам формата репозитория:

  • , если respository имеет компонент, имя будет иметь суффикс _<component>_binary-<arch>_Packages
  • иначе, суффикс будет всего _Packages

затем:

  • заменяют суффикс _InRelease и тестируют получающееся имя файла
  • , если файл существует, весь сделанный
  • в противном случае заменяют суффикс Release (который является альтернативным именованием для файлов состояния с внешней подписью)
0
ответ дан 23 October 2019 в 02:55

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

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