[华为云在线课程][Linux平台软件包安装与管理][第二章软件包和包管理器][学习笔记]

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

软件包介绍

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

软件包中的文件分类

  • 二进制文件
  • 库文件
  • 配置文件
  • 帮助文件

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

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

程序包管理器

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

  • RedHat:rpm文件,rpm包管理器,rpm:RedHat Package Manager,RPM Package Manager
  • Debian:deb文件,dpkg包管理器

包命名

源代码打包文件命名:

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

例子:Linux最新内核的C源码的行数

#tar xvf linux-5.7.2.tar.gz
#cd linux-5.7.2/
#for file in `find -name "*.c"`;do line=`cat $file|wc -l`;let sum+=line;done;echo $sum
#cat `find -name "*.c"` |wc -l
#find -name "*.c" | xargs cat |wc -l

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-3.2-32.el5_9.1.i386.rpm
bash-3.2-32.el5_9.1.x86_64.rpm

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

#cd BaseOS/Packages
#ls *.rpm |rev|cut -d. -f2|rev |sort |uniq -c
#ls *.rpm | grep -Eo '[^.]+\.rpm$' | grep -Eo '^[^.]+'|sort |uniq -c
#ls *.rpm | grep -Eo '[^.]+\.rpm$' | cut -d. -f1|sort |uniq -c

分类和拆包

软件包为了管理和使用的便利,会将一个大的软件分类,放在不同的子包中。
包的分类

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

包的依赖

软件包之间可能存在依赖关系,甚至循环关系,即:A包依赖B包,B包依赖C包,C包依赖A包
安装软件包时,会因为缺少依赖的包,而导致安装包失败
解决依赖包管理工具:

  • yum:rpm包管理器的前端工具
  • dnf:Fedora 18+ rpm包管理器前端管理工具,CentOS8版替代yum
  • apt:deb包管理器前端工具
  • zypper:suse上的rpm前端管理工具

程序包管理器相关文件

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

获取程序包的途径

软件包需要事先将源码进行编译后打包形成,获取包的途径如下:

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

CentOS镜像:
https://www.centos.org/download/
https://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://release.ubuntu.com

第三方组织提供

软件项目官方站点

http://yum.mariadb.org/
http://repo.mysql.com/yum/

搜索引擎

http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
http://sourceforge.net
注意:第三方包建议要检查其合法性,来源合法性,程序包的完整性

自己制作

将源码文件,利用工具,如:rpmbuild,fpm等工具值作成rpm包文件

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。