Как найти список всех доступных пакетов вместе с номером последней версии, доступной в репозиториях?

Я хочу перечислить все пакеты ( установлены или не установлены ) вместе с номером последней версии, доступной в репозиториях.

Например:

Вывод apt-cache policy chromium-browser показан примерно так

$ apt-cache policy chromium-browser
chromium-browser:
  Installed: (none)
  Candidate: 34.0.1847.116-0ubuntu2
  Version table:
     34.0.1847.116-0ubuntu2 0
        500 http://ftp.cuhk.edu.hk/pub/Linux/ubuntu/ trusty/universe amd64 Packages

. Таким образом, последняя версия пакета chromium-browser, доступная в репозитории, - 34.0.1847.116-0ubuntu2. Таким образом, я хочу перечислить номер версии вместе с именами пакетов, которые доступны в репозиториях. И все, что я хочу сделать это через командную строку.

Я хочу, чтобы вывод был таким,

chromium-browser 34.0.1847.116-0ubuntu2
xxxxxxxxxxxxxx   yyyyyyyyyyy
............     ............
1
задан 29 May 2014 в 18:47

4 ответа

apt-cache policy '.*' дисплеи детализировали информацию о версии для всех пакетов.

, Если Вы хотите более компактный вывод с одной строкой на пакет, можно использовать способность. Доступные версии следующих списков команд (см. руководство для спецификации выходного формата ) для всех пакетов кроме перекрестной архитектуры (например, 32-разрядных пакетов в 64-разрядной системе) (см. руководство для шаблоны поиска ):

aptitude search -F '%54p %24V' '~rnative'
0
ответ дан 29 May 2014 в 18:47

apt-cache dump

N.B.: Это - очень крупносерийное производство. Вы захотите использовать пейджер как less или перенаправить этот вывод в файл.

0
ответ дан 29 May 2014 в 18:47

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

for i in $(apt-cache search all | awk -F' - ' '{print $1}'); do apt-cache policy $i | sed -n '1,3p' | sed ':a;N;s/\n//g;ba'; done | awk '{print $1,$5}'

Пример:

$ for i in $(apt-cache search all | awk -F' - ' '{print $1}'); do apt-cache policy $i | sed -n '1,3p' | sed ':a;N;s/\n//g;ba'; done | awk '{print $1,$5}'
acpica-tools: 20140214-1ubuntu1
acpid: 1:2.0.21-1ubuntu2
activity-log-manager: 0.9.7-0ubuntu14
adduser: 3.113+nmu3ubuntu3
advancecomp: 1.18-1
aide: 0.16~a2.git20130520-2
aide-common: 0.16~a2.git20130520-2
alembic: 0.6.2+ds-1
alien: 8.90
alsa-base: 1.0.25+dfsg-0ubuntu4
amavisd-new: 1:2.7.1-2ubuntu3
anacron: 2.3-20ubuntu1
android-headers: 4.2.2-2-0ubuntu1
android-tools-fsutils: 4.2.2+git20130218-3ubuntu23
antlr: 2.7.7+dfsg-5
apache2: 2.4.7-1ubuntu4
apache2-bin: 2.4.7-1ubuntu4
apache2-dev: 2.4.7-1ubuntu4
apache2-mpm-event: 2.4.7-1ubuntu4
apache2-mpm-prefork: 2.4.7-1ubuntu4
apache2-mpm-worker: 2.4.7-1ubuntu4
apache2-utils: 2.4.7-1ubuntu4
apache2.2-bin: 2.4.7-1ubuntu4
apg: 2.2.3.dfsg.1-2ubuntu1
^C

я беру первый пакет и затем делаю apt-cache policy, на котором, он отображает тот же номер версии, как отображено вышеупомянутым for команда,

$ apt-cache policy acpica-tools
acpica-tools:
  Installed: (none)
  Candidate: 20140214-1ubuntu1
  Version table:
     20140214-1ubuntu1 0
        500 http://ftp.cuhk.edu.hk/pub/Linux/ubuntu/ trusty/main amd64 Packages
0
ответ дан 29 May 2014 в 18:47

Это, кажется, выполняет то, что Вы спрашиваете.

gawk '/^Package:/{printf $2 "\t"} /^Version:/{print $2}' /var/lib/dpkg/available

Это должно быть несколько быстрее, чем парсинг вывода другой команды также. Если Вы хотите смешать с форматированием (для package: version, — отмечают, что это не то, что Ваш вопрос просит), можно изменить первое printf на:

printf $2 ": "
0
ответ дан 29 May 2014 в 18:47

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

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