如何通过简单的方法找到源代码

如何通过简单的方法找到源代码

据我所知,Linux是一个开源项目,这意味着我们可以找到构建该系统的所有代码。

但这对我来说太难了。

有没有一种简单的方法可以检查任何命令的源代码?比如函数hostname。我发现它会将信息写入其配置文件中(它可能/etc/sysconfig/network不在CentOS 6.3我认为)。我希望能找到真正的配置文件。那么如何hostname通过简单的方法找到某个命令(如 )的源代码呢?

答案1

没有简单的方法。但它对于属于 RPM 一部分的文件是可行的:

  • rpm -qf对于给定的文件名标识包
  • rpm -qi对于给定的包,可以告诉我们程序的来源。
  • 特别是,如果它是 CentOS 软件包,您可以在 CentOS 的 Web/FTP 服务器上找到源 rpm(“.srpm”)。可以将其解压以获得源代码压缩包和补丁。

如果它不在 RPM 中,则很难找到源代码,除非您知道该文件是如何到达那里的。对于非 CentOS 软件包,打包程序可能确定源位置,也许不是

例如,你的例子hostname 可能由...提供核心工具,但 RPM 说它不是:

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

自从小贩CentOS,您可以在 CentOS 的网站上找到源代码。或者您可以按照给定的 URL(这可能需要一些工作)。在这种情况下,Debian 提供了一个链接来浏览源代码,因为 Debian 维护该程序。如果没有,通常你能找到的最好的方法是 tar-ball。

相关内容