【Gold菜鸟】Linux知识回忆(6)——软件管理

前言

这部分让我们来了解Linux中软件管理的相关知识吧~

VX: wenjinworkon

目录

软件包和包管理

1.1 软件包介绍

1.2 软件包的文件分类

1.3 软件包管理工具

1.3.1 软件包管理工具

1.3.2 rpm包的命名格式

1.4 软件包的分类

1.5 软件包的依赖

1.6 获取软件包的方法

1.6.1 ISO镜像或官方网站

1.6.2 第三方组织提供

1.6.3 包搜索引擎

1.6.4 DIY制作

rpm包管理器

2.1 安装

2.2 升级和降级

2.3 包查询

2.4 包卸载

2.5 数据库维护

yum与dnf

3.1 yum源配置

3.2 yum相关命令

3.2.1 显示仓库

3.2.2 显示安装包

3.3.3 安装软件包

3.3.4 卸载软件包

3.3.5 升级和降级

3.3.6 查询

3.3.7 建立仓库缓存

总结


软件包和包管理

1.1 软件包介绍

软件包由一个基本配置和若干可选部件构成,既可以是源代码形式,也可以是目标码形式。用户手册和指南等文档是软件包的重要组成部分。此外,软件包的维护及技术支持也是非常必要的。

软件包 在系统管理中,软件包的管理是最重要的,是系统管理的基础的基础;只有我们学会软件包的管理才能谈得上其它的应用;本文以目录式的文档格式,列出新手弟兄所面对的软件包的安装、更新、查询相对的文档,以及几个常用的软件包管理工具,比如system-cofig-packages 、yum 、ppapt

1.2 软件包的文件分类

  • 二进制文件/源码包
  • 配置文件
  • 帮助文件
  • 库文件
利用cpio工具查看包文件列表

rpm2cpio 包文件|cpio –itv 预览包内文件
rpm2cpio 包文件|cpio –id  "*.conf" 释放包内文件

1.3 软件包管理工具

1.3.1 软件包管理工具

将编译好的应用程序的各个组成部分打包成一个或几个程序包,通过软件包管理工具可以便捷高效的实现程序包的安装,卸载,查询,升级和校验等操作

  • Redhat:rpm文件 --> rpm包管理器
  • Debian: deb文件--> dpkg包管理器

1.3.2 rpm包的命名格式

name-VERSION-release.arch.rpm

VERSION: major.minor.release
release:release.OS
arch:x86: i386, i486, i586, i686
      x86_64: x64, x86_64, amd64
      powerpc: ppc
      跟平台无关:noarch

例
    bash-4.4.19-7.el8.ppc64le.rpm
    bc_1.07.1-2_amd64.deb
    bc_1.07.1-2_s390x.deb

1.4 软件包的分类

软件包为了方便管理和使用,进行了软件分类,放在不同的子包中

包的分类

  • Application-VERSION-ARCH.rpm: 主包
  • Application-devel-VERSION-ARCH.rpm 开发子包
  • Application-utils-VERSION-ARHC.rpm 其它子包
  • Application-libs-VERSION-ARHC.rpm 其它子包

1.5 软件包的依赖

软件包可能不能独立使用,可能存在一定的依赖关系,如:A包依赖B包,B包依赖C包,C包依赖A

安装软件包时,如因为缺少依赖的包,可能导致软件包安装失败

解决依赖的包管理工具:

  • yum:解决rpm格式的包管理工具
  • dnf:Centos 8以上版本代替yum工具
  • apt:解决deb格式的包管理工具

1.6 获取软件包的方法

软件包获取途径如下:

1.6.1 ISO镜像或官方网站

Centos:

https://www.centos.org/download/
http://mirrors.aliyun.com
https://mirrors.huaweicloud.com/
https://mirror.tuna.tsinghua.edu.cn/

Ubuntu:

http://cdimage.ubuntu.com/releases/
http://releases.ubuntu.com

1.6.2 第三方组织提供

https://fedoraproject.org/wiki/EPEL
https://mirrors.aliyun.com/epel/
https://mirrors.cloud.tencent.com/epel/

1.6.3 包搜索引擎

http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/

1.6.4 DIY制作

 将源码文件,利用工具,如:rpmbuildfpm 等工具制作成rpm包文件

注意:非官方的权威网站可能存在一定风险,要注意检查软件包的完整性

rpm包管理器

Centos系统下rpm包管理工具

2.1 安装

格式:
    
    rpm {-i|--install} [install-options] PACKAGE_FILE…

选项:

    -v: verbose
    -vv: 
    -h: 以#显示程序包管理执行进度

常用组合:

    rpm -ivh PACKAGE_FILE ...

安装时附加选项:

    --test: 测试安装,但不真正执行安装,即dry run模式
    --nodeps:忽略依赖关系
    --replacepkgs | replacefiles
    --nosignature: 不检查来源合法性
    --nodigest:不检查包完整性
    --noscripts:不执行程序包脚本
         %pre: 安装前脚本 --nopre
         %post: 安装后脚本 --nopost
         %preun: 卸载前脚本 --nopreun
         %postun: 卸载后脚本 --nopostun

2.2 升级和降级

rpm包升级

格式:

    rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
    rpm {-F|--freshen} [install-options] PACKAGE_FILE...

