1

当我在我部门的服务器中时,我无法使用诸如“apt-get install nethack”之类的命令。我必须从二进制文件构建 nethack 才能使其正常工作,至少有人告诉我。我无法理解原因。为什么我需要从二进制文件构建东西?为什么禁止使用诸如“apt-get”之类的命令?为什么我不需要 Root 访问权限来从二进制文件构建?

4

4 回答 4

4

apt-get是为所有用户安装软件包的系统级命令。

如果您下载并编译,您只会创建二进制文件的本地“副本”,而不是系统范围的。如果您尝试使用make install此方法完成安装过程很可能会失败,因为您没有足够的权限来安装程序以供所有用户访问(与您无法运行的原因相同apt-get install

于 2009-04-26T16:33:57.643 回答
2

当你从源代码编译一个程序时,你可以给它'--prefix=~/'。这会导致它相对于您自己的主目录安装(因此二进制程序通常以'~/bin' 结尾,手册页在'~/man' 等)。这不会造成任何问题,因为您已经有权在此处写信。

另一方面,apt-get 将软件包安装在全局文件系统('/bin/'、'/usr/bin/' 等)中,这可能会影响其他用户,因此非常正确地需要管理访问权限。

如果你想安装一些程序,你可以使用命令

apt-get source app-name

即使您不是 root,这也可以工作,因为它只会将源代码获取到应用程序名称并将其放在当前目录中,这比必须追踪源代码更容易,并且有更好的机会让它工作,因为您下载了应该在您的系统上运行的版本。

或者,您应该让您的系统管理员安装您需要的程序,因为这是他的工作(如果您需要它们,您团队的其他成员很可能也会这样做)。

于 2009-04-26T16:55:31.260 回答
0

因为 apt-get 将在系统范围内安装程序。

于 2009-04-26T16:32:31.313 回答
0

apt-get 写入已安装文件的位置(/bin、/usr/bin、...)仅限于 root 访问。我想当您从源代码构建时,您不会执行 bulid 的安装步骤。您将需要为安装设置一个前缀,以便软件包最终出现在您可以编写的地方。 该线程讨论了一些关于为 apt-get 设置前缀的内容,您可能希望将前缀设置为类似

~/software/

然后将生成的 bin 目录添加到您的 PATH。

于 2009-04-26T16:32:50.720 回答