Linux基础之软件包管理 rpm 及 yum

野性酷女 2023-05-29 05:24 79阅读 0赞

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70

RPM(软件包管理器)

英文原义:RPM Package Manager(原Red Hat Package Manager,现在是一个递归缩写)

注解:一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。与Dpkg类似。

RPM 是Red-Hat Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。

  1. RPM包格式:name-version.type.rpm 软件名-版本号.包类型.rpm
  2. 安装:rpm -i /PATH/TO/RPM包名全称
  3. 卸载:rpm -e --nodeps RPM包名 //--nodeps 强制跳过依赖卸载
  4. 升级:rpm -U RPM包名
  5. 查询:rpm [参数] RPM包名
  6. 常用参数:
  7. rpm -vh //显示安装进度
  8. rpm -qa //查询系统中安装的所有RPM软件包
  9. rpm -q RPM包名 //查询指定软件包是否已安装
  10. rpm -qp RPM包文件名 //查询包中文件信息,安装前了解软件包中信息
  11. rpm -qi RPM包名 //查询系统中已安装包的描述信息
  12. rpm -ql RPM包名 //查询系统中已安装包里所包含的文件
  13. rpm -qf RPM包名 //查询系统中指定文件所属的软件包
  14. rpm -qa | grep php //检索系统中已经安装有关php的软件包
  15. rpm --noscript //不安装脚本
  16. rpm --nosignature //不检查合法来源
  17. rpm --nodigest //不检查完整性
  18. 验证:rpm -V [参数]

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 1

Tar(Linux系统命令)

Unix和类Unix系统上的压缩打包工具,可以将多个文件合并为一个文件,打包后的文件后缀亦为“tar”。tar文件格式已经成为POSIX标准,最初是POSIX.1-1988,当前是POSIX.1-2001。本程序最初的设计目的是将文件备份到磁带上(tape archive),因而得名tar。

tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户。

tar代表未压缩的tar文件。已压缩的tar文件则附加压缩文件的扩展名,如经过gzip压缩后的tar文件,扩展名为“.tar.gz”。由于受到DOS8.3文件名格式的限制,常使用下列缩写:

  • .tgz等价于.tar.gz
  • .tbz与tb2等价于.tar.bz2
  • .taz等价于.tar.Z
  • .tlz等价于.tar.lzma
  • .txz等价于.tar.xz

    建立TAR包:将多个文件或目录打包成一个文件
    tar -cvf TAR包名.tar /PATH/TO/<文件或目录名>   //只打包不压缩
    tar -zcvf TAR包名.gz /PATH/TO/<文件或目录名>   //将指定目录或文件打包后压缩,指定压缩格式为gz
    tar -jcvf TAR包名.bzip2 /PATH/TO/<文件或目录名>   //将指定目录或文件打包后压缩,指定压缩格式为bzip2
    tar -Jkc —level=9 -f TAR包名.xz /PATH/TO/<文件或目录名> //将指定目录或文件打包后压缩,指定压缩格式为XZ,压缩级别为9(默认为6),并且强制执行,压缩后保留源文件
    查询TAR包中内容
    tar -tf /PATH/TO/TAR包名.tar
    tar -ztf /PATH/TO/TAR包名.tar.gz
    tar -tvf /PATH/TO/TAR包名.tar.xz
    释放TAR包
    tar -xvf /PATH/TO/TAR包名.tar
    tar -zxvf /PATH/TO/TAR包名.gz
    tar -xvf /PATH/TO/TAR包名.xz -C /newpath/ //将压缩包解压到指定的目录,通用的解压缩格式

将 /etc 目录打包后压缩:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 2

解压缩刚才打包的 etc.tar.xz 文件到 /tmp 目录下:

20191104203750539.png


src源代码包

Linux上几乎所有的软件都经过了GPL授权,因此几乎所有的软件都会提供源码。而一个软件要在Linux上执行,必须是二进制文件,因此当我们拿到软件源码后,需要将它编译成二进制文件才能在Linux上运行。

  1. 安装前先释放tar
  2. 查看InstallReadme文件,了解安装和编译过程
  3. 进行编译准备:执行./configure命令+make命令进行编译
  4. 进行软件安装:执行make install命令
  5. 清除临时文件:执行make clean命令

