+++++++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 通用选项:-vverbose,-h以#显示安装进度 查询 默认查询已安装程序包,-p查询未安装程序包 1、rpm -q [select_option] ##查询程序包 -a所有程序包 -ffilepath某文件对应的程序包 --whatprovidesCAPABILITY此文件或功能(CAPABILITY)由哪个包所提供 --whatrequiresCAPABILITY哪个包依赖此文件或功能(CAPABILITY) -gGROUP查询组内提供的程序包 2、rpm -q [select_option] [query_option] PACKAGE_FILE ... ##程序包内文件列表、内容或包的依赖 -l程序包内的列表 -ddoc列表 -cconfig列表 -i程序包内的信息 -LLisence --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 --importRPM-GPG-KEY-CentOS-7 (安装对应仓库中的程序包无需校验) 安装后的文件列表与程序包中的文件列表存储的校验码对比 S:size 5:md5 T:Modifytime D:device:major.minor L:link U:user G:Group c:configurefile d:docfile 数据库维护 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 repoidreponamestatus 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-Rpackage1... #rpm--test #rpm-q--providespackage1... 包的信息 info package ... #rpm-q-ipackage... 安装 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、提供开发环境 方法一: CentOS6yumgroupinstall"DevelopmentTools""ServerPlatformDevelopment" CentOS7yumgroupinstall"DevelopmentTools" 方法二: yuminstallautoconfautomakemakegccglibc 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |