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

Я использую Ubuntu 14.04 LTS, Надежный человек. Я хочу выполнить команду для списка всех установленных пакетов системы и для каждого имени пакетов, она должна перечислить все файлы, которые пакет установил в системе. как я могу сделать это?

2
задан 7 November 2016 в 15:22

3 ответа

Можно выполнить следующую команду для печати этой информации в терминале:

for i in $(echo $(apt list 2>&1| grep installed | sed 's|/.*$||g')); do echo $i; dpkg -L $i | grep -P '^.'$i'|$'; done | tee APTINSTALLED | grep -P '^[a-z0-9].*$|$'

Команда также создает файл с этой названной информацией APTINSTALLED.

С другой стороны, если требуется перечислить все файлы установленного пакета, можно выполнить команду dpkg -L сопровождаемый именем пакета.

Например, для списка всех файлов, установленных с пакетом gnome-terminal, выполните следующую команду:

dpkg -L gnome-terminal

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

apt list 2>&1| grep installed | sed 's|/|  |g;s|\[.*$||g' | GREP_COLOR='0;32' grep --color=auto -P '^.*  '

Если Вы только хотите перечислить установленные пакеты без дополнительной информации, можно выполнить это вместо этого:

apt list 2>&1| grep installed | sed 's|/.*$||g'

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

echo $(apt list 2>&1| grep installed | sed 's|/.*$||g')

Наконец, если требуется перечислить все установленные пакеты и краткое описание каждого пакета, выполнить следующую команду:

dpkg -l | grep --color=always ii

Последняя команда выделит "ii" красного цвета, который печатается непосредственно перед каждым именем пакета, чтобы помочь различать имена пакета и описания.

Или, Вы могли просто выполнить следующую команду вместо этого:

dpkg -l

Дополнительно, как предложено @steeldriver в комментарии, можно использовать -f флаг с dpkg-query управляйте для печати имени. Вот пример:

dpkg-query -W -f='${Package}\n' | while read -r p; do echo "$p" & dpkg-query -L "$p"; done

и здесь это с именем пакета, выделенным в зеленом:

dpkg-query -W -f='${Package}\n' | while read -r p; do echo "$p" & dpkg-query -L "$p"; done | GREP_COLOR='0;32' grep -P --color=auto '^[a-z0-9].*$|$'

и здесь это в форме сценария, который создаст новый каталог ~/packagefiles. Выполнение этого сценария создаст текстовый файл для каждого пакета, установленного в новом каталоге. Каждый текстовый файл содержит список файлов для каждого пакета. Это также распечатает в терминале как нормальный, каждое имя пакета, выделенное в зеленом:

#!/bin/bash
mkdir -p /home/$USER/packagefiles 2>&1
dpkg-query -W -f='${Package}\n' | while read -r p; do echo "
$p" & dpkg-query -L "$p" | tee /home/$USER/packagefiles/"$p"; done | GREP_COLOR='0;32' grep -P --color=auto '^[a-z0-9].*$|$'

Это удобно, потому что каждый пакет перечислен в каталоге и так ls ~/packagefiles перечислит все пакеты в хороших столбцах.

Не забывайте делать исполняемый файл сценария.

4
ответ дан 2 December 2019 в 01:56

Если мы имеем дело с приложениями, которые были установлены через apt, это довольно просто, если Вы знаете, что каждый пакет имеет /var/lib/dpkg/info/*.list файл. Мы можем распечатать имя файла как имя пакета, и содержание тех файлов содержит все файлы, которые шли с пакетом во время установки. Другими словами, это:

for file in /var/lib/dpkg/info/*.list ; do echo ">>> $(basename ${file%%.*})" ; cat "$file" ; done

, Если программное обеспечение шло git или другие средства (не dpkg или apt) затем, нет действительно способа сказать, какие файлы, возможно, были добавлены к Вашей системе.

1
ответ дан 2 December 2019 в 01:56

кошка/var/lib/dpkg/available | grep Пакет

0
ответ дан 2 December 2019 в 01:56

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

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