Não existe método simples . Mas é possível para arquivos que fazem parte de um RPM:
-
rpm -qf
para um determinado nome de arquivo identifica o pacote -
rpm -qi
para um determinado pacote informa um pouco sobre a origem do programa. - Em particular, se for um pacote do CentOS, você pode encontrar um rpm de origem (".srpm") no servidor web / ftp do CentOS. Isso pode ser descompactado para obter o tarball de origem e os patches.
Se não estiver em um RPM, é difícil encontrar a fonte, a menos que você saiba como o arquivo chegou lá. Para pacotes não-CentOS, o empacotador pode identificar o local de origem, talvez não .
Por exemplo, seu exemplo hostname
pode ser fornecido por coreutils , mas o RPM diz que não é:
$ rpm -qi 'rpm -qf /usr/bin/hostname'
Name : hostname
Version : 3.13
Release : 3.el7
Architecture: x86_64
Install Date: Fri Jul 4 13:23:13 2014
Group : System Environment/Base
Size : 19449
License : GPLv2+
Signature : RSA/SHA256, Thu Jul 3 21:54:35 2014, Key ID 24c6a8a7f4a80eb5
Source RPM : hostname-3.13-3.el7.src.rpm
Build Date : Mon Jun 9 17:48:44 2014
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://packages.qa.debian.org/h/hostname.html
Summary : Utility to set/show the host name or domain name
Description :
This package provides commands which can be used to display the system's
DNS name, and to display or set its hostname or NIS domain name.
Como o Fornecedor é CentOS
, você pode encontrar a fonte no site do CentOS. Ou você pode seguir o URL fornecido (o que pode levar algum trabalho). Neste caso, o Debian oferece um link para navegar pelo código-fonte , porque o Debian mantém o programa. Nos casos em que eles não o fazem, muitas vezes uma tar-ball é a melhor que você encontrará.