linux-12月第三周-软件管理rpm和yum

软件包

软件包可能存在依赖关系,甚至循环依赖,即:A包依赖B包,B包依赖C包,C包依赖A包。安装软件包时,会因为缺少依赖的包,而导致安装包失败。
解决依赖包管理工具
1.yum:rpm包管理器的前端工具
4.dnf:Fedora 18+ rpm包管理器前端管理工具,Centos8代替yum
5.apt:debian包管理器前端工具
6.zypper:suse上的rpm前端管理工具

rpm

RPM 是Red-Hat Package Manager(红帽软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,包括OpenLinux、SuSe以及Turbo Linux等Linux的发行版本都有采用,可以算是公认的行业标准了。
虽然rpm包管理器可以实现软件包的:安装、卸载、升级、查询、校验、数据维护等,但是生产中使用最多的还是rpm的查询,因为rpm安装软件不支持解决包的依赖

rpm命令常用参数
-ivh      #装软件,会显示安装过程,有进度条
-e        #卸载
-q 包名    #查包是否安装上了
-qa       #列出所有安装好的包
-qc 包名      #只列出此包中的配置文件
-qi 包名   #查包的信息,包的版本,包的说明,安装时间,发行者,功能等信息
-ql 包名   #查看包里包含的文件列表
-qf 文件名  #查磁盘上的文件自来哪个包

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

yum客户端配置

YUM(Yellow dog Updater,Modified)是shell前端软件包管理器。基于rpm包管理,可解决软件包的相关依赖问题,能够从指定的服务器上自动下载rpm包并安装,可自动处理依赖性关系,并且一次安装所有依赖的软件包,不必繁琐地一次次下载,安装。Centos8用dnf代替了yum,不过保留了和yum的兼容性,配置也是通用的。

yum/dnf是基于C/S模式
yum服务器存放rpm包和相关包的元数据
yum客户端访问yum服务器进行安装或查询

yum实现过程
现在yum服务器上创建yum repository仓库,在仓库中实现存储了众多rpm包,以及包的相元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装包时,会自动下载repodata中的元数据,查询元数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。

yum的通用性更强,yum不是脱离了rpm,yum是间接的调用了rpm。如果rpm破坏了,yum也就用不了了。

yum常用命令

yum install xxx       #安装xxx软件
yum remove xxx        #卸载xxx软件
yum list xxx          #查,列出xxx来自哪个仓库,可使用*做模糊查询,yum list mem*(列出以mem开头的软件包)
yum provides 文件名    #查文件来自于哪个包,可查询未安装包
yum info xxx          #查看信息,版本,描述,官网等信息
yum clean all         #清掉缓存
yum history           #yum的安装和卸载历史
yum repolist          #列出有哪些仓库
yum repolist -v       #列出仓库里有多少个包
yum search xxx        #搜索xxx软件包
yum history           #查看使用yum的历史,包括安装和卸载
yum history info 数字编号#查看某个编号使用yum的历史的具体细节

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

yum provides commond

有时候我们想使用某个命令,但是系统提示“command not found”如下截图,想安装该命令的软件,但是又不知道具体的软件名称。
在这里插入图片描述
这时可以使用yum provides commond查看命令依赖的软件,如下截图
在这里插入图片描述
在这里插入图片描述

yum provides rz
yum -y install lrzsz

ubuntu系统使用dpkg查询
dpkg -l|grep rzs

在这里插入图片描述
安装完lrzsz后就可以使用rz命令了
在这里插入图片描述

yum源配置的三个基本仓库
[BaseOS]:    操作系统的核心包
[AppStream]: 应用程序的安装包
[Epel]:      为系统提供的额外的软件包(Extra Packages for Enterprise Linux)
yum客户端配置文件
/etc/yum.conf             #为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:  #为每个仓库提供配置文件 (必须在这个目录下,必须以repo为后缀)

yum配置文件格式
/etc/yum.repos.d/*.repo
[repoid]
name=repo description
baseurl=file://  #路径可以多配置几个以实现容错性,这个路径不行就访问下一个路径
        http://
        https//
        ftp://
enabled=1|0   #1表示仓库启用,0表示禁用
gpgcheck=1    #是否检查,0不检查,1是检查,检查还得配置gpgkey 利用key校验包的合法性
gpgkey=file://
       http://
       https//
       ftp://

[repoid]
baseurl=file://
        http://
        https//
gpgcheck=0

官方配置的客户端yum源都在国外,国内下载会很慢,所有我们一般都会配置公司自己的yum地址,或是国内的yum源镜像站点(阿里云,腾讯云,清华大学等)。

注意:yum仓库指向的路径一定必须是repodata目录所在目录

在这里插入图片描述

[BaseOS]
name=BaseOS-lei
baseurl=https://mirror.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/
        https://mirrors.huaweicloud.com/centos/8/BaseOS/x86_64/os/
        https://mirrors.cloud.tencent.com/centos/8/BaseOS/x86_64/os/
        https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/
gpgcheck=0

[AppStream]
name=AppStream-lei
baseurl=https://mirror.tuna.tsinghua.edu.cn/centos/8/AppStream/x86_64/os/
        https://mirrors.huaweicloud.com/centos/8/AppStream/x86_64/os/
        https://mirrors.cloud.tencent.com/centos/8/AppStream/x86_64/os/
        https://mirrors.aliyun.com/centos/8/AppStream/x86_64/os/
gpgcheck=0

[extras]
name=extras
baseurl=https://mirror.nju.edu.cn/rocky/8/extras/x86_64/os/

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7


yum相关变量

yum的repo配置文件中可用的变量:
$releasever: 当前os的发行版的主版本号,如:8,7,6
$arch: cpu架构,如aarch64,i586,i686,x86_64等
$basearch: 系统基础平台;i386,x86_64
$contentdir: 表示目录,比如:centos-8,centos-7
$YUM0-$YUM9: 自定义变量
[epel]
name=epel repo-lei
baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch
        https://mirror.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch
        https://mirrors.cloud.tencent.com/epel/$releasever/Everything/$basearch
        https://mirrors.huaweicloud.com/epel/$releasever/Everything/$basearch
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8

RockyLinux的源配置

yum源至少要配置三个仓库[BaseOS]、[AppStream]、[Epel]

目前提供Rocky源的镜像站点
南京大学  https://mirrors.nju.edu.cn/rocky/8/BaseOS/x86_64/os/
上海交大  https://mirror.sjtu.edu.cn/rocky/8.8/BaseOS/x86_64/os/
山东大学  http://mirrors.sdu.edu.cn/rocky/8.7/

只有南京大学有Rocky8.5的源,上海交大和山东大学的都是8.5以上的源,
所以源地址这里如果版本号写死的话很可能有问题,所以这里推荐使用版本变量$releasever
南京大学  https://mirrors.nju.edu.cn/rocky/$releasever/
上海交大  https://mirror.sjtu.edu.cn/rocky/$releasever/
山东大学  http://mirrors.sdu.edu.cn/rocky/$releasever/

在这里插入图片描述

repo配置

[BaseOS]
name=BaseOS-RockyLei
baseurl=https://mirrors.nju.edu.cn/rocky/$releasever/BaseOS/$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

[AppStream]
name=AppStream-Rockylei
baseurl=https://mirrors.nju.edu.cn/rocky/$releasever/AppStream/$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

[Epel]
name=Epel-Rockylei
baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch
        https://mirror.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch
        https://mirrors.cloud.tencent.com/epel/$releasever/Everything/$basearch
        https://mirrors.huaweicloud.com/epel/$releasever/Everything/$basearch
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8

在这里插入图片描述
上图提示Rocky-BaseOS.repo配置有错,那就打开这个文件看看是否有错,额,这是什么鬼,注释掉吧。
在这里插入图片描述
注释掉首行的那段不知名的字符串后就成功啦
在这里插入图片描述

yum repolist #列出有哪些仓库
yum repolist -v  #列出仓库里有多少个包

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

卸载yum源

yum -y remove httpd

在这里插入图片描述

yum list xxx
yum info xxx
rpm -q xxx  #查询这个包是否安装上了
rpm -ql xxxx  #查看包含了哪些文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
rpm -q查看yum安装的软件包是否安装上了,显示该包的版本号
在这里插入图片描述
在这里插入图片描述
rpm -ql查看安装包里包含哪些文件
在这里插入图片描述
在这里插入图片描述

epel源里有很多好玩的小工具:sl 、cowsay
敲sl就会显示一辆小火车
在这里插入图片描述

yum -y install cowsay

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查询没有安装的文件来自那个包

#查询mime.types来自那个包
yum provides */mime.types
#查询已经安装好的文件来自那个包

在这里插入图片描述
只下载相关的依赖包,而不安装

#只下载不安装,下载到/data/httpd目录,没有该目录测自动创建该目录
yum -y install --downloadonly --downloaddir=/data/httpd httpd
#安装时,只需yum -y install /data/httpd/*.rpm

在这里插入图片描述

查看未安装包的文件列表
dnf repoquery -l memcached
#查看一个目录有多大
du -sh /var/cache/dnf

在这里插入图片描述
在这里插入图片描述

搭建私有yum源

搭建公司内部使用的私有yum源的需求背景
1.互联网有网络限制
虽然国内有众多的yum镜像站点,但是他们偶尔也有不能访问的时候,我都遇到过几次阿里云源镜像站不能访问。而且互联网总会有网络限制,要么是你自己的网络问题,要么就是别人的镜像站限制了你的访问。

2.公司不让你访问互联网
很多稍大点的有外包业务的公司对互联网的访问是有限制的,没有一定权限和身份的员工是不会有互联网访问权限的。为什么呢?怕你通过互联网泄密呀。平安对外包部门的外网访问就很严格,外包想访问互联网还要申请,审批后只能访问几个技术博客网站。哈哈,这是我的基友告诉我的,他就因为这个从平安离职了,当然不仅仅因为这。受不了平安对外包的种种束缚,让人受不了。

我们公司虽然对外包部门没有像平安那样各种限制,但是疫情期间,使用云桌面居家办公时,云桌面就不能访问互联网。当时就遇到了我配置的阿里云maven中央仓库就下载不了东西,后来才知道云桌面是要访问公司内部的私有仓库。

综上考虑就很有必要搭建公司自己的私有yum源啦。也就是公司有自己的yum源服务器啦。

搭建yum源服务器原理:

我们知道,yum是基于C/S(客户端/服务器)模式的。前面我们配置的客户端都是通过file、http、https或ftp等网络协议来访问服务器的yum源仓库的。
那我们搭建的yum服务器支持这些协议,就可以通过客户端来访问了。那就实现了公司内部的私有的yum服务器了。

比如我们搭建Epel仓库,我们就先从互联网上的Epel源下载到我们自己的私有服务器上,然后我们再通过http的形式发布出去,这样公司的内网主机就可以通过http协议来访问下载私有服务器上的Epel源了。

搭建步骤

1.安装httpd

既然要以http的形式发布出去,那我们就得先搭建一个http服务器,于是就先安装httpd啦
在这里插入图片描述

2.启动httpd服务

httpd的共享目录是在“/var/www/html”下
下载httpd后,就得启动httpd的服务对外提供http服务啦

systemctl enable --now httpd

在这里插入图片描述

3.测试httpd是否开启成功,

直接访问安装httpd服务的ip就可以,也可以在该目录/var/www/html下写个简单的index.html来验证
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.下载epel源到/var/www/html/下

下载时,系统会自动创建一个Epel的目录

dnf reposync --repoid=Epel --download-metadata -p /var/www/html

在这里插入图片描述
在这里插入图片描述

5.通过浏览器查看Epel目录下是否有东西了

查看http://10.0.0.210/Epel/下已经有相关包和元数据了
在这里插入图片描述
在这里插入图片描述

6.配置私有仓库的yum源中epel的配置

在这里插入图片描述
在这里插入图片描述

7.安装一个私有仓库已有的软件

在这里插入图片描述
在这里插入图片描述

yum Troubleshooting

yum和dnf失败最主要原因
1.yum的配置文件格式或路径错误,解决办法:检测/etc/yum.repos.d/*.repo文件格式
2.yum cache 解决办法:yum clean all
3.网络不同:网卡配置有问题

编译安装

#1.安装相关包
dnf install gcc make autoconf ncurses-devel
https://github.com/abishekvashok/cmatrix/releases/download/v2.0/cmatrix-v2.0-Butterscotch.tar

在这里插入图片描述
黑客帝国来啦

[root@rocky8 cmatrix]# cmatrix -C red

在这里插入图片描述
在这里插入图片描述

Ubuntu的软件管理

#较少使用的命令dpkg
dpkg -L 包名  #查询包包含的文件
dpkg -l 包名  #列这个包是否装上了
#最常用的命令
apt install   #安装,安装之前先apt update
apt update
apt purge     #卸载,用remove卸载的不干净
apt list

apt-cache madison 包  #查询包有哪些版本,可以做选择安装

在这里插入图片描述

源码编译安装

源码编译核心步骤
./config --prefix=    #指定安装路径
make && make install  # &&指make成功了才会执行make install
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值