CentOS7 源与软件安装

一、前言

使用linux操作系统中难免会遇到一些坑,其中软件安装更是其中一个重要方面。比如说:

  1. 官方源中的软件包版本太老,在功能上无法满足需求;
  2. 多个源的软件包存在版本冲突;
  3. 手动编译软件,默认会将不同文件放置在/usr/local下不同的子目录下,由于使用软件版本,使得卸载变得极为麻烦,难以卸载干净。

出于上面的原因的考虑,下面主要说一下CentOS7源的情况与配置方法,以及如何才能够保持比较好的软件管理方式。

二、官方源与第三方源

2.1 官方源与第三方源的选择

CentOS 自带的四个官方源中,默认打开的有 base、updates、extras,这三个源中包含了约9000个软件包,是最稳定、也是最值得信赖的源,一般情况下安装官方源中的软件,是不会出现依赖冲突的问题,所以是选择安装软件的首选。

然而官方源虽然包含了大量的软件包,但是无法满足日常需求,而第三方源则可以提供更多的软件包。然而,虽然使用第三方源会增加软件包的数量,但是同时也会带来包冲突的问题。如要表现有两种:

  1. 第三方源和官方源有相同的包,使得官方源的包被第三方源中的所替代;
  2. 多个第三方源存在不同版本的软件包;

软件包冲突造成的后果往往是非常麻烦的,往往会导致一些软件因为依赖问题无法安装。所以一般情况下要遵循一些基本规则,如:只选择可靠的第三方源,确保第三方源不会替换掉官方源中包,以及尽可能的少的使用第三方源,以防止第三方源之间的冲突。

根据这个原则,一般可选择的第三方源有:

  1. EPEL (Extra package for Enterprise Linux),是一个由特别兴趣小组创建、维护并管理的,针对 红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS、Scientific Linux、Oracle Enterprise Linux)的一个高质量附加软件包项目1
  2. ELRepo:一个主要用支持RHEL的硬件驱动的源。
  3. Nux Dextop:多媒体相关的包,与EPEL有个别的软件冲突。

当然了,此处也列举一些网上常见,但是确认不再维护的源了,如PRMForge/RepoForge,Webtatic Repo等。一般情况下只安装EPEL和ELRepo即可。

2.2 更换官方源的地址为国内

CentOS默认情况自带的yum源的服务器一般位于国外,国内用户更新和安装软件速度都会比较慢,为了提高下载速度,最好的情况是更新和配置国内的yum源。国内比较好源有网易163的源,搜狐和教育网的等等。下面使用如何将官方源更换为国内的源。

下面是具体操作手法

$ cd /etc/yum.repos.d    #进入主目录
$ mv CentOS-Base.repo CentOS-Base.repo_bk   #移除并备份原有网络源
#下载相应的repo源文件,下载地址可以参考http://mirrors.163.com/.help/centos.html
$ wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
$ yum clean all  #清除所有缓存
$ yum makecache  #更新缓存

2.3 添加第三方源

EPEL和ELRepo第三方源的安装方法极为简单,直接通过其安装指南,一条命令即可安装。

# 安装epel源,由官方的extra直接提供
$ sudo yum install epel-release
# 安装ELRepo源,参考网址为:http://elrepo.org/tiki/tiki-index.php
$ sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

安装完成之后均会在/etc/yum.repos.d的目录多一个repo的文件,如果想要移去该源,只需要删除它或者更改名称或者将里面内容的enable的值更改为0即可。

安装完成之后,记得要刷新一下cache.

2.4 提高源的下载速度

yum-axelget是EPEL提供的yum插件,通过axel来实现yum安装时并行下载,提高下载速度。安装方法为:

$ yum install yum-axelget

三、软件安装策略

3.1 Linux下软件的来源

一般来说,Linux下的软件看起来似乎比windows要麻烦很多,但是如果熟悉了如何安装之后,总的来说,还是比较方便的。其中主要来源有五种:

  1. 官方源或者第三方源中直接获取;
  2. 已编译好,解压即用的包;
  3. 源码包;
  4. 由软件官方或第三方打好的包;
  5. 非当前系统包管理器支持的包;
  6. 由第三方包管理器安装的包。

大多数情况下,对于服务器来说,一般只使用前三种包,而4,5,6两种比较少见。主要原因是4和5两种方式的包都是非常不正式的,容易带来服务器的不稳定,但是对于用户来说,实现自已多样化的需求才是王道,只要能用上不就OK?,所以4,5,6对于用户来说,也是不错的选择。

3.2 各种类型包的安装方法

3.2.1 源包安装

这种直接安装的方式是最简单也是最常用的也是最值简推荐的一种安装方式。下面列出Centos7下包管理器的一些基本用法。

$ yum check-update #检查可更新包
$ yum update #更新包
$ yum list  #列出已安装包
$ yum search [name] # 搜寻包

3.2.2 解压即用的包

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

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

Linux 下的习惯是,商业软件或第三方软件都安装到/opt目录下,这也是大多数商业软件包的默认安装路径,尽量遵循该习惯.实际上,为了方便管理,所有第三方软件都应当放置到/opt中去,然后使用添加环境变理的方法来添加相应的应用。

3.2.3 源码包

相当一部分软件都提供源码的安装方式,一般情况下都是三步走:

$ ./configure --prexfix=$HOME
$ make
$ make install

但是作为系统所用的软件,本人很不建议使用make install的方法,因为没有包管理器的存在,卸载比较麻烦。对于这种软件,要么使用添加环境变量的方式来解决,要么自已打个包来方便管理。如果自已会压包的话,自然自己打个包是更好的方法。

3.2.4 对于第三方打好的rpm包

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

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

3.2.5 非当前系统包

如果你需要rpm包,结果发现发布人只提供了deb包,或者只能找到deb包,这个时候该如何?实际上包管理器只不过将已编辑的包添加上依赖和内部文件等信息而已,故完合可以拆开该包看看,里面的主控文件,对于依赖的要求,然后自已手动装上依赖,再自行手动添加环境即可。这种方式对于Linux包管理具有较深的理解的时候,即可使用。

3.2.6 第三方包管理器

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

其中Linuxbrew是一借鉴Mac OS X的包管理器。其主要特点有:

  1. 足够的新,软件更新较快
  2. 容许非root用户自由的安装软件到$HOME目录下
  3. 若库中没有需要的软件包,可以很简单的自己创建formulae

但是比较麻烦的是,linuxbrew会自己内部解决依赖问题,所以一般情况下可能会导致安装与系统重复软件包。

3.3 软件安装总结

  1. 为系统添加 EPEL 源、Nux Dextop、ELRepo 源和个别其他小型第三方源
  2. 能够从源中安装的就从源中安装
  3. 不能从源中安装的尽量找 rpm 包安装
  4. 找不到 rpm 包的就试试 linuxbrew
  5. 手动编辑的包要尽量放到一起,放便管理

references

此条目发表在LINUX, 软件安装分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。