LINUX学习基础篇(十五)软件包管理

  • 软件包管理
    • 软件包分类
      • 源码包
      • 二进制包
      • 选择
    • 依赖性
    • rpm包安装
      • rpm包命名规则
      • rpm包安装和卸载
      • 服务命令
    • rpm查询命令
    • 验证
    • 数字证书
    • rpm中文件提取
      • cpio命令
    • rpm包在线安装(yum安装)
      • yum源文件解析
      • 搭建本地yum源
      • yum命令
      • yum组管理命令

软件包管理

软件包分类

Linux中现在使用的软件安装包有两种,一种是源码包,另一种是二进制包。

源码包

优点

  • 开源:如果有足够的能力,可以修改源代码。
  • 可以自由选择所需的功能。
  • 软件是编译安装,所以更加适合自己的系统,更加稳定效率也更高。
  • 卸载方便。
    缺点
  • 安装步骤很多,尤其是安装大的软件集合时,容易拼写错误。
  • 编译过程时间较长,安装比二进制包要长很多。
  • 因为是编译安装,安装过程中一旦报错新手很难解决。

二进制包

现在Linux主要分为三种系列,Redhat系、Debian系、Arch系,这些Linux区分的主要因素就是他们的包管理系统,Redhat系列使用RPM管理器,Debian系使用DPKG管理,Arch使用pacman管理器,实际使用大同小异,下面皆以CentOS8的RPM管理器为例学习。

优点

  • 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载。
  • 安装速度比源码包安装快的多。

缺点

  • 经过编译,看不到源代码。
  • 功能选择不如源码包灵活。
  • 依赖性,有些安装包有依赖环境,没有依赖环境就无法运行,所以要安装所需包必须先安装依赖包。

选择

  • 源码包:如果是为大量的客户端提供访问的,建议使用源码包,源码包效率更高。
  • RPM包:如果程序是给少量用户访问,建议RPM包,因为RPM管理方便。

依赖性

  • 树形依赖:a——>b——>c
    先装安装c,再装b,再装a。
  • 环形依赖:a——>b——>c——>a
    a、b、c一起安装。
  • 模块依赖(函数库依赖):
    有些软件安装时会报错,显示需要某些文件,而不是报错需要哪些软件,就像Windows中有时装软件会报错缺少什么.dll文件,这是要想知道装什么软件,可以在rpmfind.net搜索,根据文件搜索所需的软件。

rpm包安装

rpm包命名规则

2.4.37-43.module_el8.5.0+1022+b541f3b1
#2.4.37   软件版本
#43       软件发布的次数
#e18      EL8是适合Red Hat 8.x,CentOS 8.x下使用的包

在Linux中,未安装的软件操作时要使用包全名,且要注意使用绝对路径,已安装的软件操作时可以用软件名,因为安装时会把软件记录到系统数据库中。

rpm包安装和卸载

  • 安装命令
rpm -ivh 包全名
# -i 安装
# -v 显示更详细的信息(verbose)
# -h 显示安装进度(hash)
选项 含义
- -prefix 指定rpm包安装路径,如果指定了安装路径,系统会找不到这些安装的软件,需要手工配置才能被系统识别,一般不建议修改安装路径。
- -nodeps 不检测依赖性安装,安装时不会使用。
- -replacefiles 替换文件安装,如果安装时有部分文件已经存在,会报错,这个选项会忽略此错误,覆盖安装。
- -replacepkgs 强制安装,如果软件包已经安装,会覆盖安装。
- -force 强制安装,不管有没有安装都会重新再安装一遍,相当于–replacefiles和replacepkgs的集合。
- -test 测试安装,可以用来检测一下依赖性。
  • 升级命令
rpm -Uvh 包全名
#-U 升级安装,如果没有安装过,系统直接安装,如果已安装版本比软件包版本旧,升级安装。
rpm -Fvh 包全名
#-F 升级安装,如果没有安装过,不安装,有旧版本,升级安装。
  • 卸载命令
rpm -e 软件名

注:yum安装时会先安装依赖的软件包,卸载时会先卸载依赖要卸载软件的软件包,初学者建议不要用yum卸载,以防卸载掉一些系统必须的软件包。

服务命令

  • 服务启动
service 服务名 start | stop | restart | status
#参数
#start 启动服务
#stop 停止服务
#restart 重启服务
#status 查看服务状态

注:绝大部分rpm包安装的软件可以用这种方式启动服务

例:rpm包安装的Apache

  • 启动:
#1   redhat系专用命令
service httpd restart
#2
/etc/rc.d/init.d/httpd start|restart|stop
  • 网页位置
#rpm包安装的apache默认位置:/var/www/html
#默认网页文件名index.html
vim index.html
  • 配置文件
/etc/httpd/conf/httpd.conf

rpm查询命令

  • 查询某个软件包是否安装
[root@localhost ~]# rpm -q httpd
httpd-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64
  • 查询已安装的软件包
[root@localhost ~]# rpm -qa
  • 查询相关的软件包
