Я использую Ubuntu 14.04 LTS, Надежный человек. Я хочу выполнить команду для списка всех установленных пакетов системы и для каждого имени пакетов, она должна перечислить все файлы, которые пакет установил в системе. как я могу сделать это?
Можно выполнить следующую команду для печати этой информации в терминале:
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
перечислит все пакеты в хороших столбцах.
Не забывайте делать исполняемый файл сценария.
Если мы имеем дело с приложениями, которые были установлены через apt
, это довольно просто, если Вы знаете, что каждый пакет имеет /var/lib/dpkg/info/*.list
файл. Мы можем распечатать имя файла как имя пакета, и содержание тех файлов содержит все файлы, которые шли с пакетом во время установки. Другими словами, это:
for file in /var/lib/dpkg/info/*.list ; do echo ">>> $(basename ${file%%.*})" ; cat "$file" ; done
, Если программное обеспечение шло git
или другие средства (не dpkg
или apt
) затем, нет действительно способа сказать, какие файлы, возможно, были добавлены к Вашей системе.
кошка/var/lib/dpkg/available | grep Пакет