Сортируемый список всех пакетов (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