7. RedHat认证-Linux软件包管理

7. RedHat认证-Linux软件包管理

软件包的管理在企业中是⾮常重要的,因为对于企业来说,可能需要频繁的安装软件,升级软件。
通过windows的软件管理来引出我们的Linux的软件管理.
windows安装软件,正确的渠道是从软件的官⽅⽹站下载软件包安装.(建议)
360安全卫⼠,腾讯电脑管家这种⽅式也可以安装软件。(给了⼀个所谓的软件仓库)

windows商店(建议)

Linux安装软件,正确的渠道是从软件的官⽅⽹站下载软件包安装(强烈建议)

涉及到⼀个开发相关的问题。
开发⼀个软件就是写代码,写完代码将代码打包,就成为了⼀个软件的源码包,软件的源码是不能直接使⽤的,需要使⽤对应语⾔的编译器去将源代码编译成计算机能懂的语⾔(机器语⾔),⼀般就是⼆进制  01010100101
软件的发布者,或者说软件的发布⼚商,都是将编译好的软件放到平台上,提供下载。这样的好处就是⽤户得到软件之后可以直接安装,不需要对软件的源码进⾏编译。
这样的好处就是⽤户不需要⾃⼰编译,因为编译软件对于普通⽤户来说难度太⾼,极容易出错。安装⼀个qq需要2分钟,但是如果编译qq的源码可能需要超过2⼩时。
Linux的软件包管理,因为Linux的操作对象基本上都是专业⼈员,肯定⽐普通⽤户更了解软件。所以呢,我们在Linux上进⾏软件安装,可以选择源码包的安装⽅式或者⼆进制的安装⽅式。

源码包安装软件的好处就在于你可以更改源码,改成适合你的环境。
另外⼀个源码包安装的好处就是源码包相⽐于现有的编译好的⼆进制包更新,功能更多。⼀般在⽣产环境,特别是功能类服务器⽤的多。

windows的⼆进制包的后缀名,最常⻅的就是exe,msi,setup。

这里教程是Linux的⼆进制包的安装⽅法。
一般从官方网站下载二进制安装包
我们的Linux分为多个发⾏版本,不同的发型版本对于软件包的管理命令或者管理⽅式是不同的。但是本质上⼏乎都是管理⼆进制的软件包。
Linux所有发⾏版本⾥⾯最流⾏的三个:
RHEL,CentOS,Fedora:⼆进制包后缀名是以rpm结尾 (RPM) yum(dnf)
openSUSE,SELS:⼆进制包的后缀名是以rpm结尾 (RPM) zypper
Debian,Ubuntu:⼆进制包的后缀名是以deb结尾 (dpkg)apt

RHEL能安装deb结尾的⼆进制包吗?
Ubntu能安装rpm结尾的⼆进制包吗?
** 本质上只要软件包的架构和cpu架构匹配就可以安装,⽽且都是⼆进制包。唯
** ⼀不⼀样的就是可能需要额外安装匹配的软件包管理⼯具。

该教程使⽤rpm命令管理我们的软件包

1. 学会看rpm 包

当第⼀眼看⻅rpm包的时候就应该能了解到⼀些表⾯的信息

xfsprogs-4.19.0-2.el8.i686.rpm
xfsprogs-4.19.0-2.el8.x86_64.rpm
xfsprogs-devel-4.19.0-2.el8.i686.rpm
xfsprogs-devel-4.19.0-2.el8.x86_64.rpm

我们通过rpm包的名字来了解这个软件包的⼀些基础信息。
第⼀个字段⼀般来说软件的名字
第⼆个字段表示版本号,版本号之前的,全是软件包的名字。
我们判断软件包的名字,是从版本号往前推算的。


所以看rpm包,是先看版本号,再看名字。
⼀般来说xfsprogs是rpm的主包(主要包),⼀定要安装主包,像是xfsprogs-devel就是rpm的辅包(辅助包)。
辅助包要不要安装取决于主包是否依赖于辅助包。如果主包依赖辅助包⾥⾯的内容,
那么如果想安装主包,就⼀定要安装辅助包。
当然如果⼀个主包有N多个辅助包,那么如果安装主包,对于主包没有依赖的辅助包,就可以选择安装。

版本号后⾯的数字表示该软件的发⾏次数。
发⾏次数后⾯的".el8"就表示该rpm包适⽤于哪个操作系统平台.(但并不绝对)


