Como posso saber quais programas contêm alguns pacotes do apt-get?


17

Gostaria de saber o que alguns pacotes específicos instalam, por exemplo, ao instalar ncurses, descobri que a TABchave se expande:

sudo apt-get install ncurses-

mostrar:

ncurses-base      ncurses-doc       ncurses-hexedit
ncurses-bin       ncurses-examples  ncurses-term

Como eu poderia saber o que, digamos, ncurses-terminstala? Estou interessado principalmente em programas, mas as bibliotecas e outros tipos de arquivos também podem ser úteis.

O método de linha de comando , se possível, seria preferido ( outros também aceitos).


Quando você diz "programas", está falando de binários?
Braiam

Binários e scripts, se possível, obrigado, @Braiam.
Sopalajo de Arrierez

Respostas:


21

Aqui estão algumas opções, estas listarão todos os arquivos instalados por um pacote:

A. Listando todos os arquivos incluídos em um pacote

  1. Para pacotes instalados

    dpkg -L ncurses-term
    
  2. Para todos os pacotes, instalados ou não

    apt-file -F list ncurses-term
    

    As -Fvoltas da correspondência de padrões para que apenas os pacotes cujo nome exato corresponda sejam retornados. Você pode precisar instalar apt-filecom sudo apt-get install apt-filee atualizar seu banco de dados com sudo apt-file update.

B. Listando apenas arquivos executáveis ​​incluídos em um pacote

  1. Para pacotes instalados

    Basta instalar dlocate( sudo apt-get dlocate) e executar:

    dlocate -lsbin ncurses-term 
    

    Como explicado em man dlocate:

    -lsbin Lista o caminho completo / nomes de arquivos dos arquivos executáveis ​​(se houver) no pacote

    Se você não deseja instalar pacotes adicionais, você pode fazer isso manualmente. Basta coletar a lista de arquivos e encontrar algum deles com o bit executável definido:

    apt-file -F list ncurses-term | cut -d ' ' -f 2 | 
        while read file; do [[ -x $file && -f $file ]] && echo "$file"; done
    

    O pequeno scriptlet acima imprimirá apenas o caminho ( cut -d ' ' -f 2) e passará por um whileloop que verifica se o arquivo é executável ( -x $file) e se é um arquivo regular, sem diretórios ou links simbólicos ( -f $file) e imprime seu nome somente se passar nos dois testes .

  2. Para todos os pacotes, instalados ou não

    Não há como eu listar apenas executáveis ​​incluídos em um pacote desinstalado. No entanto, como a maioria dos executáveis ​​é instalada em bindiretórios, você pode obtê-los analisando a saída:

     apt-file -F list ncurses-term | grep -Ew "bin|sbin"
    

    A -wopção corresponde a palavras inteiras, para que você não instale coisas, por exemplo, trashbinou o que for.


NOTA : Nenhum dos comandos acima produzirá qualquer saída, ncurses-termmas isso ocorre porque este pacote não instala arquivos executáveis. Os comandos funcionam, no entanto, tente com um pacote diferente.


Oi terdon, você tem certeza de que o comando deve funcionar em aplicativos não instalados? quando tento, ele simplesmente se oferece para instalar. O que não é tão estranho, pois o arquivo .install é (provavelmente) baixado com o aplicativo?
27630 Jacob Vlijm

@ Jacob, sim, eu apenas tentei com um pacote que eu sei que não está instalado e apt-filelistou o conteúdo do pacote. Funciona nos testes Debian e Ubuntu 13.10.
terdon

Aha, obrigado, faz sentido, eu apenas pensei, pois as dependências também são mostradas nos aplicativos não instalados.
23414 Jacob Vlijm

4

Você pode usar o apt-file:

sudo apt-file update        
apt-file list package_name

3
Se apt-filenão estiver instalado, você pode instalá-lo com sudo apt-get install apt-file.
22614 Edwin

3

Existe a possibilidade de usar o seu navegador (portanto, não é necessário acessar o sistema APT). Por exemplo, para listar o conteúdo do arquivo "ncurses-term", basta digitar

https://packages.debian.org/wheezy/all/ncurses-term/filelist

na barra de endereços do navegador (substitua "wheezy" conforme necessário) pelo Debian ou

http://packages.ubuntu.com/saucy/all/ncurses-term/filelist

para Ubuntu (substitua "picante", conforme necessário).


Um método interessante. Esta lista é para pacotes Debian, então: deve ser a mesma para qualquer outra distribuição como Ubuntu ou Kali?
Sopalajo de Arrierez

1
@Sopalajo de Arrierez: Leia com precisão: Eu também postei o link para o mesmo pacote (ncurses-term neste exemplo) para o Ubuntu. A lista de arquivos pode ser a mesma se uma versão específica do Ubuntu tiver a mesma versão do pacote que um dos conjuntos da Debian, mas não é necessariamente. Ubuntu, Kali, Aptosid, CrunchBang e todas as outras distribuições baseadas no Debian podem fazer modificações nos pacotes como eles gostam (especialmente arquivos como "README" ou arquivos de configuração para o sistema init).
Michael Kremser

Eu entendo, @ MichaelKremser. Portanto, como posso ver, pesquisar na web o conteúdo de um pacote é útil, mas, de preferência, você deve pesquisar na lista oficial de pacotes de sua distribuição específica.
Sopalajo de Arrierez 17/03

1
@Sopalajo de Arrierez: Sim, certo. Se você estiver no Debian Wheezy, use a lista de pacotes do Debian Wheezy; se estiver no teste do Debian, use aquele, se estiver no Ubuntu Precise, faça a lista. Sempre pode haver diferenças, embora, por exemplo, o Ubuntu consiga muitos pacotes do Debian não modificados. No entanto, isso pode mudar a qualquer momento.
Michael Kremser
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.