Linux对包管理阐述
Centos/Redhat/Fedora的软件包,都是rpm后缀的文件。包管理器rpm(Redhat packages manager)
linux的哲学思想是简单命令解决复杂任务,因此每个软件的功能较单一,所以各种包之间有着复杂的依赖关系,为了解决这种可以使用前端工具:
前端管理工具,自动解决依赖关系。
01、rpm包命名格式
二进制格式 name-VERSION.tar.gz
VERSION的格式: major.minor.release.os.arch
arch:i386,x64(amd64),ppc(power pc),noarch(java编写的,可以跨平台)
os:e17(红帽七) os:el6(红帽6)
eg:
主版本号为3,次版本号为0,发行号为2,编译次数为1,系统为centos7,平台为x64的rpm包
redis-3.0.2-1.centos7.x64.rpm
02、版本类型
fc final candidate 最终版
alpha 内测版
beta 公测版
rc 发布候选版
release 正式版
程序包管理器:
源代码---> 目标二进制格式----> 组织成为一个或有限几个“包”文件,实现软件的安装,升级,卸载,查询,校验
后端管理工具:
debian:dpt,dpkg,".deb"
redhat: rpm,".rpm" yum
S.u.S.E:rpm ,".rpm" 源于rpm但是组织结构不同,并不能和redhat兼容
Ubantu:是debian的分支,包管理机制一样
Gentoo;parts
Archlinux:linux界的新贵(极简哲学思想)
yum:rhel系列系统上的rpm包管理器的前端工具
apt-get:.deb包管理器的前端工具
zypper:suse的rpm包管理工具
dnf:Fedora20+系统上的rpm包管理器的前端工具,功能更强大,未来centos中也可能使用
03、常见的Mirrors
程序包组成包管理器的功能,将编译好的应用程序的各组成文件打包成一个或几个程序包文件
1.系统发行版的光盘或官方的文件服务器(或镜像站点)
http://mirrors.aliyun.com
http://mirrors.sohu.com
EPEL(较为可靠的组织):阿里云等中的epel目录
2.对rpm单个包下载
http://pkgs.org
http://rpm.pbone.net
http://rpmfind.net
04、RPM参数含义
CentOS系统上的rpm命令管理程序包,安装,升级,卸载,查询和校验,数据库维护
rpm命令: rpm [OPTIONS] [PACKAGE_FILE]
安装: -i,--install
升级:-U,--updata,-F,freshen
卸载:-e,--erase
查询:-q,--query
校验: -V,--verify
数据库维护:--builddb,--initdb
1.安装
rpm -ivh PACKAGE_FILE
通用选项:
-v:verbose 显示详细信息,
-vv:更详细的输出
rpm {-i|--install} [install-options] PACKAGE_FILE...
[install-options]:
-h:hash marks 输出进度条,每个#表示2%的进度
--test:仅是测试,并不真的安装
--nodeps:忽略依赖关系,可以让你安装,但是不一定可以用。你建议使用
--force 强制安装
--replacepkgs;重新安装
如果自己不小心错误修改了某些配置文件,想要安装的初始文件,可以通过这个命令但是要把改变过的文件删除,否则重新安装不会替换它
--nodigest:不检查程序包的完整性
--nosignature:不检查包签名信息,不检查来源合法性
注意: rpm可以自带脚本;
四类:--noscripts,不执行任何脚本
preinstall:安装过程开始之前运行的脚本,%pre
postinstall:安装过程完成之后运行的脚本,%post
peruninstall:卸载过程真正开始执行之前运行的脚本,
postuninstall:卸载过程完成之后运行的脚本
2.升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE
rpm {-F|--freshen} [install-options] PACKAGE_FILE
-U:升级或安装,有则升级,无则安装
-F : 升级,如果事先没有也不会安装
--oldpackage:降级;
--force:强制升级
常见用法:
rpm -Uvh PACKAGE_FILE....
rpm -Fvh PACKAGE_FILE
注意:
1.不要对内核做升级操作;linux支持多内核版本共存,因此,直接安装新版本内核
2.如果某源程序的配置文件安装后被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名
(FILENAME.rpmnew)后提供(删除旧的,新的自动生成)
3.卸载:
rpm {-e|--erase} [--allmatchs][--nodeps][--noscripts][--test]PACKAGE_NAME
--allmatchs:卸载所有匹配指定名称的程序包的各版本
--nodeps: 忽略依赖关系,即使该文件被依赖,也会卸载
--test: 仅是测试,并不真的卸载
4.查询:
rpm {-q|--query}[select-options][query-options]
[select-options]:
-a,-all:查询所有已经安装的包
-f FILE:查询指定的文件由那个程序安装生成
-p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作
eg: rpm -qpi PACKAGE.NAME: 不安装包查看包的具体信息
rpm -qlp PACKAGE.NAME:不安装包直接查看生成的文件
rpm -qcp PACKAGE.NAME:不安装包查看包会生成的配置文件
--whatprovides CAPABILITY:查看指定的CAPABLITY由哪个程序包提供
--whatrequires CAPABLITY:查询指定的CAPABLITY被哪个包所依赖
[query-options]
--changlog;查询rpm包的changlog;
-l,--list:列出该安装包生成的文件列表
-i,--info:程序包相关的信息,版本号,大小,所属的包组等
-c,--configure:查询指定的程序包提供的配置文件
-d,--docfiles:查询指定的程序包提供的文档
--provides:列出指定的程序包提供的所有的CAPABLITY,提供了某个文件也是能力
-R,--requires:查询指定包的依赖关系
--scripts:查看程序包自带的脚本程序
eg:
[root@localhost ~]# rpm -q --provides bash bash提供的能力
config(bash) = 4.1.2-40.el6
bash = 4.1.2-40.el6
bash(x86-64) = 4.1.2-40.el6
[root@localhost ~]# rpm -q --whatprovides ‘config(bash)‘ ;‘config(bash)‘ 这个能力是谁提供的
bash-4.1.2-40.el6.x86_64
[root@localhost ~]# rpm -q --whatrequires ‘config(bash)‘ ;‘config(bash)‘ 这个能力被谁依赖
bash-4.1.2-40.el6.x86_64
05、RPM常见用法
rpm -qi PACKAGE.NAME: 查询安装包的具体信息
rpm -ql PACKAGE.NAME:列出安装包生成的文件
rpm -qf FILE:查询某个文件是由那个安装包提供的
eg:[root@localhost ~]# rpm -qf /usr/share/man/man1/wait.1.gz
bash-4.1.2-40.el6.x86_64
rpm -qc PACKAGE.NAME:查看安装包生成的配置文件
rpm -qa :已经安装的所有包
不安装包直接查看:
eg: rpm -qpi PACKAGE.NAME: 不安装包查看包的具体信息
rpm -qlp PACKAGE.NAME:不安装包直接查看生成的文件
rpm -qcp PACKAGE.NAME:不安装包查看包会生成的配置文件
06、RPM效验
校验务必保证公钥是安全的,合法的
rpm {-V|--verify} [select-options] [verify-options]
eg: rpm -Va
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
eg:
[root@localhost ~]# rpm -V zsh
S.5....T. /usr/share/zsh/4.3.11/scripts/newuser 这里对应的就是上面的信息,.表示没有变化
包来源合法性验证和完整性验证:
合法性:一个包制作者利用单向加密数据,然后利用私钥对数据的MD5加密,这样大家获得公钥后就可以验证这个包的来源了
完整性:自己利用单向加密方法计算数据的MD5,然后比对md5码比对,如果一致,说明数据内容没有被修改。
[root@localhost ~]# rpm -K /media/cdrom/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm
/media/cdrom/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
[root@localhost ~]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-6
查看导入的秘钥文件
[root@localhost ~]# rpm -qa gpg-pubkey*
gpg-pubkey-c105b9de-4e0fd3a3
删除导入的文件:
[root@localhost ~]# rpm -e gpg-pubkey-c105b9de-4e0fd3a3
数据库的重建:
rpm {--initdb|--rebuilddb}[--depath DIRECTORY][--root DIRECTORY]
--initdb:初始化数据库,当前无任何数据库可实验化创建一个新的;当前有时不执行任何操作,不要轻易操作
--rebuilddb:重新构建,读取当前系统上所有已经安装过的程序包进行重新创建
--depath:指定数据库的路径
--root:指定根的路径
Linux对包管理阐述的更多相关文章
- Linux程序包管理之yum及源代码安装
第十六章.Linux程序包管理之yum及源代码安装 目录 yum介绍 yum配置文件 yum的repo配置文件中可用的变量 yum命令的使用 使用光盘作为本地yum仓库 如何创建yum仓库 编译安装的 ...
- Linux程序包管理rpm与yum
Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...
- 【转】Linux中包管理与定时任务
[转]Linux中包管理与定时任务 第1章 软件查询 1.1 查询软件是否安装 rpm -qa |grep cron 查询是否安装了这个软件. [root@znix ~]# rpm -qa |grep ...
- Linux之包管理工具总结[RPM/DPKG]-[YUM/APT]
0.关键词解释 RPM:Red Hat Package Manager(原名),RPM Package Manager(现名,递归缩写,类似于GNU的命名); 解释:RPM软件包管理器 YUM:Yel ...
- Linux 程序包管理-RPM
程序简介: POSIX(Portable Openratin System)跨平台系统:不同操作系统平台的标准C库(glibc)都是遵循POSIX规范的,这样基于标准库开发程序的源代码可以夸平台编译 ...
- Linux程序包管理初步-rpm的使用
在Linux系统上,一般而言,对于程序包管理器来说分为三类: debian:dpt,dpkg; (程序包后缀.deb) rhel:rpm (程序包后缀.rpm) suse:rp ...
- Linux系统-----包管理器的演变
每个电脑设备都使用某种形式的软件来执行其预定任务.在软件开发的早期,对产品进行了严格的bug和其他缺陷测试.在过去的十多年里,软件通过互联网发布,目的是通过应用新版本的软件来修复任何错误.在某些情况下 ...
- Linux程序包管理初步-yum的使用
何为yum? yum:由yellow dog研发,全称Yellowdog Update Modifier 是rhel系列系统上rpm包管理器的前端工具,可用来自动解决依赖关系,从而更好的实现程序包的安 ...
- Linux - DNF包管理
简介 link DNF(Dandified Yum)是新一代的RPM软件包管理器. DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容. DN ...
随机推荐
- 【java】将字符串的首字母大写
工具方法: public static void main(String[] args) { System.out.println(upperCaseFirst("barer")) ...
- c++11改进我们的程序之垃圾回收(一)
c#和java中有自己主动垃圾回收机制,.net执行时和java虚拟机能够管理分配的堆内存,在对象失去引用时自己主动回收,因此在c#和jva中, 内存管理不是大问题.c++语言没有垃圾回收机制,必须 ...
- C#中的String与string
在C#中,string 是 System.String 的别名,所以基本上在使用时是没有差别的. 习惯上,我们把字符串当作对象时(有值的对象实体),我们用string. 而我们把它当类时(需要字符串类 ...
- (学)如何在Oracle中一次执行多条sql语句
队长同学原来的地址:https://www.cnblogs.com/teamleader/archive/2007/05/31/765943.html队长同学原来的描述: 有时我们需要一次性执行多条s ...
- 第四章 JVM垃圾回收算法
说明:在阅读本篇之前,需要知道怎么判断对象的存活与否,见<第三章 JVM内存回收区域+对象存活的判断+引用类型+垃圾回收线程> 注意:本文主要参考自<分布式Java应用:基础与实践& ...
- Java 解析Excel文件为JSON
Excel转Json的需求 反正我对SSM基本不会的情况下来到现在这家公司,都是90后,感觉很好.第二天就给我开发任务,就是把用户上传的Excel文件转成JSON返回给前台用于大屏的数据展示. 解决方 ...
- jQuery用面向对象的思想来编写验证表单的插件
本人的重点是怎么构建一个简单有效可扩展的jQuery表单验证插件,这篇文章没有教你怎么用 validate plugin.我们的重点在学习一些jQuery,Javascript面向对象编程的知识. 下 ...
- 网上收集:跟着 8 张思维导图学习 Javascript【转】
学习的道路就是要不断的总结归纳,好记性不如烂笔头,so,下面将po出8张javascript相关的思维导图. 思维导图小tips:思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却又 ...
- (转)unity3d插件 HUD Text 学习
转自:http://www.cnblogs.com/code1992/p/3657291.html 使用版本 NGUI_HUD_Text_v1.11 .英语水平差,难免有很多不足之处,忘批评指正.本文 ...
- 浅谈Java两种并发类型——计算密集型与IO密集型
转载:https://blog.csdn.net/u013070853/article/details/49304099 核心是可以分别独立运行程序指令的计算单元.线程是操作系统能够进行运算调度的最小 ...