i686或者i386或者x86_64,这表示该软件包的位数。
⼀般软件包都是分为32位或64位的软件。
i686或者i386就表示这是32位的软件,
x86_64就表示这是64位的软件.
如果只是x86,没有带后⾯的64,指的就是32位.

64位的操作系统能安装32位的软件和64位的软件
32位的操作系统只能安装32位的软件
最后⾯就是后缀名


yum-4.0.9.2-5.el8.noarch.rpm
noarch适⽤于任何cpu的架构,基本上其它的Linux发⾏版本也可以装上
noarch就表示适⽤于任何架构

2. rpm包的安装

# 1.rpm包的安装
# 2.rpm包的卸载
# 3.rpm包的信息查看(远远⽐安装和卸载重要)

#rpm的包安装
-i 参数表示install安装
-v 参数表示安装时显示详细信息
-h 参数表示显示进度
$ rpm -ivh xz-5.2.4-3.el8.x86_64.rpm # 假设要安装这个xz包(一个解压缩的工具)


#rpm包的卸载
-e参数表示卸载
-b参数表示详细信息
-h参数表示进度
$ rpm -evh xz
# 但是这里会卸载失败,因为rpm包是有依赖性的

----------------------------------------------------------------------------------------------
#我们先说rpm包的依赖性
# 1. 安装rpm包的依赖性
# 1.1 树状依赖(从最底层开始安装)
	装A软件,需要B软件,装B软件需要C软件
	装C,装B,装A

# 1.2 环形依赖
	装A软件,需要B软件,装B软件需要C软件,装C软件要求你装A软件
	ABC⼀起装,就可以解决环型依赖
# 1.3 模块依赖
	装A软件,需要B软件⾥⾯的某个模块或函数,或函数库
	
# 2. 卸载rpm包的依赖性
	装A软件,需要B软件,装B软件需要C软件
	装C,装B,装A
	如果卸载C软件,会失败,他会提示你B软件需要C软件,所以C软件不能卸载.

# 重点:
依赖性问题是rpm包管理最恶⼼的问题,所以为了解决这个问题,我们有⾃动解决依赖的包管理⼯具。
yum(centos或rhel用的是yum)
yum (yellow dog updater manager)
要知道rpm的包名和包全名
包全名就是xz-5.2.4-3.el8.x86_64.rpm
包名就是xz

*当rpm包被安装之后,rpm命令操作的都是包名
*当rpm包没被安装,rpm命令操作的都是包全名

# 3.rpm包的信息查看
rpm -qi 包名    # 能查看已经安装的软件包的信息
rpm -qpi 包全名  # 能查看未安装的软件包的信息

# -q表示query查询
# -i表示information
# -p表示package

rpm -qa # 列出所有安装在系统中的rpm包(用得少)
rpm -qa | grep name #筛选系统中是否有你想查看的软件包(用的多)



# 非常重要
-l参数能列出rpm包安装后的⽂件路径
rpm -ql 包名
rpm -qpl 包全名


-f参数表示根据⽂件的名字反推出该⽂件是由哪个rpm包装出来的
rpm -qf 包名
$ rpm -qf /bin/rm
coreutils-8.30-6.el8.x86_64  # 从这个包装出来的

yum 管理rpm包安装

yellow dog updater manager (yum)
yum是⼀个⼯具,可以理解成是⼀个数据库客户端⼯具
yum的底层仍然是rpm,如果没有rpm的功能,那么yum就无用了。

yum诞⽣的⽬的就是能⾃动的解决rpm的依赖性关系
  • 库概念(repository->repo)

所谓软件仓库,包含两部分,第⼀部分就是所有的软件包(rpm),第⼆部分指的就是所有的软件包的元数据。
元数据包含了所有软件包的名字和所有软件包的依赖关系。元数据⽂件远远⼩于整个仓库的⽂件⼤⼩。
※:yum就是访问软件仓库的元数据,进⽽根据元数据⾥⾯的记录⾃动解决软件包的依赖关系。

yum仓库的搭建

本地 yum 仓库搭建

yum并没有从0创建⼀个仓库的能⼒。仓库的本质是rpm包+repodata元数据
必须要现有rpm包和repodata元数据。yum才能所谓的“搭建”⼀个软件仓库

条件1:rpm包
条件2:repodata
光盘⾥⾃带了rpm包和repodata,所以我们可以通过光盘搭建软件仓库,所谓搭建软件仓库,就是将rpm包和repodata放到⼀个位置,
然后yum指定repodata的路径。

