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

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的分发版本都有采用,可以算是公认的行业标准了。

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

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 目录打包后压缩:

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


src源代码包

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

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

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

解压缩到 /tmp 目录下:

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

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

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

查看网页显示:


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命令说明

常用的选项有:

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

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

下载 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

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


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

清除缓存后重新生成:

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

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

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

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

插件开启前:

插件开启后:

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


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

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

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


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

实验环境: centos 7 192.168.10.2 server yum

          centos 6 192.168.10.7 client 

将 server yum 作为本地 client 的网络 yum 源

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

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

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

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

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

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

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

在 client 端编辑 102.repo 文件:

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

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

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


使用 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 


  • 使用国内 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

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


  • 搜索 so 文件 属于哪个 包
  • yum provides XXXXXX.so
  •  
  • 15
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值