【发布时间】:2025-04-24 05:50:02
【问题描述】:
假设我对某个特定 Linux 实用程序的源代码感兴趣,例如 factor。在哪里可以找到该实用程序的源代码?
【问题讨论】:
标签: linux
假设我对某个特定 Linux 实用程序的源代码感兴趣,例如 factor。在哪里可以找到该实用程序的源代码?
【问题讨论】:
标签: linux
您还可以找出二进制文件来自哪个软件包,该软件包来自打包源代码的下载。
在 Debian(以及 Ubuntu 和任何其他基于 Debian 的系统)上,您可以这样做:
$ dpkg -S /usr/bin/因子 coreutils:/usr/bin/factor $ apt-get source coreutils第一个命令将检查哪个包包含您正在搜索的文件(使用“which factor”来找出当您只需键入“factor”时执行的二进制文件)。
第二个命令将下载并解压源代码(包括用于构建包的补丁)到当前目录,因此它应该在专用或临时目录中执行。
我很确定基于rpm 的发行版具有类似的机制,但我不知道它们的命令。
【讨论】:
我所做的是打字
man factor
然后走到底部发现'GNU coreutils 6.10'。所以我用谷歌搜索了“coreutils”,然后……找到了 joschi 刚刚链接到的网站。
【讨论】:
要查找二进制文件来自的包,在基于 rpm 的系统中,您可以键入:
$ rpm -qf /usr/bin/因子这将打印包名称。取而代之的是:
$ rpm -qif /usr/bin/因子您还将获得有关包的信息,在许多情况下包括它的主页。
源 rpm 也存在,但如何获取它们取决于在 RPM 之上使用的高级包管理器(yum、urpmi、apt-get4 for rpm,...)。
在大多数系统上,/usr/share/doc/ 也包含有关该程序的一些文档,并且网站链接经常可以在某个地方找到,可能在自述文件中。
【讨论】:
如果它是开源的,通常你会在程序的网站上找到源代码。在这种情况下,here 因为 factor 是 coreutils 的一部分。
【讨论】:
在 Gentoo 上,只需查看您使用 :D 编译包的 ebuild。
如果你不确定?
# 哪个因素 /usr/bin/因子 # grep '/usr/bin/factor' /var/db/pkg/*/*/CONTENTS /var/db/pkg/sys-apps/coreutils-6.12-r2/CONTENTS:obj /usr/bin/factor 5aaf903daa4345efb11618b3cb47e9a5 1224224574 /var/db/pkg/sys-apps/coreutils-6.12-r2/CONTENTS:obj /usr/lib64/debug/usr/bin/factor.debug 517d965636850633e9b15926dde8c222 1224224575 # cat /var/db/pkg/sys-apps/coreutils-6.12-r2/SRC_URI ftp://alpha.gnu.org/gnu/coreutils/coreutils-6.12.tar.lzma mirror://gnu/coreutils/coreutils-6.12.tar.lzma mirror://gentoo/coreutils-6.12.tar.lzma mirror ://gentoo/coreutils-6.12-patches-1.0.tar.lzma http://dev.gentoo.org/~vapier/dist/coreutils-6.12-patches-1.0.tar.lzma # cat /var/db/pkg/sys-apps/coreutils-6.12-r2/HOMEPAGE http://www.gnu.org/software/coreutils/当然,源代码在/usr/portage/distfiles 中可能仍然可用。
【讨论】:
另一个非常好的方法是使用Google Code Search。例如,搜索factor coreutils(请参阅手册页或factor --help 以查看它来自coreutils)将包作为第二个结果。两次点击后,我就在线浏览了factor.c。
Google 代码搜索搜索大多数公开源代码。您可以使用正则表达式和许多高级搜索选项,包括按语言和许可进行限制。
【讨论】:
我通常通过搜索freshmeat 找到指向源、主页和其他有用信息的链接。
【讨论】:
您可能想查看SourceForge.net。
【讨论】: