无root权限下如何成功执行make install?(RPM打包场景)
Autotools项目无root执行make install及RPM打包错误解决方案
一、无root权限执行make install的解决方法
你的问题出在默认prefix设为/dbg,普通用户没有该目录的写入权限。有两种常用解决方式:
使用
DESTDIR指定临时安装目录(RPM打包场景首选):
执行make install时通过DESTDIR参数把文件安装到你有权限的临时目录下,所有原路径会被挂载到这个临时目录下:make install DESTDIR=/home/vagrant/tmp_install执行后,文件会被安装到
/home/vagrant/tmp_install/dbg/etc/foo这类路径,完全在你的权限控制范围内。重新配置时修改
prefix到用户权限路径:
重新运行configure时指定自己有权限的前缀路径,比如:./configure --prefix=/home/vagrant/local make make install此时安装路径会变为
/home/vagrant/local/etc/foo,普通用户可直接操作。
二、RPM打包错误的原因及解决
config.status: error: cannot find input file: .libgnu/gnu/Makefile.in这个错误和你之前用root执行make install无关,主要是Autotools生成的配置文件不完整,解决步骤:
- 清理之前的构建残留文件:
make distclean - 重新生成Autotools配置文件:
如果项目提供了bootstrap或autogen.sh脚本,直接运行:
若没有脚本,手动执行:./bootstrapautoreconf -i - 重新配置并构建RPM:
这个错误通常是因为项目依赖的子模块(如libgnu)未初始化,或者Autoconf/Automake的初始化步骤缺失,和root权限操作无关。./configure make make rpm
内容的提问来源于stack exchange,提问作者wwillfred
相关产品推荐
相关产品推荐

