Como posso obter uma lista de todos os pacotes em uma seção do repositório a partir da linha de comando?

13

No Synaptic, pode-se listar pacotes por seção. Por exemplo, na imagem abaixo, todos os pacotes da seção "Radio Amador (universo)" são listados.

Como posso obter essa lista (editar: com descrição do pacote) na linha de comando?

Eu preciso de uma lista crua; um aplicativo de terminal como aptitude não fará.

    
por Serge Stroobandt 20.05.2014 / 15:37

4 respostas

5

Bem, embora você diga que não quer usar o aptitude por causa da saída, você precisa saber que pode modificá-lo para obter o que gosta:

aptitude -F'|%p|%d|' search '?section(hamradio)'

O truque está na opção -F que modifica o formato de saída. %p significa pacote. Isso também gera quando o pacote possui várias arquiteturas (ou seja, amd64 vs i386) e %d , que gera a descrição. Você pode personalizar ainda mais o padrão de pesquisa para, por exemplo, pacotes não instalados:

aptitude -F'|%p|%d|' search '?section(hamradio) !~i'

onde ~i significa instalado e ! não, por isso é lida como "não (!) instalado (~ i)", ou se você quer apenas os que estão disponíveis para sua arquitetura:

aptitude -F'|%p|%d|' search '?section(hamradio) ~r native'

~r sendo ?architecture() que corresponde à arquitetura do pacote e native que lista apenas os que têm a mesma arquitetura do sistema, o equivalente a dpkg --print-architecture .

A linha anterior pode, portanto, ser escrita de forma ainda mais concisa:

aptitude -F'|%p|%d|' search '~s hamradio ~r native'
    
por Braiam 28.05.2014 / 17:31
11

Certifique-se de que as dctrl-tools O pacote está instalado. Ele fornece comandos úteis para pesquisar as listas de pacotes apt e dpkg. Para obter uma descrição completa de todos os pacotes de uma seção específica que podem ser instalados com o apt, execute

grep-aptavail -F Section hamradio

Isso mostrará os metadados completos do pacote para cada pacote na seção hamradio . Se tudo o que você quer ver são os nomes dos pacotes, execute

grep-aptavail -n -F Section -s Package hamradio

Se o seu sistema estiver configurado para multiarch, o mesmo pacote pode aparecer mais de uma vez nesta listagem se for construído para mais de uma arquitetura. Então, para refinar isso mais, use

grep-aptavail -n -F Section -s Package hamradio | sort | uniq

ou

grep-aptavail -n -F Section -s Package hamradio | sort -u

para ordenar a lista de pacotes e remover pacotes duplicados com o mesmo nome.

Note que você terá que usar o nome real da seção, que é diferente do nome "legível por humanos" que o Synaptic mostra em sua GUI. Por exemplo, as pesquisas acima usam o nome da seção hamradio em vez da string "Amateur Radio" mostrada no Synaptic.

Veja a página de manual do grep-aptavail para uma descrição completa descrição de todas as opções e alguns exemplos.

    
por Mike Miller 20.05.2014 / 17:26
3

Mais campos em uma única linha, com separador arbitrário

O seguinte one-liner imprimirá todos os nomes de pacotes exclusivos de uma seção de repositório, junto com sua descrição, cada um em uma única linha. Todos os campos são separados por um caractere de pipe, ou seja, prontos para conversão em uma tabela Markdown pipe . A tabela resultante pode ser encontrada no meu site.

grep-aptavail -n -s Package,Description -F Section hamradio |paste -sd '||\n' |sed 's:^:|:' |sort -u
    
por Serge Stroobandt 21.05.2014 / 02:12
2

Você pode usar o seguinte comando para obter uma lista de pacotes pertencentes a uma determinada Seção:

$ dpkg-query -W -f='${binary:Package} ${Section}\n' | awk '{if ($2 == "shells") {print $1}}'
bash
bash-completion
busybox-initramfs
busybox-static
dash
zsh
zsh-common
    
por Sylvain Pineau 31.10.2014 / 09:56