+++++++rpm/yum/编译
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了+++++++rpm/yum/编译相关的知识,希望对你有一定的参考价值。
程序包管理总结
编译总结
程序包管理总结
rpm (Redhat Package Manager)早期由redhat用perl语言研发,后来用C重写 (RPM is Package Manager)。前端管理工具是yum,centos 7后支持dnf(EPEL源)
Fedora 22之后,支持dnf工具的使用
Debian系用.deb包,dpt-get前端管理工具
Slackware的二次发行版: 前端管理工具: Zypper,YasT
程序包命名
二进制格式: testapp-1.2.3-1.操作系统平台.cpu平台.rpm
源码格式: testapp-1.2.3-1.操作系统平台.src.rpm
源码: testapp-1.2.3.tar.压缩格式(gzip,bzip2,xz,zip)
拆包: 功能拆分,节约磁盘空间。
操作系统平台: centos: el6,el7
cpu平台:
i386,i486,i586,i686 : x86
x86_64,x64,amd64
noarch:java,python,c兼容ELF格式代码
拆包后,依赖关系:先安装主包后支包
lddconfig -p 查看装载进内存中的共享库,所有程序所依赖所依赖的库
ldd filepath 查看当前给定程序所依赖的库
配置文件:/etc/ld.so.conf 或 /etc/ld.so.conf.d/*.conf
定义库与内存映射
ldconfig [-v] 更新内存中的库映射列表
程序包: 二进制程序、库、配置文件、帮助手册
元数据:名称、版本、依赖关系、功能说明、安装生成的文件列表和校验码
项目管理工具: rpm,yum,dnf
安装、升级、卸载、查询程序包
获取程序包或源码途径
程序包途径:光盘发行商、第三方、自制作、官方站点
http://mirror.tuna.tsinghua.edu.cn
http://mirrors.hust.edu.cn/
mirrors.aliyun.com
mirrors.sohu.com
mirrors.163.com
http://pkgs.org
http://rpmfind.net 查找rpm包
http://rpm.pbone.net
源码途径: 托管站点、官方站点
SourceForge
Github.com
code.google.com
rpm,yum命令的使用
yum解决rpm依赖
yum C/S架构
dnf解决yum中断追踪
内核只安装不升级
配置改变,卸载时: .rpmsave,安装时: .rpmnew
多个rpm/yum/dnf不能同时使用。
事务类操作:
1、原子性: 原子的
2、隔离性:事物间相互隔离
3、持久性: 修改后不能改变
加密类型
单身、对称、非对称
算法:
单身:md5、sha1、sha128、sha224、sha256、sha384、sha512、GPG
非对称: des
对称: RSA、DSS、GPG
便于记忆:
1、分类
2、语法
忽略
rpm:
安装时:忽略完整性、忽略合法性、导入忽略完整和合法性、忽略冲突
安装、卸载:忽略触发、忽略依赖、忽略脚本执行
yum:
安装:忽略完整和合法性、忽略交互、仅下载不安装、忽略插件
安装时对程序包分析依赖的CAPABILITY和冲突,及内部元数据,安装时执行触发器,安装后执行脚本,由人为的控制每一个步骤是否可路过
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
不检测相关
rpm --nodigest package .. 不检查完整性
rpm --nosignature package ... 不检查来源合法性
rpm --import GPG_FILE 导入后不检查完整性和来源合法性
yum --nosignature package ... 不检查完整性和来源合法性
触发器相关
--notriggers rpm命令中,安装、卸载
查询: rpm -q --triggers
依赖相关
rpm
--test 冲突或依赖检测(安装、卸载)
--R package ... 需要的依赖 **(从元数据中抽取出)
--provide package ... 提供的依赖
--nodeps 忽略依赖(事务)
--replacefiles 忽略冲突(事务)
--whatprovide CAPABILITY 文件或功能由哪个包提供
-q -f filepath 文件由哪个包提供 **
--whatrequire CAPABILITY 文件或功能被哪个包所依赖
yum
--deplist package 需要的依赖 **(从元数据中抽取出)
--whatprovides CAPABILITY 文件或功能由哪个包提供 **
重新安装相关
rpm -ivh --replacepkgs package_file
yum reinstall package_file
降级相关
rpm -[UF]vh --downpackage package_file
yum downgrade package_file
包内信息查询相关
rpm -q { -i | --changelog | --scripts | --triggers | -L | --conflicts } package
yum info package
包内文件列表相关
rpm -q { -l | -c | -d } 。需要给合grep,fgrep,egrep和bash特性管道完成搜索匹配机制
yum list [ all | enabled | available ] [package|glob_expr] ... 支持搜索匹配机制
yum search glob_expr .... 支持搜索匹配机制
脚本相关(安装、卸载、查询)
--scripts 所有脚本
--pre 程序包安装前脚本
--post 程序包安装后脚本
--preun 程序包卸载前脚本
--postun 程序包卸载后脚本
数据库相关
rpm --initdb | --rebuildb
缓存相关
yum clean [headers|packages|metadata|dbcache|plugins|expire-cache|all]
yum makecache
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
rpm
通用选项: -v verbose , -h 以#显示安装进度
查询
默认查询已安装程序包,-p查询未安装程序包
1、rpm -q [select_option] ##查询程序包
-a 所有程序包 -f filepath 某文件对应的程序包 --whatprovides CAPABILITY 此文件或功能(CAPABILITY)由哪个包所提供 --whatrequires CAPABILITY 哪个包依赖此文件或功能(CAPABILITY) -g GROUP 查询组内提供的程序包
2、rpm -q [select_option] [query_option] PACKAGE_FILE ... ##程序包内文件列表、内容或包的依赖
-l 程序包内的列表 -d doc列表 -c config列表 -i 程序包内的信息 -L Lisence --changelog 程序包的changlog -R 程序包依赖什么 --provides 程序包提供的依赖 --conflicts 程序包与哪些包冲突 --scripts 程序包提供的脚本 --triggers 程序包提供的触发器
安装 rpm -ivh [OPTIONS...] PACKAGE_FILE ...
--test 测试安装,查看依赖 --nodeps 忽略依赖 --nodigest 忽略完整性 --nosignature 忽略来源合法性 --ignoreos 忽略平台 --replacepkgs 重新安装 --force 强行安装 --noscripts 不执行脚本 --nopre --nopost --nopreun --nopostun --notriggers 不执行触发器
升级 rpm -Uvh [OPTIONS...] PACKAGE_FILE ... 安装或升级
升级 rpm -Fvh [OPTIONS...] PACKAGE_FILE ... 只升级
--oldpackage 降级 --force 强行升级或降级
卸载 rpm -e [ --nodeps | --noscripts | --notriggers | --test ] PACKAGE_FILE ...
校验 rpm -V [selection-option] [verify-options] [PACKAGE_FILE...]
rpm --import RPM-GPG-KEY-CentOS-7 (安装对应仓库中的程序包无需校验)
安装后的文件列表与程序包中的文件列表存储的校验码对比
S:size 5: md5 T: Modify time D: device:major.minor L: link U: user G: Group c: configure file d: doc file
数据库维护 rpm { --initdb | --rebuildb }
--initdb: 只要存在数据库,无论是否完整,不初始化。数据库不存在时,才初始化。 --rebuildb: 无论数据库何种状态,都要进行重建数据库
yum
Yellow Dog 研发,redhat二次发行版使用:YUM(Yellowdog Update MOdifier)
原理:主机有缓存,请求元数据校验码.比对,完整用本地缓存.不完整,进行一次新的请求
请求元数据,下载至缓存,分析元数据,找出依赖未安装的程序包列表.
请求程序包,下载至缓存,安装.
删除程序包,保留元数据.
变量: 便于用于配置仓库
事务: yum命令执行发行修改的操作(安装/升级/卸载)
镜像: 同类仓库有多个.Aliyun镜像,SOHU镜像.163镜像
配置文件: yum配置:所有仓库共有的配置, 仓库配置:每个仓库独有的配置,范围越小,越是最终生效
元数据存储方式:压缩存储,sqllite接口存储
yum [OPTONS...] [SUB_CMD] PACKAGE_FILE ...
OPTIONS
-q 静默 -y 不交互,自动回答为yes --assumeno 不交互,自动回答为NO --nogpgcheck 来源合法性和完整性 . rpm分开使用: --nodigest,--nosignature --nodisablerepo=REPO 支持glob,本次安装禁止哪些仓库 --noenablerepo=REPO 支持glob,本次安装启用哪些仓库 --noplugins 本次安装不使用插件 --loaddownonly 本次安装或升级只下载程序包 --loaddowndir=DIR 下载的位置
获取帮助 yum help SUB_CMD
SUB_CMD
查询list
1、查询仓库信息
repolist [all|enabled|disabled] ## 默认为enabled
repoid reponame status
2、查询结果为程序包
显示程序包
list [all|available|installed|extras|obsoletes|recent] [glob_expr1] ... ##glob与文本字符的组合
包名.cpu平台 1.2.3-1.操作系统平台 repoid >>> obsoletes 废弃 >> rpm -q -a | fgrep 实现
搜索程序包
search string1 [string2] [...] ##glob与文本字符的组合成string
包名 与 简要描述信息 rpm -q -a | grep 实现
哪个程序包提供CAPABILITY(文件或功能)
whatprovides filepath
# rpm -q -f # rpm -q --whatprovides
3、查询包内信息
依赖关系
deplist package1 [package2] [...]
# rpm -q -R package1 ... # rpm --test # rpm -q --provides package1 ...
包的信息
info package ...
# rpm -q -i package ...
安装 install , localinstall
install package ...
localinstall rpmfile .... (centos5)
# rpm -ivh
卸载 remove
remove package ...
升级 update check-update
update [package ...]
check-update
缓存
clean
makecache
组命令
grouplist [list|info|summary|install|upgrade|remove|mark] [GROUP]
createrepo命令
创建: createrepo --update DIR ## 自动在DIR所有子目录中搜寻rpm,元数据放在DIR一级子目录中。
编译
autoconf 生成configure脚本
automake生成Makefile.in模板
configure脚本结合Makefile.in模板生成Makefile配置文件
make结合Makefile编译 (c/c+所写的程序)
make install 调用install命令完成复制文件(cp、install、dd)
C/C++代码编译步骤
1、提供开发环境
方法一: CentOS 6 yum groupinstall "Development Tools" "Server Platform Development" CentOS 7 yum groupinstall "Development Tools" 方法二: yum install autoconf automake make gcc glibc
2、展开源代码、查看INSTALL文件
1)只需要make
2)只需要make install
3)直接可用
3、./configure
生成Makefile
4、make
结合Makefile完成编译
5、make install
调用install命令完成复制文件(cp、install、dd)
安装后步骤:
1、导出二进制程序至PATH环境变量
环境变量: profile类
全局: /etc/profile 、 /etc/profile.d/*.sh
个人: ~/.bash_profile
2、导出库文件路径
查看库: ldconfig -p
配置库: /etc/ld.so.conf 、 /etc/ld.so.conf.d/*.conf
重新生成缓存: ldconfig [-v]
3、导出头文件
ln -sv /path/to/include /usr/include/NAME
4、导出帮助手册
1、不导出时:
man -M /PATH/TO/man COMMAND
2、导出时:
/etc/man.config
MANPATH /PATH/TO/man
本文出自 “Reading” 博客,请务必保留此出处http://sonlich.blog.51cto.com/12825953/1957212
以上是关于+++++++rpm/yum/编译的主要内容,如果未能解决你的问题,请参考以下文章