[root@localhost ~]# rpm -qa | grep ssh   #查询已安装的名字中带有ssh的软件包
openssh-server-8.0p1-9.el8.x86_64
libssh-config-0.9.4-3.el8.noarch
openssh-clients-8.0p1-9.el8.x86_64
libssh-0.9.4-3.el8.x86_64
openssh-8.0p1-9.el8.x86_64
  • 查询已安装的软件包的详细信息
[root@localhost ~]# rpm -qi 软件名
  • 查询未安装的软件包的详细信息
[root@localhost ~]# rpm -qip 包全名
  • 查询软件包中的文件列表
[root@localhost ~]# rpm -ql 软件名
  • 查询未安装的软件包打算安装的位置
[root@localhost ~]# rpm -qlp 包全名
  • 查询系统文件属于哪个软件包
[root@localhost ~]# rpm -qf 文件名
  • 查询软件包依赖的文件
[root@localhost ~]# rpm -qR 软件名

验证

  • 校验已安装的软件包
[root@localhost ~]# rpm -V 已安装的包名
# -V    校验指定rpm包中的文件
[root@localhost ~]# rpm -Va
#校验系统中已经安装的软件包
# -a 系统中所有安装的软件包
  • 校验某个系统文件是否被修改
[root@localhost ~]# rpm -Vf 系统文件名

例:

[root@localhost etc]# rpm -Vf man_db.conf
S.5....T.  c /etc/man_db.conf

如果文件被修改,会给出提示,下面列出一些提示符的含义:

提示符 含义
S 文件大小改变。
M 文件的类型或者文件的权限改变。
5 文件MD5校验码改变。
D 设备的主从代码改变。
U 文件的所有者改变。
L 文件的路径改变。
G 文件的所属组改变。
T 文件的修改时间改变。

最后一位代表文件的类型:

提示符 含义
c 配置文件。
d 普通文档。
g "鬼"文件,不应该被这个rpm 包所含。
l 授权文件。
r 描述文件。

数字证书

未安装的软件包可以通过数字证书检验软件包是否经过修改。

“CentOS 计划发布的每个稳定 RPM 软件包都使用 GPG 签名进行签名。默认情况下,yum 和图形更新工具将验证这些签名,并拒绝安装任何未签名或签名不正确的软件包。”

CentOS8中自带数字证书,7及之前的版本可以在光盘镜像文件中找到,并安装。

rpm --import RPM-GPG-KEY-CentOS-7

rpm中文件提取

cpio命令

cpio是一个备份和还原的命令,还可以用来提取rpm包中的文件。

rpm2cpio 包全名 | cpio -idv .文件绝对路径

rpm包在线安装(yum安装)

yum源文件解析

yum源配置文件都保存在/etc/yum/repos.d目录中,文件的拓展名一定是".repo",也就是说,yum源配置文件只要拓展名是".repo"就会生效。

以baseos为例:

[baseos]
name=CentOS Stream $releasever - BaseOS
mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$stream/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  • [baseos]:容器名称,一定要放在"[]"中。
  • name:镜像说明,可以自己随便写。
  • mirrorlist:镜像站点。
  • baseurl:yum源服务器的地址,默认是CentOS官方的yum源服务器,是可以使用的,如果觉得慢,可以改成国内的yum源地址,清华、网易的镜像源,baseurl和mirror必须保留一个。
  • gpgcheck:数字证书,如果是1就生效,0就表示数字证书不生效。
  • enabled:此容器是否生效,1生效,0不生效。
  • gpgkey:数字证书的公匙文件保存位置。

搭建本地yum源

  • 放入光盘,并把光盘挂载到指定位置。
  • 修改其他几个yum源的拓展名,让它们失效,因为yum源的生效是靠拓展名".repo",所以改个拓展名就会失效了。
  • 修改yum源配置文件CentOS-Media.repo。
[media-baseos]   #容器名,也可以改成相应的名字
name=CentOS Stream $releasever - Media - BaseOS
baseurl=file:///media/CentOS/BaseOS   #yum本地源目录,改成相应的目录,不存在的目录删除或注释掉file:///media/cdrom/BaseOSfile:///media/cdrecorder/BaseOS
gpgcheck=1
enabled=0   #启用时将0改为1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial=

yum命令

  • 查询
yum list
#列出yum源服务器上所有可安装的软件包列表
yum list 软件名
#查询某个具体的软件包
yum search 关键字
#根据关键字进行搜索yum源中的软件包
yum info 软件名
#查询某个软件的具体信息
  • 安装
yum install 软件名
  • 升级
yum update 软件名
#升级某个具体的软件
yum update
#升级系统内所有课升级的软件包,包括系统内核,生产环境中是以稳定为先的,所以一般不这样直接升级。
  • 卸载
yum remove 软件名

由于yum卸载命令会卸载掉依赖此软件的软件包,可能会误卸载掉重要的系统文件,所以不推荐用yum命令进行卸载。

yum组管理命令

按照软件包组管理软件。

-查询可以安装的软件组。

yum grouplist
  • 查询组中包含的软件包
