Linux软件包安装:
系统调用:库
API: Posix可移植操作系统规范
ABI: Application Binary Interface应用二进制接口
Debian: dpt
RedHat: rpm, Redhat Package Manager
Dpt、rpm软件包程序管理工具
glibc: 系统核心库
软件包的组成部分:
1:二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
2:库文件:/lib, /usr/lib, /usr/local/lib
3:配置文件:/etc
4:帮助文件:手册, README, INSTALL (/usr/share/doc/)
软件包管理工具:
1:文件清单
2:文件放置路径
3:提供的功能说明
4:依赖关系
RPM: RPM is Package Manager
rpm --> yum是rpm的前端工具
编译安装:源代码
编译器:gcc, g++
提供编译环境:开发环境
二进制:
库:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
帮助手册:/etc/man.config, man -M
头文件:/usr/include
安装程序的方式:
通用二进制格式
软件包管理器
软件包管理器的前端工具
源代码编译
rpm: 打包、安裝、查詢、升級、卸載、校驗、数据库管理(重建)
源程序:name-version.tar.{gz|bz2|xz}
version版本号:major.minor.release
例如:bash-4.3.1.tar.xz :主版本号4;次版本号3;发行号1
rpm包:name-version-release.arch.rpm
发行号:用于标识rpm包本身的发行号,可还包含所适用的操作系统
el6: rhel6 、centos6:
arch: 主机平台
i686、x86_64、amd64、ppc、noarch(不依赖平台)
rpm分包:
主包:核心包
分包:支包
OS: 安装程序
fedora-epel红帽额外的rpm包
http://mirrors.sohu.com
http://rpmfind.net搜索rpm包的站点
http://rpm.pbone.net/
rpm包有验正机制:来源的合法性、软件包的完整性
gpg --> pgp
非对称加密:pu(公钥), pr(私钥)
数字签名、密钥交换:
RedHat系列官方公钥:
/etc/pki/rpm-gpg/
RPM-GPG-KEY-CentOS-6
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6就将密钥导入rpm中,就能验证合法性了
用单项加密算法计算出rpm包的特征码,再用rpm包制作者的私钥加密特征码并附加在特征码的后面(里面),我们验证时,由于作者是用私钥加密的,就只有公钥可以解密,只要能解密出来,就验证了其来源是合法的。解密出来的是生成的特征码(散列值),使用相同的算法再算一次散列值,如果散列值相同,就验证了软件包的完整性
rpm
-K
--checksig
安装:rpm -i /PATH/TO/RPM_FILE
-i|--install
-v, -vv, -vvv详细信息
-h: 以#显示安装进度
-ivh
忽略依赖关系:
--nodeps(不建议使用)
测试安装:
--test
重新安装:
--replacepkgs
warning: /etc/sysconfig/named created as /etc/sysconfig/named.rpmnew
卸载:rpm -e 包名
--nodeps不会将有依赖关系的包都卸载掉
warning: /etc/sysconfig/named saved as /etc/sysconfig/named.rpmsave
查询不加版本号:rpm -q|--query 包名
查询所有已经安装包:
rpm -qa不用加包名
rpm -qa | grep 'pattern'
查询包的摘要信息:
rpm -qi 包名
查询包安装生成的文件清单:
rpm -ql 包名 rpm -qf由那个包生成的
查询包安装生成的配置文件:
rpm -qc 包名
查询包安装生成的帮助文档:
rpm -qd 包名
查询包相关的脚本:
rpm -q --scripts 包名
preinstall: 安装前脚本
postinstall: 安装后脚本
preuninstall: 卸载前脚本
postuninstall: 卸载后脚本
查询尚未安装的包的相关信息:
rpm -qpi /path/to/rpm_file可以组合其他选项
-i
-l
-d
-c
--scripts
升级:
-U: 升级+安装
-F:升级
-Uvh
-Fvh
--force强行升级
--nodeps忽略依赖关系
注意:内核不应该升级,应该尽可能安装,它允许多版本并存;
校验:rpm -V 包名
rpm包的数据库:
/var/lib/rpm
数据库重建:
--initdb: 新建数据库
--rebuilddb: 重建数据库 不需要加任何参数
例子:先确定要下载的包的路径
wget http://172.16.0.1/cobbler/ks_mirror/rhel-6.4-i386/Packages/包名 下载,
显示所下载的包是合法的,是完整的,就可以安装了
显示安装完成了
通过对软件包的查看可以发现软件包已经卸载掉了