Сортируемый список всех пакетов (dpkg)

Я хочу сбросить все установленные пакеты в системе, которая использует dpkg,

До сих пор пользуюсь dpkg -l,

Но у этого есть один недостаток: сортировка результата не имеет смысла.

Голова:

root@aptguettler:~# LANG=C dpkg-query -l| sort | head
+++-===========================================================-=================================================-============-================================================================================
Desired=Unknown/Install/Remove/Purge/Hold
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
ii  a11y-profile-manager-indicator                              0.1.10-0ubuntu3                                   amd64        Accessibility Profile Manager - Unity desktop indicator

Хвост:

root@aptguettler:~# LANG=C dpkg-query -l| sort | tail
rc  texlive-publishers-doc                                      2015.20160320-1                                   all          TeX Live: Documentation files for texlive-publishers
rc  texlive-science                                             2015.20160320-1                                   all          TeX Live: Natural and computer sciences
rc  texlive-science-doc                                         2015.20160320-1                                   all          TeX Live: Documentation files for texlive-science
rc  tpconfig                                                    3.1.3-15                                          amd64        touchpad device configuration utility
rc  ttf-indic-fonts-core                                        1:0.5.14ubuntu1                                   all          Core collection of free fonts for languages of India
rc  ttf-punjabi-fonts                                           1:0.5.14ubuntu1                                   all          Free TrueType fonts for the Punjabi language
rc  unity-lens-friends                                          0.1.3+14.04.20140317-0ubuntu1                     amd64        Friends scope for unity
rc  webaccounts-extension-common                                0.5-0ubuntu2.14.04.1                              amd64        Ubuntu Online Accounts browser extension - common files
rc  xfonts-mathml                                               6ubuntu1                                          all          Type1 Symbol font for MathML
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend

Я веду историю этого выхода через etckeeper (Связанный вопрос с выходом журнала ответов hwinfo с помощью etckeeper).

Вот что я хотел бы улучшить:

  • Линии ascii-art не хороши. Должен быть удален.
  • Первые два символа (например, ii) должны быть удалены или появиться в конце.

В системах, основанных на оборотах rpm -qa делает именно то, что мне нужно.

1 ответ

Решение

Пытаться

dpkg --get-selections | grep -v deinstall

Если вам нужна точная версия пакетов в выводе, вы можете сделать:

dpkg -l | grep '^ii' | awk '{print $2 "\t" $3}'

Это печатает только столбцы 2 и 3. Это также только список установленных пакетов, без удаления или других.

Редактировать: Другой вариант - dpkg-query:

dpkg-query --show --showformat='${Package} ${Version}  ${Architecture} ${db:Status-Abbrev} \n'

Где --showformat (или -f) определяет, какие столбцы вы хотите отобразить, в данном случае имя пакета, версию и архитектуру, а также краткий статус (например, "ii" и "rc") в конце, "\n" это разрыв строки.

Кстати, "ii" определяет установленные пакеты, "rc" - это неустановленные пакеты, поэтому я использовал grep и awk для фильтрации неустановленных пакетов.

Если вам кажется, что вы можете добавить ширину столбца, вот так:

dpkg-query --show --showformat='${Package;-50} ${Version;-40}  ${Architecture;-5} ${db:Status-Abbrev} \n'

Отрицательная ширина столбца означает ориентацию слева, положительная означает право.

Будьте осторожны, так как имя пакета будет сокращено, если ширина меньше количества символов в имени пакета.

Я не совсем уверен, для каких целей вам нужен список. Если вы просто хотите иметь хорошо читаемый список, нет ничего плохого в awk или других командах, если вы хотите иметь "резервную копию" вашего программного обеспечения для установки на другой компьютер, dpkg --get-selections (без каких-либо трубопроводов) это путь, см. https://wiki.debian.org/ListInstalledPackages

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