linux程序包管理
RPM ==================================================================
#ldd 查看二进制程序调用的动态链接库
#ldconfig -p 显示本机已缓存的所有可用库文件
dll: Dynamic link library
so : Shared Object
API: Application Program Interface 应用编程接口
ABI: Application Binary INterface 应用二进制接口
Unix-like ELF
C/C++程序格式:
源代码:文本格式的程序代码
编译开发环境:编译器,头文件,开发库
二进制格式:文本格式的程序代码-编译器-二进制格式(二进制程序,库文件,配置文件)
java/pathon程序格式:
源代码:编异成能够在其虚拟机(jvm/pvm)运行的格式
开发环境:编译器,开发库
项目构建工具:
c/c++:make
java:maven
程序包管理器:
源代码 - 目标二进制格式 - 组织成几个包文件;完成安装、升级、查询、卸载、效验等操作
debian:dpt,dpkg ".deb"
redhat:rpm ".rpm"
S.u.S.E:rpm ".rpm"
rpm:Redhat Package Manage
RPM Package Manage
rpm包命名格式:
name-VERSION-rpmrelease.arch.gz archetecture 架构
VERSION:major.minor.release
yum-3.2.29-73.el6.centos.noarch.rpm
yum-3.2.29版本 73次修改 Redhat Enterprise 6
changelog
拆包:选择完整程序包中需要的功能
前端工具:自动解决依赖关系
yum: rhel
apt-get(apt-cache): deb
zypper: suse
dnf: fedora 22+
程序包管理器:
功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,
从而方便的实现程序包的安装,卸载,升级等操作
/var/lib/rpm/ rpm数据库
获取程序包途径:
1.系统发行版的光盘或官方的文件服务器(或镜像站点)
mirrors.aliyun.com
mirrors.sohu.com
mirrors.163.com
2.项目的官方站点
3.第三方组织
pkgs.org
rpmfind.net
rpm.pbone.net
4.自己制作
检查其合法性:
来源合法性
程序包完整性
#rpm [OPTIONS] [PACKAGE_FILE]
-i 安装 --install
rpm -ivh packagefile -v 显示详细信息 -h 以#号表示进度
-U 升级或安装 --update
-F 仅可升级
--oldpackage 降级
--force 强制升级
-e 卸载 --erase rpm -e http(包名)
--allmatchs 删除指定名称软件包所有版本
--nodeps 忽略依赖关系
--test 测试卸载
-q 查询 --query
[select-options]
-a --all 查询所有已装包;可配合grep
]#rpm -qa | grep httpd
-f FILE 查询指定文件由哪个软件包安装生成
]#rpm -qf /etc/named
-p --package PACKAGE_FILE 对未安装的程序包执行查询 -qpc -qpl -qpi
--whatprovides CAPABILITY 查询指定能力由哪个程序提供
--whatrequires CAPABILITY 查询指定能力被哪个包依赖
[query-options]
--changelog 查询rpm包的changelog
--provides 列出指定程序包提供的所有CAPABILITY
-R --requires查询指定程序包的依赖关系(CAPABILITY)
-l --list 列出程序安装生成的所有文件
-qpl 查询未安装的程序包安装后会生成哪些文件
-i --info 程序包相关信息
-c --configfiles 查询指定程序提供的配置文件
-d --docfiles 查询指定程序包提供的帮助文档
--scripts 查看程序包自带的脚本
-V 校验 --verify 可指定检查哪些
]#rpm -V bash ]#S.5....T
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
数据库重建: 默认位置:/var/lib/rpm
rpmdb
--initdb 初始化数据库。当前无数据库可初始化创建新的数据库;如果存在则不作操作
--rebuilddb 重新创建数据库
--dbpath 指定创建数据库文件存放路径
--builddb,initdb 数据库维护
通用选项:
--nodeps 忽略依赖关系
--replacepkgd 重新安装 删除某个配置文件后可重新安装
--replacefiles 替换不同程序包中可能出现的相同的文件
--test 测试安装 仅测试能否安装 不真正安装
--nosignature 不检查包签名信息,不检查来源合法性
--nodigest 不检查包完整性
包来源和发行、完整性验证:
包制作者:
提取程序包的特征码
使用自己的私钥对特征码加密(签名)
将签名加入包放到互联网
使用者:
使用公钥验证包来源合法性、完整性
验证:
安装时自动验证
手动验证:rpm -K PACHAGE-FILE
本文出自 “平平无奇” 博客,请务必保留此出处http://zzjasper.blog.51cto.com/9781564/1839643
原文:http://zzjasper.blog.51cto.com/9781564/1839643