Outra forma de conseguir essa listagem é lendo o conteúdo dos arquivos em /var/lib/apt/lists/
. Nele você encontra diversos arquivos com as informações de todos os pacotes de todos os repositórios incluídos no APT. Com um pouco de engenhosidade, nós podemos usar o AWK para ler e filtrar os nomes dos pacotes nesses arquivos. No meu caso, todos os arquivos de pacotes do Debian possuem debian.org
no nome, portanto, eu usei isso como padrão no comando abaixo:
:~$ awk '/^Package:/ { print $2 }' /var/lib/apt/lists/*debian.org* | sort -u
Isso resulta numa lista com mais de 67 mil pacotes, todos do Debian.
Para entender o comando, /^Package:/
fará com que o AWK só capture as linhas que contenham essa string no início. A segunda parte, a instrução print $2
faz com que o AWK exiba a segunda coluna de dados de cada linha capturada, que é o nome do pacote (para o AWK, cada coluna de dados numa linha é separada das demais por um espaço). Por último, a saída do AWK é mandada por pipe para o utilitário sort
com a opção -u
(unique), que ordenará os resultados e excluirá as linhas repetidas.
Pode parecer inútil listar tantos pacotes assim, mas você poderia utilizar essa lista como uma fonte de dados para um script com algo como o programa fuzzy finder (fzf) e, a partir da sua escolha, exibir as informações completas do pacote com o comando:
apt info <nome do pacote>
Para meu uso, eu criei uma função aqui que faz mais ou menos isso. A diferença é que eu monto minha listagem a partir do apt-cache search
que mostra todos os pacotes disponíveis, sejam ou não do Debian:
# busca pacotes no cachê e exibe informações
fpkg() {
[[ -n $1 ]] && local q="-q $1"
p=$(apt-cache search ^.*$ | sed 's/ - /\t\t/' | fzf $q --reverse -e -i --tiebreak=begin)
[[ -n $p ]] && apt-cache show $p | less
}
Este é o resultado:
Para ver como utilizar essa função, aqui está o link:
https://gitlab.com/blau_araujo/debian-scripts/-/snippets/1957614