在 linux 上安装软件时,添加软件 bin 还是只为 bin 中的可执行文件添加 soft link?
Add software bin or just add soft link for executable file in bin when install software on linux?
我不是 linux 服务器的 root,
所以我选择在我的 $HOME/local/bin
中安装软件,我已经将 $HOME/local/bin
目录添加到 PATH 环境变量中,写在我的 .bashrc
中。
有些软件是这样安装的:
tar xvzf ncurses-5.9.tar.gz
cd ncurses-5.9
./configure --prefix=$HOME/local
make
make install
cd ..
所以它会直接安装在我的$HOME/local/bin
中。
但是有些软件,像sbt-1.2.1.zip
(基于java)下载后,解压后,只显示一个文件夹sbt
,包含三个文件夹bin conf lib
,并在其 bin
中包含一个名为 sbt
和 java9-rt-export.jar sbt-launch-lib.bash sbt-launch.jar sbt.bat
.
的可执行文件
这里我想知道:
我应该在我的 $HOME/local/bin
下软化 link 这个可执行文件 sbt
文件路径,然后获取我的 .bashrc
?
或者,解压后,在我的.bashrc中添加一行export PATH="downloadpath/sbt/bin:$PATH"
?
由于只有一个可执行文件downloadpath/sbt/bin
,所以我不确定添加整个bin fold路径是否正确,如果软件的bin fold包含可执行文件(一个或多个),我认为这种情况更方便直接添加它.bashrc 中的 bin,但即便如此,我不确定它是否正确?
以前对安装软件不熟悉,现在总算知道方法了
但不是为什么。这里我展示两种方式(更多方式这里就不展示了)
安装,可执行文件总是写在bin或src?但一些
软件没有 bin 只有 src 但里面没有可执行文件...
- Slurm 也可以使用模块来安装软件,conda 也可以使用其他方式,但我想
确认我提到的这些传统方式(那两个)仍然可以
在 slurm 或 conda 上使用?
但是,任何建议,哪怕是一个方面的提醒,都将不胜感激!
我认为您的设置有问题。如果你的服务器上没有 root 帐户,在更安全的环境中测试你必须测试的东西不是更好吗 - 例如你的开发机器上的 vm/container?
但是,在您的情况下,使用单独的 bash 脚本启动 sbt 可能比修改 .bashrc
更好
对于预编译软件,或者一般来说,不提供配置脚本或 (C)make 文件的软件,最好将它们留在目标目录中并调整 *PATH
(PATH
二进制文件,LD_LIBRARY_PATH
,LIBRARY_PATH
库和 CPATH
包含文件,MANPATH
手册页)环境变量。
原因是该软件可能被配置为读取具有硬编码路径的文件,相对于可执行文件的位置,例如库等。
在您的情况下,您可能还需要将 CLASSPATH
环境变量设置为包含 jar
文件的目录。
为了简化软件安装,您可以使用诸如 easybuild 之类的工具来提供帮助,甚至可以像系统管理员安装的系统模块一样创建用户模块。
我不是 linux 服务器的 root,
所以我选择在我的 $HOME/local/bin
中安装软件,我已经将 $HOME/local/bin
目录添加到 PATH 环境变量中,写在我的 .bashrc
中。
有些软件是这样安装的:
tar xvzf ncurses-5.9.tar.gz
cd ncurses-5.9
./configure --prefix=$HOME/local
make
make install
cd ..
所以它会直接安装在我的$HOME/local/bin
中。
但是有些软件,像sbt-1.2.1.zip
(基于java)下载后,解压后,只显示一个文件夹sbt
,包含三个文件夹bin conf lib
,并在其 bin
中包含一个名为 sbt
和 java9-rt-export.jar sbt-launch-lib.bash sbt-launch.jar sbt.bat
.
这里我想知道:
我应该在我的
$HOME/local/bin
下软化 link 这个可执行文件sbt
文件路径,然后获取我的.bashrc
?
或者,解压后,在我的.bashrc中添加一行export PATH="downloadpath/sbt/bin:$PATH"
?
由于只有一个可执行文件downloadpath/sbt/bin
,所以我不确定添加整个bin fold路径是否正确,如果软件的bin fold包含可执行文件(一个或多个),我认为这种情况更方便直接添加它.bashrc 中的 bin,但即便如此,我不确定它是否正确?以前对安装软件不熟悉,现在总算知道方法了 但不是为什么。这里我展示两种方式(更多方式这里就不展示了) 安装,可执行文件总是写在bin或src?但一些 软件没有 bin 只有 src 但里面没有可执行文件...
- Slurm 也可以使用模块来安装软件,conda 也可以使用其他方式,但我想 确认我提到的这些传统方式(那两个)仍然可以 在 slurm 或 conda 上使用?
但是,任何建议,哪怕是一个方面的提醒,都将不胜感激!
我认为您的设置有问题。如果你的服务器上没有 root 帐户,在更安全的环境中测试你必须测试的东西不是更好吗 - 例如你的开发机器上的 vm/container? 但是,在您的情况下,使用单独的 bash 脚本启动 sbt 可能比修改 .bashrc
更好对于预编译软件,或者一般来说,不提供配置脚本或 (C)make 文件的软件,最好将它们留在目标目录中并调整 *PATH
(PATH
二进制文件,LD_LIBRARY_PATH
,LIBRARY_PATH
库和 CPATH
包含文件,MANPATH
手册页)环境变量。
原因是该软件可能被配置为读取具有硬编码路径的文件,相对于可执行文件的位置,例如库等。
在您的情况下,您可能还需要将 CLASSPATH
环境变量设置为包含 jar
文件的目录。
为了简化软件安装,您可以使用诸如 easybuild 之类的工具来提供帮助,甚至可以像系统管理员安装的系统模块一样创建用户模块。