下面我们编译安装 HTTP2.4 ,首先将 httpd-2.4.41.tar.gz 文件下载到本地:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 3

解压缩到 /tmp 目录下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 4

查看 INSTALL 和 README 后 执行 ./configure 生成Makefile文件(由于编译时间太长省略过程,只看结果):

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 5

接下来使用 make 命令进行编译,执行前先进行 make clean 清除之前编译过的文件,防止编译安装出错(由于编译时间太长省略过程,只看结果):

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 6

编译安装一切正常,下面启动 /usr/local/bin/apachectl 并查看 HTTPD进程、端口监听是否正常:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 7

查看网页显示:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 8


YUM

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。可供Yum下载的软件包包括Fedora本身的软件包以及源自rpmfusion和rpm.的Fedora Extras,全部是由Linux社区维护的,并且基本是自由软件。所有的包都有一个独立的PGP签名,主要是为了您的系统安全。而对于Fedora core 4.0 的用户,rpm.的签名是自动导入并安装的。

刚才在编译安装过程中省略了一些库文件和依赖包的安装过程,如果使用 RPM 包安装的话会非常麻烦,下面我们介绍使用 yum 来对RPM包进行管理,可以通过在yum的本地配置文件里设置URL来指定软件包的位置,方便以后选择安装某些程序包;yum可以自动处理包依赖关系,使安装更方便; 可以通过ftp、http、本地file等方式连接指定的文件服务器上的yum仓库。


yum命令说明

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 9

常用的选项有:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 10

yum 配置文件默认目录位置为 /etc/yum.repo.d :

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 11

系统默认使用 CentOS官方yum源,为了方便快捷,我们改为使用国内的 aliyun 或者 163 作为yum源,将原先的配置文件 mv 到 /bak/yum下备份:

20191104231906712.png

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 12

下载 163 的 yum 源文件:

  • CentOS 7
  • wget -O /etc/yum.repos.d/base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
  • CentOS 6
  • wget -O /etc/yum.repos.d/base-163.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 13

下载好 repo 文件后,清除 yum 缓存,重新生成:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 14


下面手动创建一个以光盘为介质的本地 yum 源,名称为 localrepo :

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 15

清除缓存后重新生成:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 16

这里发现网络源跟本地源同时存在,要想优先使用本地源的话,需要安装一个插件 yum-plugin-priorities:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 17

确保 yum-plugin-priorities 插件已经开启:

20191104220120690.png

下面将本地 localrepo 作为优先选择源,priority 权限取值为1~99,默认的权限为99,值越小权限越高,1 为最高

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 18

验证一下是否选择本地源作为安装优先:

插件开启前:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 19

插件开启后:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 20

发现启用插件后安装源已经由 base 改为 localrepo


为了方便使用本地源,在使用光盘时自动挂载,需要安装 autofs :

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 21

  • auto.master 配置文件里的 /misc 是默认挂载目录,也可以自定义
  • auto.misc 配置文件中注明了虚拟目录 cd ,这个目录不用创建,如果有多个光驱只需要在这里添加一行即可

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 22

  • 当需要挂载光驱时,autofs 会自动将光驱挂载至 /misc/cd 目录下
  • 有多个光驱时,autofs默认只先挂载第一个,有需要时才会挂载后续的光驱
  • 这里要注意光驱中必须有介质,不然会挂载失败

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 23

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 24


使用 createrepo 命令创建本地网络 yum 源

  1. 实验环境: centos 7 192.168.10.2 server yum
  2. centos 6 192.168.10.7 client
  3. server yum 作为本地 client 的网络 yum

在 server 端创建存放 rpm 包的目录(这里使用HTTP模式,需要先安装、配置、启动好HTTP服务):

20191111123510392.png

挂载 centos6 安装光盘并复制光盘上的 所有 .rpm 文件到刚才创建的目录下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 25

20191111132210479.png

复制完成查看一共有 6575 个文件,返回上级目录,使用 createrepo 命令来创建 yum 仓库:

注意:不能再Packages目录下执行

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 26

命令执行成功后会在该目录下创建一个repodata目录:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 27

