Как я получаю реальное имя пакета и версию для псевдо пакета?

Как я получаю реальное полное имя пакета (включая версию), который был бы установлен, если бы я работал apt-get install pseudo-package-name?

Это связано с этим предыдущим вопросом: Получить версию ядра от lts пакета?

Пример:

apt-get install linux-image-generic-lts-trusty

установил бы (с прямо сейчас на моем 32-разрядном Испытанном сервере):

linux-image-3.13.0-35-generic

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

$ sudo apt-get install -qqs linux-image-generic-lts-trusty
Inst linux-image-generic-lts-trusty (3.13.0.35.42 Ubuntu:14.04/trusty-updates [i386])
Conf linux-image-generic-lts-trusty (3.13.0.35.42 Ubuntu:14.04/trusty-updates [i386])
$ apt-cache depends linux-image-generic-lts-trusty
linux-image-generic-lts-trusty
  Depends: linux-image-generic
$ apt-cache depends linux-image-generic
linux-image-generic
  Depends: linux-image-3.13.0-35-generic
  Depends: linux-image-extra-3.13.0-35-generic
  Depends: linux-firmware
$ apt-cache policy linux-image-generic-lts-trusty
linux-image-generic-lts-trusty:
  Installed: (none)
  Candidate: 3.13.0.35.42
  Version table:
     3.13.0.35.42 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main i386 Packages
        500 http://security.ubuntu.com/ubuntu/ trusty-security/main i386 Packages
     3.13.0.24.28 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/main i386 Packages

После некоторого исследования/var/lib/{склонный, dpkg}, я relealized, что нет универсального, scriptable решения этой проблемы. Так, подобный ответам ниже от @mchid и @muru, я сделал это как это:

#!/bin/bash

metapackage=linux-image-generic-lts-trusty
linux_package_version=$(apt-cache policy $metapackage |\
    sed -nE '/Candidate:/ s,[^[:digit:]]*([[:digit:]\.]+)\.([[:digit:]]+)\.[[:digit:]]+,\1-\2,p')

apt-get download linux-headers-${linux_package_version}-generic linux-headers-${linux_package_version})
4
задан 13 April 2017 в 15:24

3 ответа

Во-первых, необходимо показать точно, какой пакет метапакет обеспечивает:

пример:

apt-cache show linux-image-generic-lts-trusty | grep Depends:

вывод:

Depends: linux-image-generic
Depends: linux-image-generic

Теперь при вводе определенного пакета метапакета Вы получите свой точный результат:

apt-cache show linux-image-generic | grep Depends:

вывод:

Depends: linux-image-3.13.0-35-generic, linux-image-extra-3.13.0-35-generic, linux-firmware
Depends: linux-image-3.13.0-24-generic, linux-image-extra-3.13.0-24-generic, linux-firmware

новейшая версия всегда устанавливается, если иначе не определено как в следующем примере:

sudo apt-get install linux-image-3.13.0-24-generic

, С другой стороны, если Вы просто хотите версию, Вы могли бы ввести следующую команду или изменение там вместо этого:

apt-cache show linux-image-generic-lts-trusty | grep Version:

вывод:

Version: 3.13.0.35.42
Version: 3.13.0.24.28
4
ответ дан 1 December 2019 в 09:09

Проблемой является зависимость:

linux-image-generic-lts-trusty
└── linux-image-generic
    └── linux-image-3.13.0-35-generic

из-за этого, Вы не можете непосредственно получить информацию, на которой будет установлен пакет. Необходимо будет использовать что-то как apt-rdepends .

3
ответ дан 1 December 2019 в 09:09

В целом Вы не можете. Существуют пакеты, такие как "почтовый клиент", которые не обеспечивают цепочку зависимости, которая может сопровождаться и разрешаться.

1
ответ дан 1 December 2019 в 09:09

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

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