如何在没有sudo特权的情况下构建应用程序?


15

我需要在Ubuntu 9.10服务器上进行哪些设置,以便用户无需sudo / admin特权即可构建选择的应用程序(即./configure,make && make install)。

我只是觉得有一定的安全隐患,必须让用户访问他们可能不需要的系统部分才能构建应用程序。

Answers:


40

如果您的用户使用

./configure --prefix=/home/user/opt/

或用于cmake项目

cmake -D CMAKE_INSTALL_PREFIX:PATH=/home/user/opt/ ../source/

这会将程序安装在该前缀(而不是默认的/ usr / local /)中,然后您的用户应该能够像这样运行程序:

/home/user/opt/bin/program

如果希望他们仅使用名称(没有完整路径)就能运行程序,则需要将其添加/home/user/opt/bin到路径环境变量中,编辑用户.profile并添加以下行:

export PATH=/home/user/opt/bin:$PATH

请注意,以这种方式安装的程序将对特定用户私有,但这是一种实现方式


如果其他用户提供完整路径并且权限设置正确,则他们将能够使用像这样安装的程序;似乎默认的umask允许在我的桌面安装中使用此功能。
Alistair Buxton

我正在编译的代码库有一个Makefile配置,但没有配置,我进入了代码库并将其更改prefix = /some/path为我自己的主目录(没有尾斜杠),然后在make install没有sudo的情况下运行-现在都可以工作了,所以谢谢。
大富翁

8

用户可以构建没有sudo权限的应用程序。唯一需要sudo权限的时间是想将某些东西安装到系统目录中时。

./configure并且make总是在没有sudo权限的情况下工作。make install通常需要sudo权限,因为它将应用程序安装到/usr/local/usr(有时是/opt)。

但是,如果./configure --prefix=~/usr/local以一种将在用户的主目录树中执行安装的方式更改安装路径的前缀(即),则不需要sudo权限make install


我仍然认为您的答案尚未完全备份。为什么总是没有工作./configuremake工作?我应该如何向一个不断执行的人证明这一点呢?sudosudo make install
Nikos Alexandris

0

除了txwikinger所说的以外,您可能还需要检查fakeroot,这为构建.deb软件包提供了机会,dpkg而无需提升特权。当然,安装这些通常需要sudo访问。

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.