+++++++rpm/yum/编译

前端之家收集整理的这篇文章主要介绍了+++++++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

猜你在找的Bash相关文章