Verificando a instalação: 'apt-cache policy' vs 'which'

0

Eu pesquisei todas as variações desta questão por dias e não consegui encontrar uma explicação clara, portanto, eu venho ao conhecimento coletivo aqui, na esperança de resolver minhas questões de instalação em uma distribuição Linux.

Eu instalei (ou pelo menos tentei) alguns pacotes do github e acho que posso tê-los instalado corretamente porque quando eu uso which <package> ou <package> -h eu posso ver o caminho (todos estão em / usr / bin /) e os comandos associados com os programas corretos, no entanto, quando eu uso apt-cache os pacotes não podem ser encontrados.

Minha pergunta é: qual é exatamente a diferença em apt-cache policy , which e usando -h ao verificar a instalação de pacotes? Eu instalei cada pacote um pouco diferente e nenhum deles eu instalei usando o centro de software para o Ubuntu.

Para um pacote:

git clone "package.git"
make
sudo ln -s ~/path/to/package_clone /usr/local/bin/.

por outro:

git clone https://github.com/package.git
cd pkg.dir/
sudo python setup.py install
pkg.dir -h
    
por Alina Orozco 20.07.2016 / 20:57

2 respostas

0

apt-cache é uma ferramenta de informação do gerenciador de pacotes apt / dpkg . Ele só tem informações sobre pacotes que você instalou através deles (note que o Centro de Software é apenas um front-end de GUI para eles), isto é, pacotes .deb regulares (incluindo tudo dos repositórios oficiais e PPAs).

Se você instalar aplicativos manualmente apenas copiando suas pastas ou executando scripts de instalação ou comandos make , eles não serão pacotes regulares e, portanto, não serão gerenciados pelo gerenciador de pacotes. É por isso que apt-cache não consegue encontrar nenhuma informação sobre os pacotes - eles simplesmente não são pacotes.

O comando which , por outro lado, não está relacionado a pacotes, ele simplesmente mostra qual executável seria executado se você digitar um comando específico pesquisando todos os diretórios especificados na variável de ambiente $PATH para arquivos executáveis de um arquivo. nome correspondente.

    
por Byte Commander 20.07.2016 / 22:32
0
  • Ao executar apt-cache policy <package . Você exibe uma informação sobre a seleção de prioridades do pacote nomeado.

    O pacote em questão deve ser instalado antes de apt-get . Ele não estará ciente dos pacotes que você instalou manualmente (por exemplo, com o comando git ).

  • Ao executar o comando which , você pergunta ao seu sistema qual seria o caminho exato de um programa se você tentasse executá-lo.

    Cada usuário tem uma variável de ambiente PATH definida que contém a lista dos diretórios que o sistema operacional pesquisará (um por um) para a correspondência exata do nome do programa que você digitou. Você pode exibir o valor de PATH com o seguinte comando:

    echo "$PATH"
    

    Você pode obter um resultado semelhante a: '/ usr / local / sbin: /usr/local/bin: /usr/sbin: /usr/bin: / sbin: / bin: /usr/games: / snap / bin ".

    Se você digitar:

    which mail
    

    O sistema irá verificar:

    • o /usr/local/sbin contém mail ? - Não.
    • o /usr/local/bin contém mail ? - Não.
    • o /usr/local/bin contém mail ? - Não.
    • o /usr/bin contém mail ? -- Sim. Então imprima /usr/bin .

    Isso significa que, se você tentou executar:

    mail
    

    O sistema executará o programa /usr/bin/mail .

    O uso mais comum do comando which é garantir que você esteja executando a versão correta de um programa caso tenha várias versões instaladas. Ou verificar se um programa pode ser executado.

  • Ao executar um programa com o argumento -h você de fato tenta executá-lo. Dependendo da implementação exata, pode exibir ajuda, por exemplo:

    mail -h
    

    No entanto, lembre-se que -h é um argumento costumeiro, cabe ao próprio programa responder. Nem todos os programas exibem ajuda com esse argumento, alguns podem retornar um erro, alguns podem ignorar e executar, alguns podem usá-lo para um propósito muito diferente.

Não existe uma maneira "oficial" de verificar se um programa instalado manualmente está instalado corretamente, mas os dois últimos comandos ( which e tentando executar um programa diretamente) fornecerão a melhor aproximação.

Em vez de ajuda, você pode tentar executar um programa com o argumento --version (ou -v ), que é uma forma habitual de solicitar que um programa executado exiba sua versão.

    
por techraf 20.07.2016 / 22:41