我正在尝试按照该教程 http://www.tellurian.com.au/whitepapers/multiplegcc.php 在 ubuntu 4.7.0 上安装 gcc 10.04。安装依赖项一段时间后,我已经能够运行 make 没有错误,但最后一步,make install 不想成功,最终权限被拒绝。
这是我所做的:
../gcc-4.7.0/configure --prefix=/usr/local/gcc/4.7.7 --enable-languages=c,c++
make
su -l
cd /groups/gobj
make install
最后一个命令的结果:
make[1]: Entering directory `/groups/gobj'
/bin/bash ../gcc-4.7.0/mkinstalldirs /usr/local/gcc/4.7.7 /usr/local/gcc/4.7.7
make[2]: Entering directory `/groups/gobj/fixincludes'
rm -rf /usr/local/gcc/4.7.7/libexec/gcc/x86_64-unknown-linux-gnu/4.7.0/install-tools
/bin/bash ../../gcc-4.7.0/fixincludes/../mkinstalldirs /usr/local/gcc/4.7.7/libexec
...
rm -f /usr/local/gcc/4.7.7/share/info/gccinstall.info
if [ -f doc/gccinstall.info ]; then
for f in doc/gccinstall.info*; do
realfile=`echo $f | sed -e 's|.*/([^/]*)$|1|'`;
/usr/bin/install -c -m 644 $f /usr/local/gcc/4.7.7/share/info/$realfile;
chmod a-x /usr/local/gcc/4.7.7/share/info/$realfile;
done;
else true; fi
if /bin/bash -c 'install-info --version' >/dev/null 2>&1; then
if [ -f /usr/local/gcc/4.7.7/share/info/gccinstall.info ]; then
install-info --dir-file=/usr/local/gcc/4.7.7/share/info/dir /usr/local/gcc/4.7.7/share/info/gccinstall.info;
else true; fi;
else true; fi;
build/genhooks -d
../../gcc-4.7.0/gcc/doc/tm.texi.in > tmp-tm.texi
/bin/bash: tmp-tm.texi: Permission denied
make[2]: *** [s-tm-texi] Error 1
make[2]: Leaving directory `/groups/gobj/gcc'
make[1]: *** [install-gcc] Error 2
make[1]: Leaving directory `/groups/gobj'
make: *** [install] Error 2
我已经尝试过 su root,su -,su 没有成功。某些文件被有效地复制到/usr/local/gcc/4.7.0 但该过程停止了,我不明白为什么,因为我以 root 身份登录。我已经检查过,文件/groups/gcc-4.7.0/gcc/doc/tm.texi.in 存在。有什么帮助吗?
费解的是,超级用户"root"无法创建文件,而普通用户可以创建文件,一种可能的情况是,您的构建目录(即运行" make install
"(的目录由 NFS 服务器提供服务,并且它可能被挂载,使得服务器不信任您的构建计算机以 root 身份写入文件的请求。
作为一个简单的测试,看看您是否可以通过以 root 身份运行 touch test
将空文件写入构建目录。如果失败,那么您已经找到了问题的根源。确认它的另一种方法是检查"mount
"的输出,至少确认您的构建目录是通过NFS提供的。
server:/groups 20G 948M 19G 5% /groups
如果您在挂载输出中看到这样的行,那么您肯定知道您的构建目录正在 NFS 挂载。但是,要判断root是否受信任,您最终必须检查NFS服务器上的设置。
修复问题
解决此问题的最快方法是在构建机器上找到本地文件系统并将构建目录的内容移动到那里,然后重新运行" make install
"。
你试过须藤吗?
sudo make install
编辑:
作为根,您可以将自己添加到 sudoers 中。如果您无法通过 sudo 获取根,请尝试
su - root
或
ssh root@...