repodata作为软件的仓库,其目录下有四个必要文件:filelists.xml.[gz],other.xml.[gz],primary.xml.[gz]和repomd.xml(md 意思是 metadata),其中最主要的是repomd.xml文件,存放软件包的元数据。

  • 一般出现的找不到repodata目录或文件的错误的原因通常有三个:
  • 一是路径问题,repodata目录必须和packages目录同层
  • 二是没有生成repodate目录
  • 三是*.repo配置文件冲突(这个需要特意注意)

在 client 端编辑 102.repo 文件:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 28

将原先的 local.repo 暂停使用:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 29

在 client 端清空 yum 缓存,并且重新生成,查看 yum 源是否为 server yum 源:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 30

20191111132310696.png

在 server yum 源添加或者删除一些 rpm 包后,可以使用 createrepo —update 来更新本地源:注意这里的 .

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 31

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 32

20210314115407702.png


使用 epel 源

EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.

  • 安装 epel-release 软件包,这个软件包会自动配置yum的软件仓库。
  • yum -y install epel-release
  • 使用国内的阿里云 epel 源
  • wget -O /etc/yum.repos.d/epel-aliyun.repo http://mirrors.aliyun.com/repo/epel-7.repo
  • 编辑配置文件,修改 enabled=1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 33

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 34

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 35


  • 使用国内 yum 源

  • 阿里云 源
  • CentOS 7
  • wget -O /etc/yum.repos.d/base-aliyun.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  • CentOS 8
  • wget -O /etc/yum.repos.d/base-aliyun.repo https://mirrors.aliyun.com/repo/Centos-8.repo
  • 或者
  • curl -o /etc/yum.repos.d/base-aliyun.repo https://mirrors.aliyun.com/repo/Centos-8.repo
  • CentOS 6
  • curl -o /etc/yum.repos.d/Base-6.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
  • 163 源
  • CentOS 7
  • wget -O /etc/yum.repos.d/base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
  • CentOS 8
  • wget -O /etc/yum.repos.d/base-163.repo http://mirrors.163.com/.help/CentOS8-Base-163.repo

  • 更新 Epel 源

  • 官方 epel 源 https://dl.fedoraproject.org/pub/epel/
  • CentOS 7.X:
  • rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  • CentOS 6.X:
  • rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
  • yum —disablerepo=epel -y update ca-certificates
  • yum -y install epel-release
  • CentOS 8.X:
  • rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
  • aliyun epel 源
  • wget -O /etc/yum.repos.d/epel-8-aliyun.repo http://mirrors.aliyun.com/repo/Centos-8.repo
  • wget -O /etc/yum.repos.d/epel-aliyun.repo http://mirrors.aliyun.com/repo/epel-7.repo
  • wget -O /etc/yum.repos.d/epel-aliyun.repo http://mirrors.aliyun.com/repo/epel-6.repo

  • PHP yum remi 源 http://rpms.remirepo.net/enterprise/

  • CentOS 7.X :
  • rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
  • rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
  • CentOS 6.X :
  • rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-6.rpm
  • rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

  • nginx yum 官方源 http://nginx.org/packages/

  • CentOS 7.X :
  • rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  • CentOS 6.X :
  • rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

  • MariaDB yum 源

  • 导入GPG key
  • rpm —import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  • vim /etc/yum.repos.d/MariaDB.repo
  • 官方源
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.1/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1

    enabled=1

  • 或者使用国内中科大源

  • [mariadb]
    name = MariaDB
    baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.1/centos7-amd64/
    gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
    gpgcheck=1

    enabled=1


  • 安装和使用’yum-utils’来维护Yum并提高其性能
  • yum -y install yum-utils

  • yum 回滚操作
  • 查看 安装历史记录
  • yum history

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 36

ID 序列号 | Command line 执行命令 | Date and time 执行时间 | Action(s) 执行动作 | Altered 更改数量(安装包)

  • 比如 回滚 ID 31 号操作
  • 31 | groupinstall GNOME Deskt | 2021-08-04 17:50 | Install | 916 **
  • yum history undo 31

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 37

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb2ZlaTA0Mjg_size_16_color_FFFFFF_t_70 38


  • 搜索 so 文件 属于哪个 包
  • yum provides XXXXXX.so

发表评论

表情:
评论列表 (有 0 条评论,79人围观)

还没有评论,来说两句吧...

相关阅读