借鉴seisman安装软件时的文件放置选择
对于大型的软件包的安装来说:
当下载成功一个软件的压缩包后: tar -xvf xxxx.tgz ./configure --prefix=/opt/xxxx make sudo make install 一般来说,这类软件的默认安装目录都是 /usr/local ,最终文件会被分别放在 /usr/local 的 bin、lib、share、man 目录下。 我个人非常不喜欢这种方式,因为作为一个通过源码编译的软件来说,意味着编译者 要完全负起管理该软件的义务,这样的放置方式会来更新或卸载软件带来很多麻烦。 所以我总是会在 configure 的时候加上 prefix 手动指定安装路径。要卸载该软件就直接删除 /opt 下对应的目录,要更新的话,也可以先删除,再重新编译一遍。这样做稍微麻烦的一点是, 需要手动将该软件的 bin 目录加入到 PATH 中,还有可能需要修改 LD_LIBRARY_PATH。 但是一般来说,需要编译源码的软件很少,所以不会造成太大的麻烦。
对于小型的软件,有的甚至仅需要其编译成功的二进制文件的软件安装来说:
前一节 “编译源码” 主要针对的是一些大型软件包,这一节 “编译代码” 指的是对一些 专业性很强的小代码包的处理方式。比如有些软件包编译之后实际需要的只是一个 二进制文件,这个时候就没有必要安装到 /opt 了,合适的方式是在自己的 HOME 下 建立 bin 目录,并将其路径加入到 .bashrc 中,然后将编译生成的二进制文件复制 到该目录下即可: mkdir ${HOME}/bin echo 'export PATH=${HOME}/bin:$PATH'>> ~/.bashrc
比如seisman的 ${HOME}/bin 目录下有如下文件: distaz :给出地球上两点经纬度,计算震中距和方位角 pssac :在 GMT 中绘制 SAC 文件 rdseed :SEED 格式转 SAC 格式 win2sac_32 、 catwin32 :Hi-net 网站提供的用于处理 Hi-net 数据的程序 st :sublime_text 被安装到 /opt 目录下,在此建立一个软链接,方便在命令行调用 sublime text wlt.pl :校内用于登陆网络通的脚本,在命令行修改网络端口,好 happy fk 、 fk.pl 、 syn 、 trav :Prof. Lupei Zhu 的用于计算合成地震图的程序,源代码有不少,实际需要用的也就这三个可执行文件和一个 perl 脚本。 matlab :指向 matlab 的一个软连接; 不要随便什么二进制文件都往 bin 里放,这里只应放一些常用的命令或很通用的。
要说明的是有一些软件最好自己安装而不是通过源安装:
自成系统的软件 有一类软件,其拥有众多模块或包,为了管理这众多的模块,就需要拥有一个自己的模块 / 包管理器。这其中以 TeX、Perl 和 Python 为代表。对于这一类软件,其众多的模块是最大的优势,也是最值得利用的资源,因而我通常会选择手动安装它们,原因如下: 系统的源中不可能包含该软件的所有模块; 系统的源中该软件的模块的更新要远远滞后于最新版本; 当然,即便是使用系统自带的版本,也依然可以用该软件自带的包管理器来安装模块。但将导致: 部分模块用系统的 yum 管理,部分模块用软件自带的包管理器管理; yum 安装的模块一般版本较老,软件的包管理器要安装的大多是最新版本; 这一方面会导致模块管理的混乱,另一方面用软件自带的包管理其安装模块时,可能会依赖于其他模块的最新版本,若该模块是通过系统 yum 安装的较旧的版本,则可能导致模块的安装失败。 因而,对于这类软件,一般单独安装,并用各自的包管理器管理模块: TeXLive:通过 TeXLive iso 镜像文件安装,使用其自带的 tlmgr 管理包 Perl:通过 plenv 安装最新版本的 Perl,使用 plenv 自带的 cpanm 安装模块 Python:通过 pyenv 安装最新版本的 Python,使用 Python 自带的 pip 安装模块
虽然如此,一般软件安装 遵行的规则仍是:
为系统添加 EPEL 源、Nux Dextop、ELRepo 源和个别其他小型第三方源 能够从源中安装的就从源中安装 不能从源中安装的尽量找 rpm 包安装 找不到 rpm 包的就试试 linuxbrew 能不手动编译的就不要手动编译