Se estamos falando de um comando que você pode executar no prompt do shell, deve haver uma página de manual:
$ man someprogram
Se você receber algo como No manual entry for foo
, poderá experimentar o GNU info
:
$ info someprogram
Nem todos os sistemas operacionais Unix e Unix têm informações GNU sobre eles, mas fazem muito, e geralmente fornecem mais informações sobre um determinado comando do que a clássica página man
faz.
Se você tiver info
e não souber sobre o comando, você receberá algo como No menu item 'someprogram' in node '(dir)Top'
na parte inferior da tela. Pressione Q para deixar info
.
Os programas geralmente pertencem a algum gerenciador de pacotes nesses sistemas, e você também pode perguntar ao gerenciador de pacotes sobre o programa. Por exemplo, diremos que você está interessado em someprogram
e está usando um shell com o comando which
. Se o último não estiver disponível, você pode fornecer manualmente o caminho para o executável, como /usr/bin/someprogram
.
Linuxes baseados em RPM (RHEL, Fedora, CentOS ...)
Primeiro, descubra a qual pacote o programa pertence:
$ rpm -qf 'which someprogram'
somepackage-1.2.3-4
Em seguida, pergunte ao RPM sobre o pacote:
$ rpm -qi somepackage
Name : somepackage
Version : 1.2.3
Release : 4
...etc...
Linuxes baseados em DEB (Debian, Ubuntu, Mint ...)
O padrão é o mesmo que para o RPM. Primeiro, descubra quem é o proprietário do arquivo:
$ dpkg -S 'which someprogram'
somepackage: /usr/bin/someprogram
Depois, pergunte sobre o pacote em si:
$ dpkg -s somepackage
Package: somepackage
Essential: no
Status: install ok installed
...etc...
Mac OS X
O gerenciador de pacotes OS X "nativo" é um recurso oculto do sistema operacional e não é usado para tudo, mas vale a pena tentar. O padrão é o mesmo que acima:
$ pkgutil --file-info 'which someprogram'
volume: /
path: /usr/bin/someprogram
pkgid: com.example.bundles.somepackage
pkg-version: 1.2.3
...etc...
Em seguida, para obter mais informações sobre somepackage
:
$ pkgutil --pkg-info com.example.bundles.somepackage
$ pkgutil --files com.example.bundles.somepackage
...etc...
Se você instalou um dos gerenciadores de pacotes de terceiros ( Homebrew , MacPorts , ou Fink ) existem comandos similares para obter informações sobre os pacotes que eles possuem.
Se você está lidando com um programa instalado fora de qualquer um desses sistemas, você provavelmente está lidando com um programa de GUI que fica feliz em falar sobre si mesmo usando mecanismos internos. (Sobre caixa, ajuda, etc.)
FreeBSD
Classicamente, os BSDs não usaram gerenciadores de pacotes formais, mas nos últimos anos, o FreeBSD tem caminhado lentamente em direção ao uso de pkg
, também conhecido como PkgNG.
Ele também compartilha o mesmo padrão de uso dos sistemas acima:
$ pkg which 'which someprogram'
/usr/bin/someprogram was installed by package somepackage-1.2.3-4
$ pkg info somepackage
somepackage-1.2.3-4
Name : somepackage
Version : 1.2.3-4
...etc...
Talvez um dia a grande maioria dos programas instalados em uma caixa do FreeBSD seja instalada via pkg
, mas não hoje.
Se você tiver um programa instalado por meio de Portas e puder descobrir qual Port o instalou, é possível provavelmente consegue o que quer com isso:
$ cd /usr/ports
$ ls -d */somepackage
net/somepackage
$ cat net/somepackage/pkg-descr