存放软件源文件的标准位置


16

Linux中是否存在用于保存源文件(例如OpenSSL)的标准位置。我正在使用非默认版本的OpenSSL从源代码构建Nginx。我需要下载并解压缩OpenSSL,并在主目录中完成了它。现在,我想知道Linux中是否有标准位置/opt


1
正如terdon所写,/ usr / src是标准位置,您可以在这里找到内核源代码的目录(链接到/ usr / src / linux-version的/ usr / src / linux),例如X11。本地安装(/ usr / local)的软件包的源代码更适合/ usr / local / src。如果您想自己“手动”构建软件包,在您的homedir中创建一个src目录可能是一个好主意...请记住,您不应该下载,解压缩或以root身份构建-只能安装为!如果您构建deb / rpm-packages,则通常使用临时构建目录(例如,在/ var / tmp下)。TBC
巴德·科珀罗德

如果您自己构建和安装软件包-或创建软件包(rpm / dem),则通常在安装后不再需要源代码。之所以可能在/ usr / src(或/ usr / local / src,如果它是本地创建)下具有某些软件包的源代码(例如内核或X11)的原因,主要是因为如果您需要自己重建(或编写)一些软件包(例如,内核中一些晦涩的头文件,与您的实际系统设置相匹配)。(当然,如果您也想构建自己的内核,则将需要它。)但这仅适用于少数软件包。
巴德·科珀罗德

Answers:


20

每当您问自己这样的问题时,请查看文件系统层次结构标准(FHS)。在那里,您会找到以下条目:

usr / src:源代码(可选)

目的

源代码只能放在此子目录中,仅供参考

因此,您可以将源文件放在的子目录中/usr/src。也就是说,这是一个可选目录,因此您可以真正将它们保留在所需的任何位置。将源代码编译为可执行文件后,它们就不再相关了,因此系统将永远不需要在特定位置访问某些源代码。

结束语:这/usr/src是一个非常标准的位置,但是如果您愿意,可以随时选择自己的位置。


6
请注意,您真的不希望/usr/src Linux系统上陷入困境。BSD默认情况下会将其基本系统源保存在此处,并且您不想将它们与第三方软件混合在一起。只是建在您的$HOME某个地方...
库萨兰达

1
这同样适用于一些子目录/usr/srcDebian的衍生品,如果你有一定的安装包(gcc-6-sourcebinutils-source,DKMS封装,内核头文件等)。在Debian上,有一个不错的功能,您可以将自己添加到src拥有的组中/usr/src,然后以自己的身份写在那里(无需这样做sudo)。
史蒂芬·基特

在Fedora上,您不应该触摸/usr/src/debug/usr/src/kernels(AFAICS)。
史蒂芬·基特

“可以放置源代码”。是“放置”错字,还是我错过了什么?
法赫姆·米莎

3
我会走得更远,说您不应该真正接触/usr任何系统。你应该把东西放进去/usr/local。BSD介意您使用/usr/local/src吗?
Muzer's

13

/usr/local/src是保留源代码并进行构建的安全场所。FHS

Directory   Description  
src         Local source code

并且

/ usr / local层次结构供系统管理员在本地安装软件时使用。更新系统软件时,必须确保它不会被覆盖。

目前尚不清楚“本地源代码”的含义,但很明显,系统不会尝试在中放置任何东西/usr/local/src(与不同)/usr/src,因此在其中放置代码似乎没有什么缺点。

实际上,我在一个单独的文件系统上:

Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/data-local_src     79G   46G   30G  61% /usr/local/src

注意:至少在Debian上,您的用户需要添加到staff组中才能写入/usr/local


+1指出,/usr/local/src其他答案仅讨论/usr/src
MattSturgeon '17

至于“本地源代码”的含义,通常是指由本地sysadmin控制,而不是由发行版控制。与/usr/local(理论上)其他所有内容相同。因此,从本质上讲,这意味着您所描述的。
MattSturgeon

9

如果按“标准”表示常规,那么解压缩和构建源代码的位置就是您的主目录。此类文件应是临时的,完成后会删除,或根据需要保留(如果需要)组织。您的主目录是您玩所有此类内容的地方。

如果您希望以后保留它们,则建议参考文件系统层次结构标准/usr/src。但是,这只是指南,而不是法律。并且,如果您要养成这种习惯,然后尝试使用非Linux系统,则很容易因遵循它而引起麻烦。例如,在BSD系统上,基本系统源保存在此,而您确实不想弄混这些源。即使在Linux上,也可能存在与软件包管理器存储的任何源混合的风险,这是不希望的。

我建议避免/usr/src整体使用。根本不保留任何内容并没有明显的好处,如果您混淆了其预期的含义,则可能会带来潜在的风险。


5

您可以/usr/src在这里使用合理的声音,并且基于rpm的发行版将其用于存储srpm软件包的内容。但是,其他任何地方一样/opt/usr/local~/src是好的


“基于rpm的发行版使用它来存储srpm软件包的内容。” 这就是为什么您不应该在此处存储自己的非发行版源而使用/ usr / local的原因。-“那肯定是一个存放东西的好地方,所有这些叉车似乎都是同一意见。”
rackandboneman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.