0
点赞
收藏
分享

微信扫一扫

Rocky基础之软件包管理1

软件包和包管理器

C 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接

1软件包介绍

开源软件最初只提供了打包的源码文件,用户必须自已编译每个想在GNU/Linux上运行的软件。用户急 需系统能提供一种更加便利的方法来管理这些软件,当Debian诞生时,这样一个管理工具dpkg也就应 运而生,可用来管理deb后缀的"包"文件。从而著名的"package"概念第一次出现在GNU/Linux系统中, 稍后Red Hat才开发自己的rpm包管理系统

1.1、使用光盘

# 神奇的光盘挂载目录
# Rocky
[root@rocky8 ~]# rpm -q autofs
package autofs is not installed
[root@rocky8 ~]# yum install -y autofs
[root@rocky8 ~]# rpm -q autofs
autofs-5.1.4-82.el8.x86_64
[root@rocky8 ~]# systemctl start autofs
[root@rocky8 ~]# systemctl status autofs
● autofs.service - Automounts filesystems on demand
Loaded: loaded (/usr/lib/systemd/system/autofs.service; disabled; vendor preset: disab>
Active: active (running) since Mon 2022-07-11 19:26:49 CST; 7s ago
[root@rocky8 ~]# systemctl enable --now autofs
Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.
[root@rocky8 ~]# cd /misc
[root@rocky8 misc]# ls
[root@rocky8 misc]# cd cd #好神奇,是不?🤣🤣🤣🤣🤣🤣👏👏👏👏
[root@rocky8 cd]# ls
AppStream BaseOS EFI images isolinux LICENSE media.repo TRANS.TBL

# Ubuntu
[root@ubuntu2004 ~]# apt install -y autofs
/misc /etc/auto.misc
[root@ubuntu2004 ~]# systemctl status autofs.service
● autofs.service - Automounts filesystems on demand
Loaded: loaded (/lib/systemd/system/autofs.service; enabled; vendor preset: >
Active: active (running) since Mon 2022-07-11 19:31:48 CST; 9s ago
[root@ubuntu2004 ~]# cd /misc
[root@ubuntu2004 misc]# ls
[root@ubuntu2004 misc]# cd cd
[root@ubuntu2004 cd]# ls
boot casper dists EFI install isolinux md5sum.txt pool preseed ubuntu

1.2软件包中的文件分类

二进制文件

库文件

配置文件

帮助文件

利用 cpio工具查看包文件列表

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

1.3程序包管理器

软件包管理器功能: 将编译好的应用程序的各组成文件打包一个或几个程序包文件,利用包管理器可以方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作 主流的程序包管理器 redhat:rpm文件, rpm 包管理器,rpm:Redhat Package Manager,RPM Package Manager debian:deb文件, dpkg 包管理器

1.4包命名

源代码打包文件命名:

name-VERSION.tar.gz|bz2|xz
VERSION: major.minor.release

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

统计rpm的架构类型及相应的包数量

[root@rocky8 cd]# find . -name '*.rpm' | sed -rn "s/.*\.([^.]+)\.rpm$/\1/p"|sort|uniq -c
1391 i686
2681 noarch
4193 x86_64

分类和拆包

软件包为了管理和使用的便利,会将一个大的软件分类,放在不同的子包中。 包的分类 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:Fedora 18+ rpm包管理器前端管理工具,CentOS 8 版代替 yum apt:deb包管理器前端工具 zypper:suse上的rpm前端管理工具

1.6、程序包管理器相关文件
  1. 包文件组成 (每个包独有) 包内的文件 元数据,如:包的名称,版本,依赖性,描述等 可能会有包安装或卸载时运行的脚本
  2. 数据库(公共):/var/lib/rpm 程序包名称及版本 依赖关系 功能说明 包安装后生成的各文件路径及校验码信息
1.7、获取程序包的途径

系统发版的光盘或官方网站

CentOS 镜像:

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

Ubuntu 镜像:

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

第三方组织提供

Fedora-EPEL:Extra Packages for Enterprise Linu

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

SCL: Software Collections,提供较高版本的第三方软件包

https://wiki.centos.org/SpecialInterestGroup/SCLo
企业级 Linux 发行版本都被设计成持久可用的。它们的设计亦包括在发行版本使用期内维持 ABI/
API 兼容性,因此只要某个发行版本仍获支持,你在它发行首日所写的程序便可一直运作。现时
CentOS 的寿命是 10 年。然而,这意味著在发行版本使用期的尾段,它所包含的程序语言或数据库版
本(例如 php、python、perl 或 mysql、postgresql)对比新近的Linux 发行版本所提供的就
显得老旧。
不过有很多企业亦希望能以较新的程序创建软件。她们想同时拥有稳定性及较新的软件。她们要求这些
软件兼容其它系统软件,好让她们能选择遁序改进或较新的软件作开发之用。
软件集Software Collections(SCL)源出现了,以帮助解决 RHEL/CentOS 下的这种问题。SCL
的创建就是为了给 RHEL/CentOS 用户提供一种以方便、安全地安装和使用应用程序和运行时环境的多
个(而且可能是更新的)版本的方式,同时避免把系统搞乱。与之相对的是第三方源,它们可能会在已
安装的包之间引起冲突。比如:SCL 容许你执行 CentOS 提供的缺省 python(这样 yum 及其它
CentOS 工具便可用),又容许你同时安装较新版的 python 作创建及执行程序之用。
SoftwareCollections.org 是为 Red Hat Enterprise Linux,Fedora,CentOS 和
Scientific Linux 创建软件集合(SCL)的项目站点

​ Community Enterprise Linux Repository:​​http://www.elrepo.org​​​,支持最新的内核和硬件相关包 ​ Rpmforge:官网:​​http://repoforge.org/​​, RHEL推荐,包很全,即将关闭

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

1.8、rpm 包管理器

CentOS 系统上使用rpm命令管理程序包 功能:安装、卸载、升级、查询、校验、数据库维护

rpm 常用选项

-ivh  安装
-e 卸载
-q 包名
-qa 列出所有安装好的包
-ql 包名 ,列出此包包括的文件列表
-qc 包名,只列出此包中的配置文件
-qi 包名,包的说明:版本,安装时间,发行者,功能
-qf 文件名 查询此文件来自于哪个包
-Uvh U代表upgrade:安装有旧版程序包,则"升级",如果不存在旧版程序包,则"安装" rpm -Uvh PACKAGE_FILE ...
-Fvh freshen:安装有旧版程序包,则"升级", 如果不存在旧版程序包,则不执行升级操作
--oldpackage:降级
--force: 强制安装


举报

相关推荐

0 条评论