Что означает компонент или архив "сейчас" в apt Python API?
У меня есть скрипт Python, работающий на Ubuntu. Скрипт получает все установленные пакеты apt с
apt_cache = apt.cache.Cache()
Я хочу получить имена хранилищ каждого установленного пакета. В то время как я ожидаю увидеть xenial / main, xenial / universe, xenial-updates / main и т. Д., Некоторые из пакетов имеют сейчас / сейчас имя репозитория.
('linux-headers-generic', [<Origin component:'now' archive:'now' origin:'' label:'' site:'' isTrusted:False>])
Большинство других пакетов, как:
('zip', [<Origin component:'main' archive:'xenial' origin:'Ubuntu' label:'Ubuntu' site:'de.archive.ubuntu.com' isTrusted:True>, <Origin component:'now' archive:'now' origin:'' label:'' site:'' isTrusted:False>])
Что значит сейчас здесь?
1 ответ
Выискивая исходный код, значения становятся now
когда версия от dpkg status
файл, в котором не указано, откуда изначально был получен пакет. Таким образом, вы увидите версию с архивом now
для любого пакета, который в настоящее время установлен. Вы также можете увидеть это в выводе apt-cache policy
:
$ apt-cache policy
Package files:
100 /var/lib/dpkg/status
release a=now
...
Например:
$ apt-cache policy apt
apt:
Installed: 1.2.25
Candidate: 1.2.25
Version table:
*** 1.2.25 500
500 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
100 /var/lib/dpkg/status
И установленная версия будет иметь эти истоки в API:
<Origin component:'main' archive:'xenial-updates' origin:'Ubuntu' label:'Ubuntu' site:'jp.archive.ubuntu.com' isTrusted:True>
<Origin component:'now' archive:'now' origin:'' label:'' site:'' isTrusted:False>
Тем не менее, если вы получаете версию с now
как единственное происхождение, это означает, apt
не может найти его в любом источнике. Это может произойти для:
- установленная версия, которой больше нет ни в одном источнике (время для обновления!)
- пакет, установленный с использованием файла deb, без соответствующего пакета в репозиториях
- пакет, установленный из источника, который впоследствии был отключен