Nos sistemas baseados em Debian, incluindo o Ubuntu, você pode descobrir o status da instalação, bem como a versão possivelmente instalada de um pacote (se souber o nome do pacote) usando dpkg -l
(que é ell, não eu ou um) . Fazer isso geralmente não requer acesso root, pois é uma operação somente leitura.
Para descobrir qual pacote possui um arquivo específico, use dpkg -S
. Novamente, isso não requer acesso root.
Colocando os dois juntos, você recebe algo como:
$ dpkg -S $(which gcc)
gcc: /usr/bin/gcc
$ dpkg -l gcc
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=================-=============-=============-=======================================
ii gcc 4:4.7.2-1 amd64 GNU C compiler
$
que informa que no meu sistema em particular, a versão do pacote 4:4.7.2-1
do pacote gcc
para a arquitetura amd64
está totalmente instalada e configurada ( ii
status).
Se você quiser um único comando, ele será dpkg -l $(dpkg -S $(which gcc) | awk -F: '{print $1}')
, que mostrará a mesma saída que o exemplo de comando dpkg -l gcc
acima. Aqui eu uso o awk para dividir os dados em :
e retornar a primeira parte da saída.
Observe que a versão do pacote não reflete exatamente a versão que o próprio programa relata. No meu caso, gcc --version
diz que é gcc (Debian 4.7.2-5) 4.7.2
que para todos os fins práticos é "próximo o suficiente", mas pode fazer diferença se você está tentando descobrir que um comportamento que você está vendo é um bug ou não. / p>
Ainda mais em geral, você não deve passar parâmetros aleatórios para programas e esperar que as coisas funcionem (para alguma definição de "trabalho"). No caso específico de uname
, é inofensivo, mas pode facilmente fazer com que os programas executem operações que você realmente não deseja fazer; alguns até potencialmente perigosos. Verifique a página do manual do comando em questão para ver quais parâmetros ele aceita e o que eles significam. (Muitos também fazem algo razoavelmente seguro quando invocado simplesmente com o nome do binário sem parâmetros. Muitos aplicativos de console exibirão informações de versão e copyright quando lançados sem parâmetros, embora existam muitos que fazem as coisas de maneira diferente.)