apt - verificar se um pacote similar foi instalado

3

Esta questão explica como descobrir se um determinado pacote Debian foi instalado, mas não leva em conta "sinônimos" ao instalar via apt-get .

Por exemplo, se eu tentar apt-get install libncurses-dev , o apt-get responde:

Note, selecting 'libncurses5-dev' instead of 'libncurses-dev'

E então ele instala esse pacote ( libncurses5-dev ), o que é bom para mim.

Mas e se eu quiser criar um script para detectar se o pacote já foi instalado?

dpkg -s libncurses-dev responde que o pacote não está instalado, o que é correto, já que é libncurses5-dev que foi instalado. Mas gostaria que meu script detectasse que, nesse caso, não é mais necessário instalar libncurses-dev .

Não foi possível encontrar uma opção em apt-get para verificar se o pacote fornecido ou um de seus provedores já foi instalado, de modo que meu script funcionaria ao verificar libncurses-dev também como para libncurses5-dev .

    
por anol 25.06.2015 / 14:19

2 respostas

3

Se você quiser escrever um script para verificar se o pacote libncurses-dev ou seu alias foi instalado, considere o seguinte fluxo de programa:

  1. Verifique se o pacote foi instalado com dpkg usando o nome exato, libncurses-dev neste caso.
  2. Se o acima não for avaliado como true, procure apt para o pacote que você está procurando usando o nome sem alias:

    $ apt-cache search libncurses-dev
    libncurses5-dev - developer's libraries for ncurses
    

Parece que apt-cache search retornará o 'alias' se o pacote tiver um.

  1. Se # 1 avaliar falso e # 2 retornar um apelido, basta pegar o alias do pacote e tentar # 1 novamente.

Verifique novamente dpkg com o nome do alias do pacote, neste caso seria libncurses5-dev . Se dpkg não encontrar o pacote por um alias (na verdade, um pacote substituído), ele não deverá ser instalado.

    
por 25.06.2015 / 17:57
2

Isso parece um trabalho para uma pesquisa do aptitude .

$ aptitude -F %p search '~Plibncurses-dev'
libncurses5-dev                                                                 
libncurses5-dev:i386
$ aptitude -F %p search '~Plibncurses-dev ~rnative'
libncurses5-dev                                                                 
$ aptitude -F %p search '~Plibncurses-dev ~rnative ~i'
libncurses5-dev

Esse último não imprimiria nada se libncurses5-dev não fosse instalado.

    
por 26.06.2015 / 03:00

Tags