Como encontrar o código-fonte por um método simples [closed]

2

Como eu sei, o Linux é um projeto de código aberto, o que significa que podemos encontrar todo o código que compila este sistema.

Mas isso é muito difícil para mim.

Existe um método simples que pode verificar o código-fonte de qualquer comando? Como a função hostname . Eu acho que ele irá gravar as informações em seu arquivo de configuração (pode não ser /etc/sysconfig/network em CentOS 6.3 , eu acho).  Espero encontrar o arquivo de configuração real. Então, como encontrar um código-fonte sobre um comando (como hostname ) por um método simples?

    
por yode 04.07.2017 / 00:09

1 resposta

4

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á.

    
por 04.07.2017 / 00:18