程序包管理rpm和yum
- Linux程序包管理:
- API:Application Programming Interface源码包
- POSIX:Portable OS
- 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接
- 静态编译:
- 共享编译:.so
- ABI:Application Binary Interface二进制包
- Windows与Linux不兼容
- 库级别的虚拟化:
- Linux: WINE
- ELF
- Windows: Cywin
- exe,msl
- 系统级开发 : 性能要求高
- C/C++/go : httpd,vsftpd,nginx
- 应用级开发 :
- java/Python/php/perl/ruby : hadoop,hbase(JVM),openstack(PVM)
- 二进制应用程序的组成部分:
- 二进制文件、库文件、配置文件、帮助文件
- 程序包管理器:
- debian:deb, dpt
- redhat: rpm, rpm
- rpm: Redhat Package Manager
- RPM is Package Manager
- Gentoo: ports
- Archlinux:
- 源代码:name-VERSION.tar.gz
- VERSION: major.minor.release
- rpm包命名方式:
- name-VERSION-release.arch.rpm
- VERSION: major.minor.release
- release.arch:rpm的发行号
- release:release.OS
- 如: zlib-1.2.7-13.el7.i686.rpm
- redis-3.0.2-1.centos7.x64.rmp
- 常见的arch:
- x86: i386, i486, i586, i686
- x86_64: x64, x86_64, amd64
- powerpc: ppc
- 跟平台无关:noarch
- testapp: 拆包
- testapp-VERSION-ARCH.rpm: 主包
- testapp-devel-VERSION-ARCH.rpm:支包
- testapp-testing-VERSION-ARHC.rpm:
- 包之间:存在依赖关系
- X, Y, Z
- x-->a,b,c
- a-->y
- 前段工具:自动决绝依赖关系
- yum:rhel系列系统上rpm包管理器的前端工具;
- apt-get:deb包管理器前端工具;
- zypper: suse上的rpm前端管理工具;
- dnf: Fedora 22+系统上的 rpm包管理器前端管理工具;
- 查看二进制程序所依赖的库文件:
- ldd /PATH/TO/BINARY_FILE
- 管理及查看本机装载的库文件:
- ldconfig
- /sbin/ldconfig -p: 显示本机已经缓存的所有可用库文件名及文件路径映射关系;
- 配置文件为:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
- 缓存文件:/etc/ld.so.cache
- 程序包管理:
- 功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作;
- 1、程序的组成组成清单 (每个包独有)
- 文件清单
- 安装或卸载时运行的脚本
- 2、数据库(公共)
- 程序包名称及版本
- 依赖关系;
- 功能说明;
- 安装生成的各文件的文件路径及校验码信息;
- 等等等
- /var/lib/rpm
- 管理程序包的方式:
- 使用包管理器:rpm
- 使用前端工具:yum, dnf
- 获取程序包的途径:
- (1) 系统发版的光盘或官方的服务器;
- CentOS镜像:
- http://mirrors.aliyun.com
- http://mirrors.sohu.com
- http://mirrors.163.com
- http://mirror.hust.edu.cn
- (2) 项目官方站点
- http://zabbix.com
- (3) 第三方组织:
- Fedora-EPEL
- 搜索引擎:
- http://pkgs.org
- http://rpmfind.net
- http://rpm.pbone.net
- (4) 自己制作
- 建议: 检查其合法性
- 来源合法性;
- 程序包的完整性;
- CentOS系统上rpm命令管理程序包:
- 安装、卸载、升级、查询、校验、数据库维护
- -i:安装
- -U:升级
- -e:卸载
- -q:查询
- -V:校检
- --builddb,--initdb:数据库维护
- 安装:INSTALL OPTIONS
- rpm {-i|--install} [install-options] PACKAGE_FILE ...
- -v: verbose,详细详细
- -vv: 更为详细的输出
- -h: 以#显示程序包管理执行进度;每个#表示2%的进度
- rpm -ivh PACKAGE_FILE ...
- [install-options]
- --test: 测试安装,但不真正执行安装过程;dry run模式;
- --nodeps:忽略依赖关系;
- --replacepkgs: 重新安装;
- --nosignature: 不检查来源合法性;即密钥;
- --nodigest:不检查包完整性;
- --noscipts:不执行程序包脚本片断;
- %pre: 安装前脚本; --nopre
- %post: 安装后脚本; --nopost
- %preun: 卸载前脚本; --nopreun
- %postun: 卸载后脚本; --nopostun
- 升级: UPGRADE OPTIONS
- rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
- rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
- -U :升级;安装;
- 安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”;
- -F :升级;
- 安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作;
- rpm -Uvh PACKAGE_FILE ...
- rpm -Fvh PACKAGE_FILE ...
- --oldpackage:降级;
- --force: 强行升级;
- 注意:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版本内核;
- (2) 如果原程序包的配置文件安装后曾被修改,长级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留;
- 查询: QUERY OPTIONS
- rpm {-q|--query} [select-options] [query-options]
- PACKAGE SELECTION OPTIONS:
- [select-options]
- -a: 所有包
- [root@study_centos6 ~]# rpm -qa | grep "^zsh"
- zsh-4.3.11-9.el6_10.x86_64
- -f: 查看指定的文件由哪个程序包安装生成
- [root@study_centos6 ~]# rpm -qf /etc/fstab
- setup-2.8.14-23.el6.noarch
- -p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包文件做查询操作;
- --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供;
- --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
- PACKAGE QUERY OPTIONS:
- [query-options]
- --changelog:查询rpm包的changlog
- # rpm -q --changelog bash
- -c: 查询程序的配置文件
- -d: 查询程序的文档
- -i: information
- -l: 查看指定的程序包安装后生成的所有文件;
- rpm -ql bash
- --scripts:程序包自带的脚本片断
- -R: 查询指定的程序包所依赖的CAPABILITY;
- --provides: 列出指定程序包所提供的CAPABILITY;
- 用法:
- -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
- -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ...
- -qa
- 卸载:ERASE OPTIONS
- rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts][--notriggers] [--test] PACKAGE_NAME ...
- --allmatch: 卸载所有匹配指定名称的程序包的个版本
- --nodeps:
- --test:测试卸载;
- 校验:VERIFY OPTIONS
- rpm {-V|--verify} [select-options] [verify-options]
- S file Size differs
- M Mode differs (includes permissions and file type)
- 5 digest (formerly MD5 sum) differs
- D Device major/minor number mismatch
- L readLink(2) path mismatch
- U User ownership differs
- G Group ownership differs
- T mTime differs
- P caPabilities differ
- 包来源合法性验正及完整性验正:
- 完整性验正:SHA256
- 来源合法性验正:RSA
- 公钥加密:
- 对称加密:加密、解密使用同一密钥;
- 非对称加密:密钥是成对儿的;
- public key: 公钥,公开所有人
- secret key: 私钥, 不能公开
- 导入所需要公钥:
- rpm --import /PATH/FROM/GPG-PUBKEY-FILE
- CentOS 7发行版光盘提供的密钥文件:RPM-GPG-KEY-CentOS-7
- [root@study_centos6 ~]# ls /etc/pki/rpm-gpg/
- RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Debug-6 RPM-GPG-KEY-CentOS-Security-6 RPM-GPG-KEY-CentOS-Testing-6
- 验正:
- (1)安装此组织签名的程序时,会自动执行验正;
- (2)手动验正:rpm -K package_file
- 数据库重建:
- centos6: man rpm
- centos7: man rpmdb
- rpm {--initdb|--rebuilddb}
- initdb: 初始化
- 如果事先不存在数据库,则新建之;否则,不执行任何操作;
- rebuilddb:重建
- 无论当前存在与否,直接重新创建数据库;
- 回顾:Linux程序包管理的实现、rpm包管理器
- rpm命令实现程序管理:
- 安装:-ivh, --nodeps, --replacepkgs
- 卸载:-e, --nodeps
- 升级:-Uvh, -Fvh, --nodeps, --oldpackage
- 查询:-q, -qa, -qf, -qi, -qd, -qc, -q --scripts, -q --changlog, -q --provides, -q --requires
- 校验:-V
- 导入GPG密钥:--import, -K, --nodigest, --nosignature
- 数据库重建:--initdb, --rebuilddb
- Linux程序包管理(2)
- CentOS: yum, dnf
- YUM: yellow dog, Yellowdog Update Modifier
- yum repository: yum repo
- 存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata);
- 文件服务器:
- ftp://
- http://
- nfs://
- file:///
- yum客户端:
- 配置文件:
- /etc/yum.conf:为所有仓库提供公共配置
- /etc/yum.repos.d/*.repo:为仓库的指向提供配置
- 仓库指向的定义:
- [repositoryID]
- name=Some name for this repository
- baseurl=url://path/to/repository/
- enabled={1|0}
- gpgcheck={1|0}
- gpgkey=URL
- enablegroups={1|0}
- failovermethod={roundrobin|priority}
- 默认为:roundrobin,意为随机挑选;
- cost=
- 默认为1000
- 教室里的yum源:http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/
- CentOS 6.6 X84_64 epel: http://172.16.0.1/fedora-epel/6/x86_64/
- yum命令的用法:
- yum [options] [command] [package ...]
- command is one of:
- * install package1 [package2] [...]
- * update [package1] [package2] [...]
- * update-to [package1] [package2] [...]
- * check-update
- * upgrade [package1] [package2] [...]
- * upgrade-to [package1] [package2] [...]
- * distribution-synchronization [package1] [package2] [...]
- * remove | erase package1 [package2] [...]
- * list [...]
- * info [...]
- * provides | whatprovides feature1 [feature2] [...]
- * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
- * makecache
- * groupinstall group1 [group2] [...]
- * groupupdate group1 [group2] [...]
- * grouplist [hidden] [groupwildcard] [...]
- * groupremove group1 [group2] [...]
- * groupinfo group1 [...]
- * search string1 [string2] [...]
- * shell [filename]
- * resolvedep dep1 [dep2] [...]
- * localinstall rpmfile1 [rpmfile2] [...]
- (maintained for legacy reasons only - use install)
- * localupdate rpmfile1 [rpmfile2] [...]
- (maintained for legacy reasons only - use update)
- * reinstall package1 [package2] [...]
- * downgrade package1 [package2] [...]
- * deplist package1 [package2] [...]
- * repolist [all|enabled|disabled]
- * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
- * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
- * check
- * help [command]
- 显示仓库列表:
- repolist [all|enabled|disabled]
- 显示程序包:
- list
- # yum list [all | glob_exp1] [glob_exp2] [...]
- # yum list {available|installed|updates} [glob_exp1] [...]
- 安装程序包:
- install package1 [package2] [...]
- reinstall package1 [package2] [...] (重新安装)
- 升级程序包:
- update [package1] [package2] [...]
- downgrade package1 [package2] [...] (降级)
- 检查可用升级:
- check-update
- 卸载程序包:
- remove | erase package1 [package2] [...]
- 查看程序包information:
- info [...]
- 查看指定的特性(可以是某文件)是由哪个程序包所提供:
- provides | whatprovides feature1 [feature2] [...]
- 清理本地缓存:
- clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
- 构建缓存:
- makecache
- 搜索:
- search string1 [string2] [...]
- 以指定的关键字搜索程序包名及summary信息;
- 查看指定包所依赖的capabilities:
- deplist package1 [package2] [...]
- 查看yum事务历史:
- history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
- 安装及升级本地程序包:
- * localinstall rpmfile1 [rpmfile2] [...]
- (maintained for legacy reasons only - use install)
- * localupdate rpmfile1 [rpmfile2] [...]
- (maintained for legacy reasons only - use update)
- 包组管理的相关命令:
- * groupinstall group1 [group2] [...]
- * groupupdate group1 [group2] [...]
- * grouplist [hidden] [groupwildcard] [...]
- * groupremove group1 [group2] [...]
- * groupinfo group1 [...]
- 如何使用光盘当作本地yum仓库:
- (1) 挂载光盘至某目录,例如/media/cdrom
- # mount -r -t iso9660 /dev/cdrom /media/cdrom
- (2) 创建配置文件
- [CentOS7]
- name=
- baseurl=
- gpgcheck=
- enabled=
- yum的命令行选项:
- --nogpgcheck:禁止进行gpg check;
- -y: 自动回答为“yes”;
- -q:静默模式;
- --disablerepo=repoidglob:临时禁用此处指定的repo;
- --enablerepo=repoidglob:临时启用此处指定的repo;
- --noplugins:禁用所有插件;
- yum的repo配置文件中可用的变量:
- $releasever: 当前OS的发行版的主版本号;
- $arch: 平台;
- $basearch:基础平台;
- $YUM0-$YUM9:自定义变量
- http://mirrors.magedu.com/centos/$releasever/$basearch/os
- 创建yum仓库:
- createrepo [options] <directory>
程序包管理rpm和yum的更多相关文章
- 程序包管理rpm、yum与简单编译安装程序
Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...
- Linux程序包管理rpm与yum
Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...
- linux基础之程序包管理(rpm,yum)
一.rpm 安装:rpm { -i | --install } [ install-options ] PACKAGE_FILE... -v: 显示安装时的详细信息 -vv: 显示许多难以阅读的调试信 ...
- Linux 程序包管理-RPM
程序简介: POSIX(Portable Openratin System)跨平台系统:不同操作系统平台的标准C库(glibc)都是遵循POSIX规范的,这样基于标准库开发程序的源代码可以夸平台编译 ...
- 【程序包管理】本地yum仓库的创建
一.yum优势 yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器. 基於RPM包管理,能够从指定的服务器 ...
- Linux程序包管理之yum及源代码安装
第十六章.Linux程序包管理之yum及源代码安装 目录 yum介绍 yum配置文件 yum的repo配置文件中可用的变量 yum命令的使用 使用光盘作为本地yum仓库 如何创建yum仓库 编译安装的 ...
- Linux 程序包管理-YUM
前端工具YUM管理程序包: rpm管理软件虽然方便,但是需要手工解决软件包的依赖关系:很多时候安装一个软件需要首先安装一个或多个(有时多达上百个)其它软件,手工解决很复杂:使用yum可以解决这个问题 ...
- 十七、程序包管理之yum和编译安装
YUM Redhat二次发行版 Yellow Dog Linux,上使用的yum(Yellowdog Update Modifier),由yellow dog 研发 yum命令的工作原理 1.接收用户 ...
- 十六、程序包管理之 rpm
c语言程序的构建过程 1.程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接--> 可执行程序 开放源码:就是程序码,文本格式的源代码,写给人类看的程序 ...
随机推荐
- ios 导航栏(自己定义和使用系统方式)
系统方式: //1.设置导航栏背景图片 [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] ini ...
- Swift基本常识点
import Foundation // 单行注释 // 多行注释(支持嵌套,OC是不支持的) // 常量let,初始化之后就不可改变. // 常量的具体类型可以自动识别,等号后面是什么类型,它就是什 ...
- AFNetworking 3.0携带參数上传文件Demo
一.服务端代码: 服务端是java用国产nutz搞的,实际mvc框架都大同小异.就是提交文件的同一时候还带了个表单參数 @AdaptBy(type=UploadAdaptor.class, args= ...
- The Elder HDU - 5956
/* 树上斜率优化 一开始想的是构造出一个序列 转化成一般的dp但是可能被卡 扫把状的树的话可能变成n*n 其实可以直接在树上维护这个单调队列 dfs虽然搞得是一棵树,但是每次都是dfs到的都是一个序 ...
- SQL Server 2005数据库定期备份(非常详细)与 SQL Server 2005数据库备份定期清理
SQL Server 2005数据库定期备份 分类: SQL Server 20052011-01-06 16:25 3320人阅读 评论(1) 收藏 举报 sql server数据库sqlserv ...
- bzoj 1026 [ SCOI2009 ] windy数 —— 数位DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1026 蛮简单的数位DP,预处理 f[i][j] 表示 i 位数,以 j 开头的 windy ...
- 杂项-Java:JNI
ylbtech-杂项-Java:JNI JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).从Java1.1开始, ...
- codevs1288 埃及分数(IDA*)
1288 埃及分数 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在古埃及,人们使用单位分数的和(形如1/a的 ...
- JavaScript表格搜索高亮功能模拟
在网页表格中模拟excle的搜索高亮显示功能.当在搜索框中输入需要的姓名时,若表格中存在对应的数据,则该表格背景色变为黄色. 下面为表的HTML源码: <!doctype html> &l ...
- 后台传list,前台接受
@RequestMapping("/page1") public ModelAndView editSharing(Integer id) { ModelAndView mav=n ...