yum groupinfo 软件包组名
  • 安装软件组
yum groupinstall 软件包组名
  • 卸载软件组
yum groupremove 软件包组名

ps:尚硅谷linux视频课程学习笔记

LINUX学习基础篇(十五)软件包管理相关推荐

  1. LINUX学习基础篇(三十五)日志管理

    LINUX学习基础篇(三十五)日志管理 日志管理 系统中常见的日志文件 日志文件格式 rsyslogd服务的配置文件 日志轮替 logrotate配置文件 配置文件夹 /etc/logrotate.d ...

  2. LINUX学习基础篇(十二)痕迹命令

    LINUX学习基础篇(十二)痕迹命令 系统痕迹命令 w命令 who命令 last命令 lastlog命令 lastb命令 系统痕迹命令 系统中有一些重要的痕迹日志文件,如/var/log/wtmp./ ...

  3. LINUX学习基础篇(二十二)硬盘结构

    LINUX学习基础篇(二十二)文件系统管理 硬盘 磁盘结构 硬盘接口 硬盘 磁盘结构 扇区是磁盘的最小存储单位,每个扇区的大小是固定的,为512Byte.硬盘里有多个磁盘,每个磁盘中,有多个同心圆,这 ...

  4. LINUX学习基础篇(二十六)swap分区

    LINUX学习基础篇(二十六)swap分区 swap分区 查看swap分区大小 分配swap分区 格式化swap分区 增加swap分区 swap分区 Linux中的swap分区相当于Windows中的 ...

  5. LINUX学习基础篇(十七)用户与用户组

    LINUX学习基础篇(十七)用户与用户组 用户相关文件 /etc/passwd 用户信息文件 /etc/shadow 影子文件 /etc/group 组信息文件 其他用户有关文件 用户管理命令 use ...

  6. Cty的Linux学习笔记(十五——wget)

    Linux学习笔记--第十五篇 wget命令用于在终端中下载网络文件,格式为"wget  [参数]  下载地址" 参数: -b:后台下载模式 -P:下载到指定目录 -t:最大尝试次 ...

  7. LINUX学习基础篇(六)帮助命令

    LINUX学习基础篇(六)帮助命令 帮助命令 man(Manual) info help - -help 帮助命令 man(Manual) 作用:查看联机帮助手册. 执行权限:所有用户. man命令的 ...

  8. LINUX学习基础篇(三十三)系统资源

    LINUX学习基础篇(三十三)系统资源 系统资源查看 vmstat命令监控系统资源 dmesg显示开机时内核检测信息 free命令查看内存使用状态 查看CPU信息 查看内存信息 查看当前登录的用户 u ...

  9. 强化学习基础篇(五):Dyna-Q 算法

    强化学习基础篇(五):Dyna-Q 算法 (Dynamic Programming) 1. 简介 2. Dyna-Q 3. Dyna-Q 代码实践 4. 小结 文章转于 伯禹学习平台-动手学强化学习 ...

最新文章

  1. git--分支管理:创建、合并、冲突解决
  2. 重置密码遇到ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using passwor:yes)问题
  3. [发布] 多选控件和时钟控件
  4. Linux运维常用检查网络工具
  5. python中的dict是什么数据类型_Python数据类型之字典(dict)
  6. A2W和W2A :很好的多字节和宽字节字符串的转换宏
  7. 走火入魔的 C/C++ 如何通过编译器预定义的宏值来区分 target OS 是 Windows 还是 Linux...
  8. 移动大数据时代:无线网络的挑战与机遇
  9. Codeforces 964B(贪心)
  10. visio用例图箭头怎么画_visio2010绘制用例图-带图例
  11. NBU-备份系统盘和数据盘
  12. T检验与F检验的区别_f检验和t检验的关系
  13. MySQL中的B+树索引结构
  14. html提取正文字游戏名,游戏id古诗词 用古诗词取个游戏名字
  15. 计算机为啥系统保护设置不了,我的电脑为什么设置了屏幕保护程序而不起作用 – 手机爱问...
  16. DAO是什么?——为什么有人试图购买美国宪法?
  17. [渝粤教育] 西南科技大学 建筑工程定额与预算 在线考试复习资料2021版
  18. android 仿简书评论,Android 开发仿简书登录框可删除内容或显示密码框的内容
  19. 弹幕助手连接不到服务器,OBS弹幕助手使用图文教程
  20. 安卓4.4.4安装哪个微信版本_乐播投屏 — 安卓车机无线投屏

热门文章

  1. ssm+redis整合(通过cache方式)
  2. 指定JDK运行Jar包
  3. 支付宝陷“隐私门”:加强监管避免隐私不当收集
  4. 物理系统碰撞相关原理及算法
  5. 等保三级核心-主机安全
  6. Pytorch实现YOLOv3训练自己的数据集
  7. SEBASTIEN KWOK 2022春夏系列发布
  8. Quartus II 操作入门
  9. 安徽省二计算机office试题及答案,计算机二级(MSOFFICE)模拟考试题及答案题目2
  10. Excel批量一键切换英文字母大小写