在程序 GNU Stow(符号链接场管理器/包管理器/无论您想如何称呼它)中,您可以运行以下命令将包安装到/usr/local
:
./configure --prefix=/usr/local
make
sudo make prefix=/usr/local/stow/foo-1.2 install # well not nessecarily sudo but this is personal preference
cd /usr/local/stow
sudo stow foo-1.2 # you have to have sudo here
基本上,您是在欺骗软件包,以便程序链接到/usr/local
,但它实际上安装在/usr/local/stow/foo-1.2
.
但如果有的话怎么办没有配置脚本?那我该如何欺骗它呢?一些没有配置脚本的著名程序:
- bzip2(这是我为其编写问题的程序)
- R(编程语言)
答案1
首先,使用时stow
和GNU autotoolsconfigure
脚本,使用
$ ./configure --prefix=/usr/local/stow/package-version
这样,当您调用make
.
bzip2
附带一个现成的 Makefile。它还具有一个README
文件,准确解释了如何将其安装在非标准位置:
HOW TO BUILD -- UNIX
Type 'make'. This builds the library libbz2.a and then the programs
bzip2 and bzip2recover. Six self-tests are run. If the self-tests
complete ok, carry on to installation:
To install in /usr/local/bin, /usr/local/lib, /usr/local/man and
/usr/local/include, type
make install
To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type
make install PREFIX=/xxx/yyy
这意味着您可以使用
$ make install PREFIX=/usr/local/stow/bzip2-1.0.6
如果你希望。
R 附带了一个configure
脚本,至少在我下载用于测试的版本 3.4.1 的源代码发行版中是这样。
使用 CMake 构建的程序可以使用以下命令安装在可配置位置
$ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/stow/package-version .
$ make && sudo make install
如果 GNU 自动工具尚未用于创建configure
脚本,并且它不是 CMake 项目,那么请阅读有关如何安装该程序的README
和/或文件(尽管如此,您显然应该这样做)。INSTALL
大多数节目是能够很容易地安装在非默认位置。
如果情况变得更糟,只需阅读 Makefile。