Existe um método para descobrir informações sobre um pacote instalado? Por exemplo, como foi instalado por meio de um gerenciador de pacotes como DNF, snap ou compilado pelo usuário?
Às vezes não consigo lembrar como instalei um pacote específico, mas sempre preciso incluir esse tipo de informação em relatórios de bugs, etc. Existe uma ferramenta que pode fornecer esse tipo de informação? Se não, qualquer ajuda para escrever um script para fazer este trabalho seria muito apreciada.
Você precisa perguntar a qualquer gerenciador de pacotes que poderia ter sido usado - apenas o gerenciador de pacotes armazena meta-informações sobre quais pacotes foram instalados e quais arquivos estão no pacote. Não há como obter essas informações de um arquivo nu.
Você não disse qual tipo de distribuição você usa, mas eu recomendo sempre usar um único gerenciador de pacotes (apt para mim), e colocar coisas que são compiladas pelo usuário em outro lugar (para mim
/usr/local
, gerenciado comstow
, e eu mantenho um lista de pacotes). Desta forma, é fácil descobrir a qual pacote um determinado arquivo pertence.Se você usa uma dúzia de gerenciadores de pacotes ou mais (por quê?), Você pode escrever um script que consulte cada um deles por vez.
Editar
Eu acompanho as coisas que compilei a partir do código-fonte criando um arquivo para cada pacote que compilei em
/usr/local/packages/<packagename>
. Eu preciso disso de qualquer maneira porque contém informações sobre como eu o compilei (muitas vezes você precisa fazer ajustes, corrigir algumas coisas que não compilam com um gcc mais recente, etc.) caso eu precise compilá-lo novamente quando atualizá-lo. E como tenho esse arquivo, também adiciono informações sobre onde baixei o código-fonte, qual é a versão, o que faz, qual é o nome do tarball do código-fonte etc. Acompanho os arquivos instalados instalando tudo em/usr/local/stow/<packagename>-<version>
( que às vezes também precisa de ajustes para Makefiles, ou./configure --prefix
, etc.), e depois usestow
para fazer links para ele em/usr/local
. Eu descrevi isso em detalhes aqui .Você também pode criar pacotes realmente deb ou rpm a partir de coisas que você mesmo compila, mas isso é mais trabalhoso do que acompanhar isso com
stow
.