我需要在 SuSE Linux 计算机上安装 netcdf,但在理解 usr/local/ 文件夹和 myusername/local/ 文件夹时遇到一些问题。我认为我需要做的是进入未压缩的 netcdf 文件夹并执行
./configure --prefix=/usr/local/netcdf-gfortran
但是我需要创建这个文件夹,对吗?为什么在 usr/local 而不是在我的用户名/local ...?
答案1
通常的组合是:
./configure --prefix=... [more options]
make
make install
您可能不想使用,/usr/local
因为这也需要根权限,所以它是--prefix=$HOME
或--prefix=$HOME/programs
(或其他更适合您的东西)。
与您的系统管理员讨论其他软件可能是值得的 - 无论如何您都应该与他讨论,因为 openSUSE 11.3 已经过时了。至少他应该升级到11.4 常青树,至少接收安全更新。
至于构建包,通常最好查看一下.spec 文件了解什么可能是有用的configure
选项、源代码补丁和构建技巧 - 根据您的情况,您可能需要检查openSUSE:Factory 的 netcdf .spec 文件(或任何较旧的发行版)。
答案2
一般来说,在Linux下,/usr
是指由发行版提供并由其软件包管理器(dpkg/apt、rpm/yum、emerge等)管理的程序,以及/usr/local
由系统管理员手动安装和管理的程序。/usr
和下的程序/usr/local
是为所有用户安装的。
如果您想安装程序供自己使用,请将它们放在您的主目录下的某个位置。
我建议使用斯托或者X斯托跟踪您手动安装的程序。 (使用其中之一:它们是同一概念的实现。)当您手动安装程序时,您可以在两个不方便的选项之间进行选择:
- 将所有程序放在同一目录中。然后,您将很难将它们分类,确定哪些文件属于哪些程序,卸载程序等。另一方面,所有程序都很容易使用:您只需更新一次 PATH 和其他类似设置。
- 将每个程序放在自己的目录中。然后卸载就像 一样简单
rm -r
。缺点是你必须将每个程序添加到 PATH 等等。
斯托为您提供两全其美的选择。该工具维护从公共目录到每个程序目录的符号链接。您将每个程序(从源代码或二进制包)安装在 下其自己的目录中stow
,并且 Stow 在bin
, lib
, man
, …中创建符号链接
programs/stow
因此,在您的主目录下创建一个目录。安装 netcdf
./configure --prefix=~/programs/stow/netcdf-gfortran-4.3
make
make install
stow netcdf-gfortran-4.3
然后从该目录运行~/programs/stow
以为该包的所有部分创建符号链接。
编辑您的.profile
(或您放置环境设置的任何位置)以添加~/programs/bin
到可执行搜索路径、~/programs/lib
库搜索路径等。
PATH="$HOME/programs/bin:$PATH"
if [ -n "$LD_LIBRARY_PATH" ]; then
export LD_LIBRARY_PATH="$HOME/programs/lib:$LD_LIBRARY_PATH"
else
export LD_LIBRARY_PATH="$HOME/programs/lib"
fi
if [ -z "$MANPATH" ]; then
MANPATH=$(manpath)
fi
export MANPATH="$HOME/programs/share/man:$HOME/programs/man:$MANPATH"
编译程序时,传递--with-cppflags="-I $HOME/programs/include"
toconfigure
以便它可以在存放区域中找到标头。
有关更多信息,请参阅跟踪程序和在过时的生产机器上安装最新软件的有效方法是什么?