Я хочу перечислить все пакеты ( установлены или не установлены ) вместе с номером последней версии, доступной в репозиториях.
Например:
Вывод 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
............ ............
apt-cache policy '.*'
дисплеи детализировали информацию о версии для всех пакетов.
, Если Вы хотите более компактный вывод с одной строкой на пакет, можно использовать способность. Доступные версии следующих списков команд (см. руководство для спецификации выходного формата ) для всех пакетов кроме перекрестной архитектуры (например, 32-разрядных пакетов в 64-разрядной системе) (см. руководство для шаблоны поиска ):
aptitude search -F '%54p %24V' '~rnative'
apt-cache dump
N.B.: Это - очень крупносерийное производство. Вы захотите использовать пейджер как less
или перенаправить этот вывод в файл.
Ниже команды перечислит все доступные пакеты наряду с их числами последней версии, доступными в репозиториях.
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
Это, кажется, выполняет то, что Вы спрашиваете.
gawk '/^Package:/{printf $2 "\t"} /^Version:/{print $2}' /var/lib/dpkg/available
Это должно быть несколько быстрее, чем парсинг вывода другой команды также. Если Вы хотите смешать с форматированием (для package: version
, — отмечают, что это не то, что Ваш вопрос просит), можно изменить первое printf
на:
printf $2 ": "