yum的的配置⽂件是/etc/yum.conf
yum的仓库⽂件所在⽬录是/etc/yum.repos.d/

该⽬录是存放仓库⽂件的,仓库⽂件就是指向repodata所在路径的⽂件,仓库⽂件必须以.repo结尾.
# 仓库⽂件的语法
# 本地的软件仓库
cd /etc/yum.repos.d  #
vim iso.repo
[ergou]  # 仓库的名字
name = ergou's repo  # 仓库的描述
enable = yes  # 仓库是否开启,默认是开启的,
gpgcheck = 0 #秘钥检查,可以不开启。
baseurl = file:///iso/BaseOS  # 本地文件系统位置
#baseurl is a repodata localtion
#baseurl is not a repodata path
# 查看仓库
yum repolist

# 列出当前所有仓库⾥⾯的所有软件,并同时创建cache(缓存)
yum list  # 有cache之后,yum安装软件就可以补全

# 清空yum的cache
yum clean all

# ⼿⼯⽣成cache
yum makecache  # 有cache,可以补全

# 搜索带有core关键字的rpm
yum search core  # yum不指定仓库的情况下就是搜索所有仓库

# 搜索哪个rpm包提供rm命令
yum provides rm  # 前提是你的仓库⾜够完善,你才能搜索到想要的东⻄

# 安装
yum install pkg-name
# 卸载
yum remove pkg-name

网络上的 yum 仓库搭建

# 举例搭建清华大学开源的仓库。
cd /etc/yum.repos.d/
vim qinghua.repo
-----------------------------
[qinghua]
name = qinghua-repo
baseurl = https://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/BaseOS/x86_64/os/
enable = yes
gpgcheck = 0
-----------------------------

yum repolist

EPEL(extra packages for enterprise linux) fedora的源  额外的源

※※※※※局域网软件仓库的搭建必要性(基于CentOS/RedHat)

操作步骤:
同步网络上的软件仓库到本地的一个准备好的仓库服务器。
然后内网的服务器安装软件的时候,就从这个准备好的仓库服务器上下载。
1. 搭建一个网络上的软件仓库
	# 先准备一台可以访问Internet服务器(就叫做 软件仓库服务器)
	# 然后从网络上拉取你需要的仓库资源。
2. 将网络仓库资源同步到本地服务器指定的目录下。
	# 这一步就是将你刚才拉取完毕的资源同步到本地管理员指定的目录下
	# 在这一步同步完了之后,你就可以在目录下看到一大堆rpm包
3. 根据本地资源仓库创建属于自己的 repodata
	# 这一步的本质其实就跟从网络上资源模式一样,都有rpm包和repodata。
	# 而我们要做的就是建立一个属于自己的repodata (元数据)
4. 最后通过设置网络服务将repodata共享出去。
	# 最后一步就是将你的repodata共享在内网中,内网的服务器均可访问这个网络服务。

1.搭建一个网络上的软件仓库

# 比如我们现在从网络上搭建一个软件仓库
cd /etc/yum.repod/  # 将这个目录下的其他的repo仓库暂时先放在当前目录下的其他文件夹中。
# 然后我们新建一个qinghua.repo仓库(我这里里面准备了两个仓库地址)
vim qinghua.repo
---------------------------------------------------------------
[tuna-BaseOS]
name = tuna
baseurl = https://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/BaseOS/x86_64/os/
enabled=1
gpgcheck=0

[tuna-AppStream]
name = tuna
baseurl = https://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/AppStream/x86_64/os/
enabled=1
gpgcheck=0
---------------------------------------------------------------

# 然后查看一下仓库并重建缓存
yum repolist
yum makecache

2.将网络仓库资源同步到本地服务器指定的目录下

# 然后在自己的本地目录下(哪个目录都可以,自己指定)创建一个仓库目录文件夹
mkdir -p /repo/tuna

# 然后将数据同步到刚才所指定的目录
# 没有这个命令的话需要安装一个 yum install -y dnf-plugins-core
reposync --repo tuna-BaseOS tuna-AppStream -p /repo/tuna  # 多个的话就写多个仓库名字
	# --repo指的的是repo的名字	
	# -p参数指的是同步的路径

3.根据本地资源仓库创建属于自己的 repodata

# 创建属于自己的repodata通过 createrepo 命令创建,没有的话就先安装一个
yum -y install createrepo

