软件包管理
- rpm,yum
软件运行和编译
- ABI:Application Binary Interface(应用程序与OS之间的接口)
??Windows与Linux不兼容;可执行程序文件格式
????Windows:PE(Portable Executable)
????Linux:ELF(Executable and Linkable Format)
??库级别的虚拟化
????Windows:Cygwin
????Linux:WINE - API:Application Programming Interface(应用程序与库之间的接口)
- 程序源代码–>预处理–>编译–>汇编–>链接
Linux包和包管理器
-
程序在互联 一般是以源代码的方式提供,.tar.gz的打包的源代码,用户使用软件必须将源码编译为Linux上能运行的二进制文件。因此Linux发行版商考虑用户对软件编译时可能存在的困难,将大多数可能用到的软件编译为可以在Linux直接运行的代码,开发出包和包管理器的概念,对Linux系统的包实现安装、卸载
查询、升级等功能。最早由Debian提出,它的管理工具被称为dpkg,随后Red Hat也开发了自己的包管理器rpm。 -
包的组成:
??二进制文件、库文件、配置文件、帮助文件 -
程序包管理器:
??debian: deb包文件,dpkg包管理器
??redhat:rpm包文件,rpm包管理器
????rpm:RedHat Package Manager
????rpm:RPM Package Manager -
包的命名:
??源代码:name-VERSION.tar.gz|xz|bz2
????VERSION:major.minor.release -
rpm包命名方式:
??name-VERSION-release.arch.rpm
??eg:tree-1.6.0-10.el7.x86_64
??软件名-主版本 .次版本 .末版本 .Redhat编译次数.系统版本.CPU架构.rpm
??常见的arch
????x86: i386, i486, i586, i686
????x86_64: x64, x86_64, amd64
????跟平台无关:noarch -
大软件分包:
??Application-VERSION-ARCH.rpm: 主包
??Application-devel-VERSION-ARCH.rpm 开发子包
??Application-utils-VERSION-ARHC.rpm 其它子包
??Application-libs-VERSION-ARHC.rpm 其它子包
????eg:
????httpd-2.4.6-88.el7.centos.x86_64.rpm 主包
????httpd-manual-2.4.6-88.el7.centos.noarch.rpm 手册
????httpd-devel-2.4.6-88.el7.centos.x86_64.rpm 开发
????httpd-tools-2.4.6-88.el7.centos.x86_64.rpm 工具
????这样可以根据需要安装相应的包。 -
包与包之间存在依赖关系,包管理器rpm解决依赖关系相对麻烦
-
解决包之间依赖关系的工具:
?yum:rpm包管理器的前端工具
?apt:deb包管理器前端工具
?zypper:suse上的rpm前端管理工具
?dnf:Fedora 18+ rpm包管理器前端管理工具 -
库文件
查看二进制程序所依赖的库文件
??ldd /PATH/TO/BINARY_FILE
管理及查看本机装载的库文件
??ldconfig 加载配置文件中指定的库文件
??/sbin/ldconfig -p 显示本机已经缓存的所有可用的库文件名即文件路径映射
??配置文件:/etc/ld.so.conf , /etc/ld.so.conf.d/*.conf
??缓存文件:/etc/ld.so.cache -
包管理器
1、程序包管理器:
??功能:将编译好的应用程序的各组成文件打包成一个或多个程序文件,从而方便快捷地实现程序包的安装、卸载、查询、升级等操作
2、包文件的组成:(每个包独有)
??RPM包内的文件
??RPM的元数据,如名称,版本,依赖性,描述等
??安装或卸载时运行的脚本
3、数据库(公共):/var/lib/rpm
??程序包名称及版本
??依赖关系
??功能说名
??包安装后生成的各文件路径及校验码信息
??注意:使用rpm均会使/var/lib/rpm目录中文件更新,使用rpm查询时也是查询此数据库中的数据,此数据库非常重要,破坏会系统不能安装、卸载、查询等各种包,建议备份。
??
RPM包管理器
-
安装:rpm -i
??-ivh:以#显示程序包的安装进度,v显示安装详细过程
??–test:测试安装,并未真正安装,即dry run 模式
??–nodeps:忽略依赖关系
??–replacepkgs|replacefile
??–nosignature:不检查包完整性
??–noscripts:不执行程序包安装脚本
??–nopre: %pre:安装前脚本
??–nopost %post:安装后脚本
??–nopreun %preun:卸载前脚本
??–nopostun %postun:卸载后脚本 -
卸载:rpm -e
-
查询:rpm -q
??-a:所有包
??-f:查看指定的文件由哪个程序包安装生成
??-p rpmfile:针对尚未安装的程序包文件做查询操作
??–whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
??–whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
??rpm2cpio 包文件|cpio –itv 预览包内文件
??rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件
??–changelog:查询rpm包的changelog
??-c:查询程序的配置文件
??-d:查询程序的文档
??-i:information
??-l:查看指定的程序包安装后生成的所有文件
??–scripts:程序包自带的脚本
??–provides:列出指定程序包所提供的CAPABILITY
??-R:查询指定的程序包所依赖的CAPABILITY -
校验:rpm -K | -V
?1、rpm -V
??S file Size differs
??M Mode differs (includes permissions and file type)
??5 digest (formerly MD5 sum) differs
??D Device major/minor number mismatch
??L readLink(2) path mismatch
??U User ownership differs
??G Group ownership differs
??T mTime differs
??P capabilities differ
?2、rpm -K
??导入所需要公钥
??rpm -K|checksig rpmfile 检查包的完整性和签名
??rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
??CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7
??rpm -qa “gpg-pubkey*” -
rpm数据库(数据最重要)
1、数据库重建:
??/var/lib/rpm
2、rpm {–initdb|–rebuilddb}–>一般没什么用
??initdb: 初始化
????如果事先不存在数据库,则新建之
????否则,不执行任何操作
??rebuilddb:重建已安装的包头的数据库索引目录
※※※※※
rpm -ivh | -e | -qi | -ql | -q –scripts | -qa | -qf /path/file | -q package | –force| -qc
yum
-
yum:Yellowdog Update Modifier,rpm的前端程序,可以解决依赖关系,可以在多个库之间定位软件包。
-
yum的工作原理:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!