1.1 软件包系统

不同的Linux发行版用的是不同的软件包系统,并且原则上,适用于一种发行版的软件包与其他版本是不兼容的。

多数Linux发行版采用的不外乎两种软件包技术阵营,即 Debian.deb 技术和 Red Hat.rpm 技术。

当然也有一些特例,比如Gentoo、Slackware和Foresight等,但多数版本采取的还是下表中所列的两个基本软件包系统。

主流软件包系统类

软件包系统 发行版本(只举例了部分)
Debian类(.deb技术) Debian、Ubuntu
Red Hat类( .rpm 技术) CentOS、Red Hat

1.2 rpm 软件包命令

1.2.1 命令格式

rpm [选项] [软件包名称]

1.2.2 安装rpm包

1)安装常用选项

选项 描述
-i 安装rpm包
-v 显示安装详细信息
-h 显示安装rpm进度

2)使用实例

rpm -ivh  包名

# 网址
rpm -ivh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-2.el7.ngx.x86_64.rpm

# 全路径带包名
rpm -ivh /root/nginx-1.18.0-2.el7.ngx.x86_64.rpm

# 包名
rpm -ivh nginx-1.18.0-2.el7.ngx.x86_64.rpm

1.2.3 升级rpm包

1)升级选项

选项 描述
-U 如果老版本不存在则安装新版本,存在则升级新版本

2)使用实例

rpm -Uvh  包名

# wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.20.0-1.el7.ngx.x86_64.rpm
# rpm -Uvh nginx-1.20.0-1.el7.ngx.x86_64.rpm 

注意事项:

  1. 升级前做好备份。
  2. 测试环境测试好。

1.2.4 查询rpm包

1)查询常用选项

选项 描述
-q 查看指定软件包是否安装
-qa 查看系统中已安装的所有RPM软件包列表
-qi 查看指定软件的详细信息
-ql 查询指定软件包所安装的目录、文件列表
-qc 查询指定软件包的【配置文件】
-qf 查询文件或目录属于哪个RPM软件
-qip 查询未安装的rpm包详细信息
-qlp 查询未安装的软件包会产生哪些文件

2)-qa 查看系统中已安装的所有RPM软件包列表

# rpm -qa nginx

3)-qi 查看指定软件的详细信息

# rpm -qi nginx

4)-ql 查询指定软件包所安装的目录、文件列表

# rpm -ql nginx

5)-qc 查询指定软件包的【配置文件】

# rpm -qc nginx

6)-qf 查询文件或目录属于哪个RPM软件

# rpm -qf /etc/hosts
# rpm -qf /usr/bin/cp
# rpm -qf `which ifconfig`

7)-qip 查询未安装的rpm包详细信息

# rpm -qip nginx-1.18.0-2.el7.ngx.x86_64.rpm

8)-qlp 查询未安装的软件包会产生哪些文件

# rpm -qlp nginx-1.18.0-2.el7.ngx.x86_64.rpm 

1.3 yum智能软件包管理

1.3.1 yum介绍

1)什么是yum

Yum是RedHat以及CentOS中的软件包管理器。能够通过互联网下载 .rpm 包并且安装,并可以自动处理依赖性关系,无须繁琐地一次次下载、安装。
PS: yum是生产常用安装工具

2)什么是yum源

要想使用yum工具安装、更新软件,就需要有一个包含各种rpm软件包的软件仓库,这样的软件仓库就称为 yum 源。
yum源分为:

  1. 互联网yum源(阿里云、网易、清华源)。

  2. 局域网yum源(自己做一个yum源,http/ftp)(1.速度快。2.制作的rpm放到yum源)。

  3. 服务器本地yum源(上不了网,把iso作为yum源)。

3)常见互联网yum源

  1. 官方yum源:很多软件集合的在线仓库,也称为base基础源

  2. epel源:也称为拓展源,拥有很多base源没有的软件

  3. 第三方源:比如nginx,zabbix,Docker等软件开发方开源软件的官方仓库

PS:yum源默认都放在/etc/yum.repos.d/目录下,以*.repo结尾

常见互联网yum源地址:

4)Linux系统本地yum源配置

  1. 互联网阿里云yum源配置
#默认系统是国外源,需要替换为国内的源

方法1:
# wget -q -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

方法2:
# curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  1. 互联网epel源配置
#扩展源,有很多软件在基本源中没有
方法1:
# wget -q -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

方法2:
# curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

方法3:
# yum install epel-release
  1. 互联网特定软件官方源配置

    Nginx web软件官方源,有最新的nginx版本,查找方法:
    1)进入nginx.org,进入download页面。
    2)页面结尾进入“Linux packages for stable and mainline versions.”即可。
    3)配置如下

PS: http://nginx.org/en/linux_packages.html

# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo 
baseurl=http://nginx.org/packages/centos/7/$basearch/ 
gpgcheck=0
enabled=1

1.3.2 yum使用实例

1)使用yum查询软件包的方式

# 查看所有软件包
yum list

# 查看指定软件包 不需要yum list|grep tree.
yum list tree 

# 看软件包详细信息。
yum info ftp   

2)使用yum安装软件包的方式

# 需要确认
yum install tree

# 非交互
yum install tree -y   

#安装本地的rpm包, 如果有依赖关系, 会自动从互联网软件仓库中下载所需依赖
yum localinstall /mnt/Packages/bind-9.11.4-16.P2.el7.x86_64.rpm

#直接安装网络上的rpm包
yum install http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

3)使用yum重新安装软件包的方式(了解,工作中不用)

yum install vsftpd

# 1.如果不小心删除vsftpd配置文件
rm -f /etc/vsftpd/vsftpd.conf

# 2.可以对软件进行重新安装
yum reinstall vsftpd

# 3.检查软件的配置文件
rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

4)使用yum更新软件包(慎用)

#对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级
yum check-update

#更新acl软件
yum update acl -y

#如下的执行很危险,这代表更新整个系统所有的软件,包括内核
yum update -y

#注意事项:
1)生产线慎用,最好不用。
2)安装系统之后,上线前。
3)测试环境,模拟正式环境。然后上正式。

5)使用yum删除软件包

# yum remove samba -y

6)与yum仓库相关指令(扩展了解)

#列出yum源可用的软件仓库
yum repolist

#列出全部yum源可用和禁用的仓库
yum repolist all

#查找某个命令或文件属于那个软件包(生产常用)
yum provides /etc/my.cnf
yum provides cd