linux的程序包管理

随便写写,大佬勿喷

linux的程序包管理

 

                    API: 兼容,意味开发库兼容,因此,源代码可跨平台
                    ABI: 兼容,编译后的程序可以跨平台;
                              库:可执行程序,本身不能作为程序执行入口,但可以被调用编译好的二进制格式

程序源代码:预编译,编译,汇编,链接
          静态.a
          动态:.so(shared object)

注意: 1OS平台:应用程序必须为特定平台所支持的版本

—————————————————————————————————————————–
软件包的组成部分

二进制应用程序的组成部分
          二进制程序: /bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin
          库文件: /lib,/usr/lib,/lib64,/usr/lib64,/usr/local/lib,/usr/local/lib64,
          配置文件 /etc
          帮助文件 man文件,info文件,README,INSTALL,Changelog

 

总结
          二进制程序:bin,sbin
          库:lib
          头文件:include
          帮助文件:man
          配置文件:etc/conf

—————————————————————————————————————————–程序包管理器:
          debian: deb文件,dpkg包管理器
          redhat: rpm文件,rpm包管理器
          rpm:Redhat Package Manager
          RPM Package Manager

应用程序管理器:
          1数据库
          软件名和版本
          安装生成的各文件路径及校验码
          依赖关系
          提供功能性说明
          2提供程序组成格式
          文件清单
          安装卸载时运行的脚本

依赖关系:x –> y
                    循环依赖
                    版本依赖

包管理器的基本功能
          打包
          安装
          查询
          升级
          卸载
          校验
          数据库管理
          依赖关系 X,Y,M,N,L,I,K

前端管理工具
          yum rpm包管理器的前端工具
          apt-get deb包管理器的前端工具
          zypper suse上的rpm前端管理工具
          dnf Fedora 18+ rpm包管理器前端管理工具

总结:应用的安装方式
          使用包管理器:便捷,易用
          包管理器的前端工具
          源代码编译:
          简单打包的二进制格式:
—————————————————————————————————————————–
库文件
查看二进制程序所依赖的库文件
          idd/PATH/TO/BINARY_FILE
管理及查看本机装载的库文件
           ldconfig 加载库文件
          /sbin/ldconfig -p 显示本机已经缓存的所有可用库文件名及文件路径
映射关系
          配置文件 /etc/ld.so.conf /etc/ld/so/conf.d/*.conf
          缓存文件 /etc/ld.so.cache


rpm包命名格式:
          源程序:name-version.tar.{gz|bz2|xz}
          version: major,minor,release
          rpm包: name-varsion-release.arch.rpm
          release:通常包含rpm的制作发行号,还包含适用的OS
OS平台
          bash-4.3.2-2.e16.x86_64.rpm
          e16: redhat enterprise linux 6
          e15:CentOS5
          CentOS6
          suse11

arch:
          x86_64
          i386,i586,i686
          ppc
          noarch

比如:一个源码,有10个功能
大多数用户只用其6个功能,余下的4个呢
分包:把一个大的程序打包制作成多个包
主包: bash-4.3.2-2.e16.x86_64.rpm
子包 bash-4.3.2-2.e16.x86_64.rpm1
bash-hello-4.3.0-2.e16.x86_64.rpm

DNS: bind,bind-devel,bind-libs,bind-utils

来源合法性验证:
源程序;通过md5或sha1校验码验证
rpm包,发行商提供的合法性是可信的
验证包完整性:校验码
验证来源合法:公钥

 

注意:
1,发行商,发行光盘中的包,需要升级时,官方释放出升级包;

—————————————————————————————————————————–
rpm包管理:安装
语法
#rpm -i /run/media/root/CentOS 7 x86_64
参数
          -v:
          -vv:
          -vvv:
          -h:hash 以#的个数显示安装进度.一个#表示2%的进度
          -test: 仅测试;不真正执行安装过程
          –nodeps 如果存在依赖,解决依赖关系,忽略依赖关系:
          –noscripts 不执行程序包脚本
          -ivh –replacepkgs 重新安装:
原来的配置文件不会被覆盖,新安装的配置文件将会重命名为以.rpmnew为后缀的文件

rpm包管理:检查来源合法性和软件包完整性
          包完整性;通过单向加密机制(md5|sha1)
          来源合法性:通过公钥加密机制(RSA)
          命令:gpg,pgp
          导入制作者的公钥,ContOS发行版的公钥在iso文件中
          导入命令 rpm –import /path/to/gpg-key-file
          检查           rpm -K /path/to/package_file
                              –nosignature:不检查来源合法性
                              –nodigest: 不检查包完整性

查询包相关的脚本
          rpm -q –scripts package_name
脚本有四类:
          –nopre %pre(preinstall):安装前脚t6
          –nopost %post(postinstall)安装后脚本
          –nopreun %preun(preuninstall):卸载前脚本
          –nopostun %postun(postuninstall):卸载后脚本

rpm包管理:卸载
          语法
          rpm -e , –erase
          rpm -e , package_name
注:如果卸载被其他程序所依赖的包
                    1把依赖着一同卸载
                    2忽略依赖关系
                    –nodeps
                    3不再卸载
rpm包管理:查询
      语法
          rpm -q
参数
          rpm -q package_name 查询某单个包是否安装
          rpm -qa 查询所有已经安装的包
                    例如:常用rpm -qa |grep “httpd”
          rpm -qi package_name 查询包的描述信息
          rpm -ql package_name 查询包安装之后在当前系统生成的文件列表
          rpm -qf package_name 查询某文件是哪个包安装生成的
          rpm -qd package_name 查询包安装后生成的帮助文档
          rpm -qc package_name 查询包安装后生成的配置文件
          rpm -q –whatrequires 查询由哪个包所提供
          rpm -q –whatprovides 查询由哪个包所依赖
                    –scripts 程序包自带的脚本
                    –provides 列出指定程序包所提供的CAPABILITY
          -R 查询指定的程序包所依赖的CAPABILITY

查询尚未安装的rpm包文件的相关信息:
          查询安装后会生成的文件列表:
          rpm -qpl /path/to/package_file
          查询其简单描述信息
          rpm -qpi /path/to/package_file

rpm包之升级:
          rpm -U: 安装有旧版程序包,则升级,如果不存在旧版程序包,则安装
          rpm -F:安装有旧版程序包,则升级,如果不存在旧版程序包,不执行升级操作
          rpm {-Uvh| -Fvh} /path/to/package_file
                    –oldpackage 降级
                    –nodeps 忽略依赖关系
                    –force 强行安装
①注意:不要对内核执行升级操作
多版本内核可并存,因此,建议执行安装操作;
②如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件
并不会直接覆盖老版本的配置文件,而把新版本的文件重命名
(filename.rpmnew)后保留
rpm包管理:校验
          检查包安装后生成的文件是否被修改过:
          rpm -V package_name

rpm包管理:数据库重建
          数据库: /var/lib/rpm/

重建:
rpm –initdb:初始化
如果事先不存在一个数据库,则新建之;
rpm –rebuilddb;重建
直接重建数据库,会覆盖原有的库

常用组合
-ivh,-e.-qi,qf,qp,ql,q –scripts

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96635

(0)
简单不简单简单不简单
上一篇 2018-04-20
下一篇 2018-04-20

相关推荐