Debian

Pesquisa de pacotes Debian

Pesquisa de pacotes Debian

O Debian 9, com o codinome 'Stretch', tem um repositório colossal de mais de 68.000 pacotes. Quer sejam jogos, fontes, editores, bancos de dados ou ferramentas de desenvolvimento, a chance é que você os encontre lá. A chave, no entanto, é achar isto. A menos que você saiba o nome exato do pacote, encontrar um determinado pacote em um repositório tão grande é como procurar uma agulha em um palheiro. Às vezes, o nome do pacote é diferente do nome do programa. Por exemplo, iostat, um programa útil para relatar estatísticas de CPU e E / S de disco, é empacotado sob o nome sysstat. Outras vezes, você não sabe o nome do pacote nem o nome do comando. Em vez disso, você só conhece sua função, o que deve fazer.

Para procurar pacotes, existem vários métodos com vários níveis de poder e usabilidade. O site do Debian tem uma lista de todos os pacotes do Debian. Portanto, você pode usar a função de pesquisa do seu navegador ou baixar a lista como um arquivo de texto compactado e usar o grep. De qualquer forma, é necessário muito trabalho manual para filtrar a lista. A boa notícia é que ferramentas automatizadas poderosas estão disponíveis para acelerar a filtragem.

O Debian oferece gerenciadores de pacotes gráficos e de linha de comando para pesquisar e filtrar pacotes. Ferramentas baseadas em GUI, como Synaptic, geralmente se destacam em usabilidade. No entanto, nem todas as máquinas, especialmente servidores de produção, têm o desktop gráfico instalado. Para essas máquinas, o Synaptic simplesmente não é uma opção. Neste post, nos concentramos em ferramentas de linha de comando para pesquisar pacotes Debian.


Informação de fundo

Os administradores do sistema Debian definem as fontes dos pacotes no arquivo / etc / apt / sources.Lista. Entre outras coisas, o arquivo especifica que apenas os pacotes de uma determinada versão do Debian (e.g., Stretch vs Buster), e de certas categorias de componentes (e.g., main, contrib e non-free) podem ser baixados. Os metadados de todos os pacotes elegíveis são baixados para o cache de pacote local, por meio do comando apt-get update.

Os mantenedores de pacotes upstream podem adicionar e remover pacotes a qualquer momento. Para se certificar de que seu cache de pacote local tem as informações de metadados mais recentes, você deve atualizar o cache ('apt-get update') antes de fazer uma pesquisa.

Agora que você está pronto para pesquisar, você pode fazê-lo como um usuário regular. Não há necessidade de se tornar root para executar uma pesquisa. Isso ocorre porque uma pesquisa apenas faz consultas, não alterações, no cache do pacote. Além disso, a máquina nem precisa estar online porque os comandos de pesquisa acessam apenas o cache local, não os repositórios remotos.

O escopo de uma pesquisa é restrito ao que está especificado nas fontes.arquivo de lista. Por exemplo, se o arquivo permite apenas pacotes de componentes principais e contrib, então suas pesquisas não retornarão pacotes não-livres.

Para resumir:

  1. Antes de executar uma pesquisa, execute 'apt-get update' para atualizar o cache do pacote.
  2. Você pode executar um comando de pesquisa como um usuário normal (nenhum privilégio de root é necessário).
  3. Nenhuma conexão com a Internet é necessária para executar um comando de pesquisa.
  4. Os resultados da pesquisa são restritos ao escopo definido pelas fontes.arquivo de lista.

apt-cache

Se você souber o nome do pacote, embora parcialmente, você pode passar o nome parcial como um argumento de expressão regular para apt-cache. Por exemplo, você sabe que o nome do pacote é uma variação do tema dos para unix, como dostounix, dos2unix, dos-para-unix, etc. O comando de pesquisa e sua saída são os seguintes:

$ apt-cache search --names-only dos.+unix
dos2unix - converte terminações de linha de arquivo de texto entre CRLF e LF

Notas:

  1. -names-only (ou -n abreviadamente) especifica que apenas nomes de pacotes, não descrições, são correspondidos. (O padrão é o nome e a descrição.)
  2. dos.+unix é uma expressão regular que corresponde ao nome do pacote dos2unix. Consulte regex (7) para obter ajuda sobre sintaxe.

O que você faz se souber apenas o que o pacote faz, eu.e., sua função, mas não seu nome? Neste caso, você está procurando um programa para converter arquivos de texto do formato DOS para UNIX. O comando de pesquisa a ser usado e sua saída são os seguintes:

$ Apt-cache search converter dos unix
dos2unix - converte terminações de linha de arquivo de texto entre CRLF e LF
flip - converte terminações de linha de arquivo de texto entre os formatos Unix e DOS
fondu - converte entre formatos de fonte Mac e UNIX
tofrodos - converte DOS <-> Arquivos de texto Unix, alias tofromdos

