我想运行“ make install”,这样我就能拥有所需的一切,但是我希望将它们安装在自己的文件夹中,而不是系统的/ usr / bin等。这可能吗?即使它引用了/ usr / bin等中的工具?
我想运行“ make install”,这样我就能拥有所需的一切,但是我希望将它们安装在自己的文件夹中,而不是系统的/ usr / bin等。这可能吗?即使它引用了/ usr / bin等中的工具?
Answers:
这取决于包装。如果Makefile是由GNU自动工具(./configure
)生成的,则通常可以这样设置目标位置:
./configure --prefix=/somewhere/else/than/usr/local
如果Makefile不是由自动工具生成的,而是与软件一起分发的,则只需在编辑器中将其打开并进行更改即可。安装目标目录可能在某个位置的变量中定义。
make && make install
遵循configure子句?
--prefix
遇到的问题是,如果strings
以后在生成的二进制文件上运行,则会看到路径存储在内部。我不知道为什么会发生这种情况,但是我当然不希望我的机器路径位于运送给其他用户的二进制文件上。
由于不知道哪个版本的automake,可以使用DESTDIR环境变量。
确定请参见Makefile。
例如:
export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
这可能取决于您要编译的模块所支持的内容。如果您的makefile是使用自动工具生成的,请使用:
--prefix=<myinstalldir>
运行./configure时
一些软件包还允许您在运行时覆盖:
make prefix=<myinstalldir>
但是,如果您不使用./configure,则唯一可以确定的方法是打开makefile并进行检查。它应该是顶部的前几个变量之一。
make prefix=...
可能会导致二进制文件使用错误的硬编码路径,因为在此之后通常无法对其进行修改./configure --prefix=...
如果包装提供Makefile.PL
-一个可以使用:
perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install
尝试使用INSTALL_ROOT。
make install INSTALL_ROOT=$INSTALL_DIRECTORY