sta*_*ant 2 compiling settings path environment-variables bashrc
我倾向于从源代码构建二进制文件。我通常的设置如下
$HOME/build -> this gets the sources
$HOME/programs -> this is where the build happen, so where the binaries are
Run Code Online (Sandbox Code Playgroud)
完成后,我将以下内容放入我的 bashrc
export MYNEWBINDIR = $HOME/programs/...
export PATH=$MYNEWBINDIR:$PATH
Run Code Online (Sandbox Code Playgroud)
我的问题是:这是推荐的方式吗?例如,我可以创建一个 local $HOME/bin
,符号链接那里的所有二进制文件,然后将其添加到路径中...
或多或少取决于个人按照他们的意愿去做,但我建议您始终保留基本系统或任何包管理器已经使用的目录。您真的不想通过覆盖以前安装的文件来混淆包管理器!所以绝对不要管/bin
。
在大多数系统上,这/usr/local
应该是您安装东西的安全区域,尽管这也被某些系统上的包管理器使用(例如 FreeBSD 和 OpenBSD,因为它们将从端口/包安装的软件视为本地软件。
另请参阅维基百科中的条目“文件系统层次结构标准”和“ Unix 文件系统”。
一些 Unices 还提供您可以参考的hier(7)
手册。(链接指向 OpenBSD 的版本,但它也至少在 Linux 中的 Ubuntu 上可用。在 OpenBSD 的情况下,它记录了系统软件知道的目录,因此它没有提及/opt
,例如)。
您在哪里构建东西并不重要,因为它是一个目录,无论如何您都可能在完成后删除它。不过,最好远离实际的安装目录。我曾研究过在/bin
和 中有源树的系统/usr/local
,这非常不整洁。
我还建议您make install
对软件进行实际操作,而不是从构建目录中运行可执行文件,除非您正在调整构建。将可执行文件收集在一个位置可以使您的PATH
设置更清晰、更容易,除非您确实希望PATH
每个软件都有一个不同的元素,显然。
个人意见如下:
对于我专门为自己构建的软件,我倾向于使用私有层次结构$HOME/local
进行安装。
当编译使用 GNU 自动工具并因此具有configure
脚本的程序时,这真的很容易。你只是说
$ ./configure --prefix="$HOME/local"
Run Code Online (Sandbox Code Playgroud)
在配置阶段,之前make
和make install
.
在编译使用 CMake 的程序时,可以通过
$ cmake -DCMAKE_INSTALL_PREFIX="$HOME/local" .
Run Code Online (Sandbox Code Playgroud)
在make
和make install
步骤之前。安装 Perl 模块等时可能会产生相同的效果(通过其他方式)。
那么你显然必须添加$HOME/local/bin
到你的路径中......
就个人而言,我也使用GNU Stow,这意味着我并没有真正指定$HOME/local
为安装前缀,而是$HOME/local/stow/thing-2.1
在配置软件包时指定thing-2.1
。
安装后:
$ cd "$HOME/local/stow"
$ stow thing-2.1
Run Code Online (Sandbox Code Playgroud)
$HOME/local/stow/thing-2.1/bin
目录的内容将显示(使用符号链接)$HOME/local/bin
(对于lib
安装在 下的任何或其他目录也是如此thing-2.1
)。
Stow 使卸载软件变得非常容易。不需要make install
为了卸载和删除一个软件而去寻找一个人安装的每个小文件,而只是
$ cd "$HOME/local/stow"
$ stow -D thing-2.1
$ rm -rf thing-2.1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
703 次 |
最近记录: |