# 安装完后,创建本地仓库
createrepo -v /repo/tuna  # -v 显示详细信息

4.最后通过设置网络服务将repodata共享出去

# 通过搭建Web服务器来将资源共享出去。
yum -y install httpd
# cd /etc/yum.repos.d
cd /etc/httpd/conf.d
# 然后在 /etc/httpd/conf.d 目录下新建一个自定义的配置文件,
vim repo.conf  # 注意下面的内容,不要把注释也粘进去,这里注释只做解释。
--------------------------------------------------
<Virtualhost *:80>
	Servername 192.168.189.109  # 指定提供服务的服务器地址
	DocumentRoot /repo/tuna  # 指定服务器的资源根目录
<Directory /repo/tuna>
Require all granted   # 授权放行所有
Options Indexes FollowSymLinks
</Directory>
</Virtualhost>
----------------------------------------------------- 

# 然后关闭Selinux
setenforce 0 # 临时关闭,永久关闭可编辑/etc/selinu/conf 文件

# 将Web服务器的欢迎页面关掉。
cd /etc/httpd/conf.d
mv welcome.conf welcome.conf.bak

# 然后放行80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent

# 然后重启httpd服务
systemctl restart httpd 

# 记着要用桥接网络访问

# 然后去浏览器访问192.168.189.109



# --------------测试----------------
#----------------------------------
最后,你可以在另外一台服务器(B)上编辑好一个配置文件,来测试
# 首先,移除/etc/yum.repos.d/ 文件下的所有repo* 
cd /etc/yum.repos.d/*.repo ./repo.bak

# 然后创建一个repo仓库,来配置。
vim local.repo
--------------------------------------------------
# 假设你下载了这些资源,如下这样配置即可
[epel]
 name=epel
 baseurl=http://192.168.189.109/repo/tuna/epel
 gpgcheck=0
 enabled=1
[extras]
 name=extras
 baseurl=http://192.168.189.109/repo/tuna/extras
 gpgcheck=0
 enabled=1
--------------------------------------------------

# 然后安装一些常用的包,测试一下
yum clean all  #清除缓存
yum makecache  #生成缓存
yum repolist   #查看yum仓库软件数量
yum install -y tree vim wget  # 安装一些常用的软件包。

yum 操作

装软件

安装 teamviewer

安装它需要额外的仓库。extra ,也就是epel,我们可以生成epel的仓库。
yum-config-manager --add-repo=https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/
# 我们可以通过这个命令来直接创建我们的镜像仓库,没有这个命令的,请使用 yum -y install yum-utils 下载
然后我们编辑这个仓库文件,加上一句 gpgcheck=0

在这里插入图片描述

yum -y install teamviewer.x86_64.rpm  # 安装teamviewer 
yum history # 查看安装历史
yum history info 2 # 详细显示第二条安装记录信息

在这里插入图片描述

在这里插入图片描述

卸载软件

yum remove [软件包]
# 通常remove 命令会删除他所有的依赖包,但是有时候我们其他的软件会用到这个软件的里的一些依赖,那么我们可以只删除teamviwer。
rpm -evh  teamviewer.x86_64.rpm

# 但是有时候我们删除了,后面想反悔了,就可以使用下面这条命令给他撤销
yum history 
yum history undo [history-id]  # 撤销刚才的操作
yum history undo 2

查看所需命令是由那个软件包提供的

[root@centos8 ~]# yum provides rm    # 是由coreutils-8.30-14.el8.x86_64 提供的。

在这里插入图片描述

重新安装

yum -y reinstall coreutils

yum更新操作

yum update # 不建议在生产环境中使用。

列出软件包组

yum group list

#  "带 GUI 的服务器"  这个就是图形化的界面的软件包群组,要是没有图形化界面,可以安装
yum group install "带 GUI 的服务器"
-----------------------------------
可用环境组:
   服务器
   最小安装
   工作站
   KDE Plasma 工作区
   虚拟化主机
   定制操作系统
已安装的环境组:
   带 GUI 的服务器
已安装组:
   容器管理
   无头系统管理
可用组:
   .NET 核心开发
   RPM 开发工具
   开发工具
   图形管理工具
   传统 UNIX 兼容性
   网络服务器
   科学记数法支持
   安全性工具
   智能卡支持
   系统工具
   Fedora Packager
   Xfce

yum的问题

yum只能单线程安装软件
如果当前yum在安装软件(处于未完成状态),你就不能在另⼀个终端继续使⽤yum

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值