我想运行'make install'所以我拥有我需要的所有东西,但是我希望将它们安装在自己的文件夹中而不是系统的/ usr / bin等可能吗?即使它引用了/ usr / bin等中的工具?
答案 0 :(得分:172)
这取决于包装。如果Makefile是由GNU autotools(./configure
)生成的,你通常可以这样设置目标位置:
./configure --prefix=/somewhere/else/than/usr/local
如果Makefile不是由autotools生成的,而是随软件一起分发的,只需在编辑器中打开并更改即可。安装目标目录可能在某处的变量中定义。
答案 1 :(得分:31)
由于不知道哪个版本的automake可以使用 DESTDIR 环境变量。
请参阅Makefile以确定。
例如:
export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
答案 2 :(得分:16)
它可能取决于您尝试编译的模块支持的内容。如果使用autotools生成makefile,请使用:
--prefix=<myinstalldir>
运行./configure
时某些软件包允许您在运行时覆盖:
make prefix=<myinstalldir>
但是,如果你没有使用./configure,只有这样才能确定是打开makefile并检查。它应该是顶部的前几个变量之一。
答案 3 :(得分:14)
make DESTDIR=./new/customized/path install
这个快速命令对我来说非常适合在Ubuntu 16上安装opencv 3.2.0版.DESTDIR路径既可以是相对路径,也可以是绝对路径。
只要DESTDIR位置对用户具有正确的访问权限,用户就没有管理员权限,这种重定向也很有用。例如/ home //
答案 4 :(得分:2)
如果包提供Makefile.PL
- 可以使用:
perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install
答案 5 :(得分:-1)
我尝试了上述解决方案。没有工作。
最后我打开了Makefile文件并手动将前缀路径更改为所需的安装路径,如下所示。
PREFIX ?= "installation path"
当我尝试--prefix,&#34; make&#34;抱怨没有这样的命令输入。但是,也许有些软件包接受--prefix,这当然是一个更清洁的解决方案。
答案 6 :(得分:-6)
尝试使用INSTALL_ROOT。
make install INSTALL_ROOT=$INSTALL_DIRECTORY