Por padrão, o apt-cache tenta comparar as palavras-chave de pesquisa com o nome do pacote e a descrição longa do pacote. A esperança aqui é que as palavras-chave funcionais correspondam às palavras que o mantenedor do pacote usa em sua longa descrição. Observe que várias palavras-chave (convert, dos, unix) são AND-ed juntas.

apto

O comando apt é uma ferramenta de gerenciamento de pacotes mais recente que combina as funcionalidades básicas do apt-get e apt-cache. Ele é projetado para ser usado interativamente, em vez de em um script. Por exemplo, a saída do apt é colorida para melhorar a legibilidade. Estética à parte, os comandos apt e apt-cache compartilham uma sintaxe semelhante, incluindo opções de comando.

O exemplo abaixo procura um pacote combinando a expressão regular dos.+unix, somente contra nomes de pacotes (por padrão, tanto em relação ao nome quanto à descrição).

$ Apt search --names-only dos.+unix
Classificando ... Concluído
Pesquisa de texto completo ... Concluída
dos2unix / stable, agora 7.3.4-3 amd64 [instalado]
converter terminações de linha de arquivo de texto entre CRLF e LF

arquivo apt

Embora o apt-cache (e o apt) possam ajudá-lo a procurar por um pacote combinando palavras-chave funcionais, a busca é frequentemente acertada e perdida. O sucesso depende muito de como o mantenedor do pacote escreve a descrição longa do pacote. Na realidade, porém, você pode saber informações adicionais sobre o pacote, como o nome do comando ou um arquivo que está incluído no pacote. A ferramenta a ser usada é o arquivo apt.

O comando apt-file não é instalado por padrão em um sistema Debian. Para instalar, execute como root:

$ apt-get install apt-file

Antes de executar o apt-file pela primeira vez, atualize o cache do pacote atualizando o cache do pacote local ('apt-get update').

Suponha que você queira encontrar o pacote que contém o comando iostat. O comando a ser usado e a saída abreviada são os seguintes:

$ apt-file search iostat
…   <12 lines snipped>…
linux-manual-4.9: / usr / share / man / man9 / rpc_count_iostats_metrics.9.gz
linux-manual-4.9: / usr / share / man / man9 / rpc_free_iostats.9.gz
manpages-fr-extra: / usr / share / man / fr / man8 / nfsiostat.8.gz
munin-plugins-extra: / usr / share / munin / plugins / iostat
munin-plugins-extra: / usr / share / munin / plugins / iostat_ios
nagios-plugin-check-multi: / usr / share / doc / nagios-plugin-check-multi / examples / nagiostats.cmd
nfs-common: / usr / sbin / nfsiostat
nfs-common: / usr / share / man / man8 / nfsiostat.8.gz
nixstatsagent: / usr / lib / python2.7 / dist-packages / nixstatsagent / plugins / iostat.py
sysstat: / usr / bin / cifsiostat
sysstat: / usr / bin / iostat
sysstat: / usr / share / man / man1 / cifsiostat.1.gz
sysstat: / usr / share / man / man1 / iostat.1.gz
zsh-common: / usr / share / zsh / functions / Completion / Unix / _iostat

apt-file funciona combinando o argumento iostat como uma substring com os nomes de caminho de todos os arquivos em um pacote. A pesquisa acima retorna 46 resultados, i.e., um total de 46 arquivos no cache local contêm iostat em seus nomes de caminho, o que é muito para ser examinado manualmente.

Para restringir a pesquisa, transforme o argumento em uma expressão regular usando o sinalizador -x.

$ Apt-file -x search '/ iostat $'
munin-plugins-extra: / usr / share / munin / plugins / iostat
sysstat: / usr / bin / iostat

A expressão regular, / iostat $, só corresponde a nomes de caminho que terminam exatamente com iostat. Para sintaxe de expressão regular, consulte perlreref (1).

A nova saída tem apenas 2 resultados e você pode ler rapidamente o nome do pacote (sysstat) que contém o comando iostat.


Conclusão

Distribuições Linux em geral e Debian em particular são conhecidas por seus enormes repositórios de pacotes oficiais. Mas, encontrar aquele que você deseja entre dezenas de milhares de pacotes pode ser um grande desafio. Fique tranquilo, pois você não precisa saber o nome exato do pacote. Os comandos apt-cache e apt podem filtrar pacotes com base em palavras-chave na descrição do pacote. Alternativamente, se você souber o nome do arquivo binário do programa, o comando apt-file pode usá-lo para identificar pacotes que contêm um arquivo com o mesmo nome.

Vulkan para usuários de Linux
A cada nova geração de placas gráficas, vemos os desenvolvedores de jogos ultrapassarem os limites da fidelidade gráfica e se aproximarem mais do foto...
OpenTTD vs Simutrans
Criar sua própria simulação de transporte pode ser divertido, relaxante e extremamente atraente. É por isso que você precisa ter certeza de experiment...
Tutorial OpenTTD
OpenTTD é um dos jogos de simulação de negócios mais populares que existem. Neste jogo, você precisa criar um maravilhoso negócio de transporte. No en...