软件包管理

程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接
静态编译:.a
动态编译:.so

静态和动态链接

 

链接主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接,分为静态链接和动态链接
.静态链接
.把程序对应的依赖库复制一份到包
.libxxx.a
.嵌入程序包
.升级难,需重新编译
.占用较多空间,迁移容易
.动态链接
.只把依赖加做一个动态链接
.libxxx.so
.连接指向
.占用较少空间,升级方便

包的组成:
二进制文件、库文件、配置文件、帮助文件
.程序包管理器:
debian: deb文件, dpkg包管理器
redhat: rpm文件, rpm包管理器

包命名

rpm包命名方式:
name-VERSION-release.arch.rpm
例:bash-4.2.46-19.el7.x86_64.rpm

 

包之间:可能存在依赖关系,甚至循环依赖
解决依赖包管理工具:
yum: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

rpm包管理

 

CentOS系统上使用rpm命令管理程序包:
安装、卸载、升级、查询、校验、数据库维护

rpm包安装

--test: 测试安装,但不真正执行安装,即dry run模式
--nodeps:忽略依赖关系
--replacepkgs | replacefiles
--nosignature: 不检查来源合法性c
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本

rpm包升级

upgrade:安装有旧版程序包,则“升级”
如果不存在旧版程序包,则“安装”
freshen:安装有旧版程序包,则“升级”
如果不存在旧版程序包,则不执行升级操作

--oldpackage:降级
--force: 强制安装

包查询

-a:所有包
-f:查看指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作

包校验

包来源的合法性验证及完整性验证
完整性验证:SHA256
来源合法性验证:RSA
公钥加密
对称加密:加密、解密使用同一密钥
非对称加密:密钥是成对儿的
public key: 公钥,公开所有人
secret key: 私钥, 不能公开

导入所需要公钥
rpm -K|checksig rpmfile 检查包的完整性和签名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

------------------------------------------------------------------------------------

yum

YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具

文件服务器:
http://
https://
ftp://
file://

yum配置文件

yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置

创建yum仓库

保存并退出

yum命令

显示仓库列表:
yum repolist 

显示程序包:
yum list

安装程序包:
yum install

升级程序包:
yum update

检查可用升级:
yum check-upd

卸载程序包:
yum remove

编译安装

第一步:configure脚本
选项:指定安装位置、指定启用的特性
--help: 获取其支持使用的选项
选项分类:
安装路径设定:
--prefix=/PATH:指定默认安装位置,默认为/usr/local/
--sysconfdir=/PATH:配置文件安装位置

Optional Features: 可选特性
--disable-FEATURE
--enable-FEATURE[=ARG]
.Optional Packages: 可选包
--with-PACKAGE[=ARG] 依赖包
--without-PACKAGE 禁用依赖关系
.注意:通常被编译操作依赖的程序包,需要安装此程序包的“开发”组件,其包名一般类似于name-devel-VERSION

第二步:make

第三步:make install

编译安装前先解压压缩包

进入解压下的文件目录里,进行安装

预编译config配置

编译---make ,make install  完成后

 

posted @ 2019-06-09 15:38  凤溪潇潇  阅读(111)  评论(0编辑  收藏  举报