um comando para listar todos os pacotes instalados no sistema e seus arquivos instalados, como?

1

Estou usando o Ubuntu 14.04 LTS, Trusty. Eu quero executar um comando para listar todos os pacotes instalados do sistema e para cada nome de pacotes, ele deve listar todos os arquivos que o pacote instalou no sistema. como eu posso fazer isso?

    
por ali 07.11.2016 / 13:22

3 respostas

3

Você pode executar o seguinte comando para imprimir essas informações no terminal:

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].*$|$'

O comando também cria um arquivo com essa informação chamada APTINSTALLED .

Alternativamente, se você quiser listar todos os arquivos de um pacote instalado, você pode executar o comando dpkg -L seguido pelo nome do pacote.

Por exemplo, para listar todos os arquivos instalados com o pacote gnome-terminal , execute o seguinte comando:

dpkg -L gnome-terminal

Se você quiser apenas listar todos os pacotes instalados, você pode executar o seguinte comando:

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

Se você quiser apenas listar os pacotes instalados sem as informações extras, você pode executar isso:

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

Se quiser listar os nomes dos pacotes instalados em um formato linear em vez de uma coluna, você pode executar o seguinte comando:

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

Finalmente, se você quiser listar todos os pacotes instalados e uma breve descrição de cada pacote, execute o seguinte comando:

dpkg -l | grep --color=always ii

O último comando destacará "ii" em vermelho que é impresso diretamente antes do nome de cada pacote para facilitar a distinção entre os nomes dos pacotes e as descrições.

Você pode simplesmente executar o seguinte comando:

dpkg -l

Além disso, conforme sugerido por @steamdriver em um comentário, você pode usar o sinal -f com o dpkg-query comando para imprimir o nome. Aqui está um exemplo:

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

e aqui está o nome do pacote destacado em verde:

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].*$|$'

e aqui está na forma de um script que criará um novo diretório ~/packagefiles . A execução deste script criará um arquivo de texto para cada pacote instalado no novo diretório. Cada arquivo de texto contém a lista de arquivos para cada pacote. Isso também será impresso no terminal como normal, cada nome de pacote destacado em verde:

#!/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].*$|$'

Isso é conveniente porque cada pacote é listado no diretório e, portanto, ls ~/packagefiles listará todos os pacotes em colunas agradáveis.

Não se esqueça de tornar o script executável.

    
por mchid 07.11.2016 / 14:47
2

Se estivermos lidando com aplicativos que foram instalados por meio de apt , é muito simples se você souber que cada pacote tem o arquivo /var/lib/dpkg/info/*.list . Podemos imprimir o nome do arquivo como nome do pacote e o conteúdo desses arquivos contém todos os arquivos fornecidos com o pacote durante a instalação. Em outras palavras, isso:

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

Se o software veio com git ou outros meios (não dpkg ou apt ), então não há realmente uma maneira de dizer quais arquivos podem ter sido adicionados ao seu sistema.

    
por Sergiy Kolodyazhnyy 07.11.2016 / 20:54
0

cat / var / lib / dpkg / disponível | grep Package

    
por Kanagaraj dhanapal 07.11.2016 / 13:32