CentOS7下的软件安装方法及策略详解

2020-01-30 16:42:16王冬梅

sudo yum install PackageName

官方 rpm 包

大部分非开源的软件,在 CentOS 官方源或 EPEL 中是没有的。有些软件的官方网站会提供官方 rpm 包。此时可以从官方网站下载与当前系统对应的 rpm 包,直接用如下命令安装:

sudo rpm -i PackageName.rpm

比如,WPS for Linux 就是其中一个。在安装的过程中 rpm 命令会自动检查依赖关系,若该软件所依赖的包在官方源和 EPEL 源中可以找到,则自动安装。

直接安装 rpm 包的做法相当省事,但该软件不能由 yum 更新,稍稍麻烦一点。有些软件,比如前面提到的 Google、Dropbox 和 Adobe 其实也可以通过这种方法安装,在安装的同时会给系统添加源,对于这类软件依然可以很方便的更新与删除。

解压即用

有些软件,官方提供了压缩包,解压之后即可直接运行其中的二进制文件,比如很多 Java 写的软件。这类软件没有给源代码,而是给了可以在当前平台下直接执行的二进制文件。大多数非开源的商业软件都采取这种办法。

比如 sublime_text、pycharm、mendeley、TauP、sac 等,直接解压,然后将解压后的文件夹复制到 /opt 目录下,然后将该软件的 bin 目录加入到 PATH 中即可。 比如 Mathematics、Matlab、intel studio,软件包中提供安装脚本,执行该脚本即可安装;

Linux 下的习惯是,商业软件或第三方软件都安装到 /opt 目录下,这也是大多数商业软件包的默认安装路径,尽量遵循该习惯。

第三方 rpm 包

有些软件,CentOS 源和 EPEL 源中找不到,官方又没有提供 rpm 包,但是其他第三方源提供了 rpm 包。分情况讨论:

若该第三方源只包含了很少量的包,且确定这些包与官方源以及其他已使用的第三方源不冲突,则可以添加该第三方源。 若该第三方源包含了很多软件,很可能与官方源或 EPEL 源有冲突,则不添加该源 若该软件包没有复杂的依赖关系,则直接安装该源中的 rpm 包; 若该软件包依赖于该第三方源中的其他包,则放弃,寻找其他方法;

第三方包管理器

不同的发行版使用不同的软件包管理器,CentOS 使用 yum,Ubuntu 使用 apt-get。近些年又出现了一些与发行版无关的第三方包管理器,比如 Linuxbrew、Gentoo Prefix、pkgsrc。

Linuxbrew

Linuxbrew 是由 OS X 平台下非常流行的 Homebrew 移植到 Linux 下的。Linuxbrew 可以作为系统自带的包管理器的一个补充。其特色在于:

所有软件都安装在 ${HOME}/.linuxbrew 目录下; 软件的版本相对很新; install、uninstall、info、list、update、upgrade 等功能 若库中没有需要的软件包,可以很简单地自己创建 formulae

试用了一下,一个比较坑的地方是,linuxbrew 会自己内部解决依赖问题。比如,我试着通过 linuxbrew 安装 terminator,然后发现 terminator 依赖于Python,尽管系统已经安装了 python,linuxbrew 还是会安装一份 python,又由于 python 依赖于更多的东西,导致又安装了更多软件包在 home 下。而且,linuxbrew 是从源码编译软件的,所以相对来说速度较慢。