Я хочу сбросить все установленные пакеты в системе, которая использует 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).
Вот что я хотел бы улучшить:
ii
) следует удалить или появиться в конце.В системах на основе rpm rpm -qa
делает именно то, что мне нужно.
Пытаться
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