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

我需要在Ubuntu 9.10服务器上设置什么,以便用户可以自由构建他们选择的应用程序(即./configure, make && make install),而无需sudo/admin权限。
我只是觉得将系统的某些部分授权给用户可能会带来一定的安全风险,因为他们可能并不需要这些权限来构建应用程序。
3个回答

如果您的用户使用
./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 - 现在一切都正常工作,所以谢谢。 - Big Rich

用户可以在没有sudo权限的情况下构建应用程序。唯一需要sudo权限的时候是当您想将某些东西安装到系统目录时。
`./configure`和`make`始终可以在没有sudo权限的情况下工作。`make install`通常需要sudo权限,因为它会将应用程序安装到`/usr/local`或`/usr`(有时是`/opt`)。
然而,如果您更改了安装路径的前缀(例如,`./configure --prefix=~/usr/local`),使得安装在用户的主目录树内执行,则`make install`不需要sudo权限。

我仍然认为你的答案没有完全支持。为什么 ./configuremake 总是可以在不使用 sudo 的情况下工作?我该如何向那些一直使用 sudo make install 的人证明它呢? - Nikos Alexandris

除了txwikinger所说的,你可能还想检查一下fakeroot,它可以在不需要提升权限的情况下使用dpkg构建.deb软件包。当然,安装这些软件包通常需要sudo访问权限。