“make install”和“sudo make install”之间的区别

lok*_*art 19 make sudo software-installation

有时我在使用时遇到问题,在写入某些文件夹时make install会出现permission denied错误。所以我本能地使用sudo make install. 这会带来额外的问题吗?

我正在使用 Debian Etch。

Fah*_*tha 19

避免将本地安装到系统目录中。系统目录,例如/usr,保留供包管理系统使用。根据定义,如果您这样做make install意味着您正在进行本地安装,如果您需要这样做sudo make install,则意味着您无权访问您正在编写的任何地方。

因此,如果您使用 获得权限错误make install,请检查并查看您是否尝试安装到系统目录中,然后安装到/usr/local或类似的目录中。/usr/local保留用于本地安装。您可能需要允许自己写入/usr/local,但这通常很容易做到。在 Debian 上,这可以通过将您自己添加到staff组中来完成。更好的是,找到或创建一个二进制包,然后安装它。这样您就可以轻松跟踪已安装的软件包并获得软件包管理的其他好处。

请注意/usr/local,根据 FHS,包管理系统相反不会安装到 中。有关概述,请参阅Debian 政策手册 - 文件系统层次结构的第 9.1 节


lat*_*bie 5

正如上面已经回答的那样,sudo make install允许您将文件安装在对用户来说是只读的目录中。

我可以预见的问题是,稍后您可能想要卸载或升级该程序。如果您仍然拥有源代码目录树,那么 amake uninstall将为您卸载该程序,但如果像许多其他典型用户一样,您已经删除了源代码目录树,那么您就不走运了。由于您没有使用包管理系统安装该程序,因此您可能也无法通过这种方式卸载该程序。

安装此类程序的最佳方法可能是将它们安装在您的主目录中。将选项传递--prefix=/home/<user>/<some>/<directory>./configure. 这将允许您使用make install而不是sudo make install因为/home/<user>/<some>/<directory>您可以写入。卸载也很简单——rm -rf /home/<user>/<some>/<directory>