选项:

    upgrade:安装有旧版程序包,则"升级",如果不存在旧版程序包,则"安装"
    freshen:安装有旧版程序包,则"升级", 如果不存在旧版程序包,则不执行升级操作
    --oldpackage:降级
    --force: 强制安装

常用组合:

    rpm -Uvh PACKAGE_FILE ...
    rpm -Fvh PACKAGE_FILE ...
    
升级注意项:
(1) 不要对内核做升级操作; Linux 支持多内核版本并存,因此直接安装新版本内核
(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件不会直接覆盖老版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew) 后保留

2.3 包查询

格式:
    rpm {-q|--query} [select-options] [query-options]

select-options:
[select-options]
    -a:所有包
    -f:查看指定的文件由哪个程序包安装生成
    -p rpmfile:针对尚未安装的程序包文件做查询操作

query-options:
[query-options]
    --changelog:查询rpm包的changelog
    -c:查询程序的配置文件
    -d:查询程序的文档
    -i:information
    -l:查看指定的程序包安装后生成的所有文件
    --scripts:程序包自带的脚本
    --last 最后安装的包
    --changelog 安装包的变更历史

#和CAPABILITY相关
    --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
    --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
    --provides:列出指定程序包所提供的CAPABILITY
    -R,--requires 查询指定的程序包所依赖的CAPABILITY


常用查询方法:
    -qa
    -q PACKAGE
    -qi PACKAGE
    -qc PACKAGE
    -ql PACKAGE
    -qd PACKAGE
    -q --scripts PACKAGE
    -qf FILE
    -qpi PACKAGE_FILE
    -qpl PACKAGE_FILE, ...
    

2.4 包卸载

格式:
    rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] 
PACKAGE_NAME ...

注意:当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留

在安装包时,系统也会检查包的来源是否是合法的
检查包的完整性和签名
rpm -K|--checksig rpmfile  
在检查包的来源和完整性前,必须导入所需要公钥
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

2.5 数据库维护

rpm 包安装时生成的信息,都放在 rpm 数据库中
/var/lib/rpm

可以重建数据库

rpm {--initdb|--rebuilddb}
initdb: 初始化,如果事先不存在数据库,则新建之,否则,不执行任何操作
rebuilddb:重建已安装的包头的数据库索引目录

yum与dnf

Redhat使用了yum和dnf方法解决包依赖关系

3.1 yum源配置

配置文件

/etc/yum.conf #为所有仓库提供公共配置
/etc/yum.repos.d/*.repo: #为每个仓库的提供配置文件

repo配置文件

[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL #若gpgcheck=0,此出不配置也可以


本地的yum服务器的baseurl形式:

file:// 本地路径
http://
https://
ftp://

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

搭建本地仓库

#挂载光盘至某目录,如/mnt/cdrom
mount /dev/cdrom /mnt/cdrom
#创建配置文件
[root@centos7 ~]#vim /etc/yum.repos.d/centos7.repo
[CentOS7]
name=CentOS 7
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1

yum-config-manager命令

快捷生成yum仓库的配置文件和启动或关闭仓库,来源于yum_utils包

格式:

#增加仓库
yum-config-manager --add-repo URL或file 
#禁用仓库
yum-config-manager --disable "仓库名"
#启用仓库
yum-config-manager --enable  "仓库名"

3.2 yum相关命令

格式:
    yum [options] [command] [package ...]

选项:
    -y #自动回答为"yes"
    -q #静默模式
    --nogpgcheck #禁止进行gpg check
    --enablerepo=repoidglob    #临时启用此处指定的repo,支持通配符,如:"*"
    --disablerepo=repoidglob #临时禁用此处指定的repo,和上面语句同时使用,放在后面的生效

3.2.1 显示仓库

格式:
    yum repolist [all|enabled|disabled]


添加 -v 可以显示仓库详细信息

3.2.2 显示安装包

格式:
    yum list
    yum list [all | glob_exp1] [glob_exp2] [...]
    yum list {available|installed|updates} [glob_exp1] [...]

3.3.3 安装软件包

格式:
    yum install package1 [package2] [...]
    yum reinstall package1 [package2] [...]  #重新安装


--downloadonly  #只下载相关包默认至/var/cache/yum/x86_64/7/目录下,而不执行
install/upgrade/erase

--downloaddir=<path>, --destdir=<path>  #--downloaddir选项来指定下载的目录,如果不存在
自动创建

3.3.4 卸载软件包

yum remove | erase package1 [package2] [...]

3.3.5 升级和降级

检查可用升级:
    yum check-update

升级和降级
    yum upgrade|update [package1] [package2] [...]
    yum upgrade-minimal   #最小化升级
    yum downgrade package1 [package2] [...] (降级)

3.3.6 查询

查看程序包

yum info [...]  

查询某个文件是哪个程序包所提供的

yum provides | whatprovides feature1 [feature2] [...]

注意:文件要写全路径,而不只是文件名,否则可能无法查询到
以指定的关键字搜索程序包名及 summary 信息
yum search string1 [string2] [...]

3.3.7 建立仓库缓存

清除目录 /var/cache/yum/ 缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

构建缓存

yum makecache

总结

这样我们就初步了解Linux软件包和软件管理相关特性了,欢迎添加VX: wenjinworkon

  • 33
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geekgold

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值