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:指定根的路径

 

转载于:https://www.cnblogs.com/xiaochina/p/5915192.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨时钟域电路设计——亚稳态及双锁存器

一、同步电路 定义:电路中所有受时钟控制的单元,全部由一个统一的时钟控制。 优点:在同步设计中,EDA工具可以保证电路系统的时序收敛,避免电路设计中的竞争冒险。 缺点:时钟树综合需要加入大量延迟单元&…

linux setsockopt详解

1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddrTRUE; setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL)); 2. 如果要已经处于连接状态的soket在调用closes…

[TOOLS] 移动端调试进行时 - whistle

1、本地安装、启动whistle 安装实操请查看官方文档不赘述 复制代码 2、手机设置代理 实操请查看官方文档 !!!注意:代理ip填写whistle右上角online选项中的ip 复制代码 3、whistle上设置对应rules、weinre whistle设置代理(!!!注意支持tunnel协议): rules…

函数动态参数实现format

变量赋值一种是字符串格式化,一种是通过format的方式 1.字符串格式化 s"i am %s,age %d"%(Jasper,23)print(s)打印输出:i am Jasper,age 232.format格式化 s"i am {name},age {age}".format(namejasper,age23)print(s)或 s2"i …

跨时钟域电路设计——单bit信号

前面提到了简单的双电平锁存器,下面是一些单bit同步电路。 一、慢时钟域向快时钟域 边沿检测同步器 将慢时钟域的脉冲搬移并缩小为快时钟域的脉冲。 既可以检测上升沿,也可以检测下降沿。 如上图,慢时钟下一个有效脉冲的最短周期为慢时钟的…

数据同步 rsync+notify架构

rsync 同步命令,非常好用 notify是监控本地文件的变化的 、安装配置 1. 安装rsync,inotify-tools sudo apt-get install rsync inotify-tools 2. 拷贝rsync配置文件 mkdir /etc/rsync cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/rsync/ 3. 服…

OC_KVC与KVO简单介绍

KVC KVC概述 KVC 即 Key-value coding 键值编码,是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。 KVC案例 interface Person : NSObjectproperty (nonatomic,assign) int age; property (nonatomic,copy)…

C语言100例01 PHP版(练习)

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 代码: 1 for($i1;$i&l…

嵌入式根文件系统制作

1:文件系统分类: 基于flash的文件系统:flash有两种,一种是NOR,另一种NAND。NOR型 FLASH主要用于存放程序。NAND型 FLASH主要用于存放数据。NOR的特点是可在芯片内执行。这样应用程序可以直接在flash内存内运行,不必再把代码读到…

跨时钟域电路设计——结绳法

信号从快时钟域到慢时钟域过渡时,慢时钟可能无法对快时钟变化太快的信号进行采样。 之前的同步器法对两个时钟间的关系有要求,结绳法适用于任何时钟域之间的过渡。 结绳法的原理是将快时钟信号的脉冲周期延长,等到慢时钟周期采样后再“解绳”…

我之理解---计时器setTimeout 和clearTimeout

今天在写个图片切换的问题 有动画滞后的问题,才动手去查setTimeout 和clearTimeout。之前写的图片播放器也有类似的问题,有自动start按钮 和stop按钮, 其他都正常,问题出在每次多次快速的点击start按钮时,图片播放的速…

002服务提供者Eureka

1、POM配置 和普通Spring Boot工程相比&#xff0c;仅仅添加了Eureka、Spring Boot Starter Actuator依赖和Spring Cloud依赖管理 <dependencies><!--添加Eureka Server依赖--><dependency><groupId>org.springframework.cloud</groupId><art…

使用Busybox构造cramfs根文件系统

使用Busybox构造cramfs根文件系统 11.1、下载Busybox&#xff0c;如果系统中没有mkcramfs工具则还要下载mkcramfs压缩工具。本文件系统使用Busybox-1.10.1&#xff0c;cramfs-1.1。压缩文件Busybox-1.10.1.tar.bz2&#xff0c;cramfs-1.1.tar.gz。 22.解压文件&#xff1a; tar…

关于二维码分块上色(彩色二维码)的算法研究

原文:关于二维码分块上色&#xff08;彩色二维码&#xff09;的算法研究众所周知&#xff0c;二维码通常是黑白的&#xff0c;而且是由若干个长方形或正方形小块平铺而成。但从人们的审美角度来看&#xff0c;常见的黑白二维码不免让人审美疲劳。本文试着从分块上色的角度对二维…

20145309信息安全系统设计基础第12周学习总结后篇

指针与声明 声明 1、C语言中变量的声明 类型&#xff08;type&#xff09; 声明符&#xff08;declarator&#xff09; 2、最简单的声明是变量 3、指针数组 指针数组是一个数组数组里的元素都是指针例&#xff1a;int *daytab[13]4、数组指针 数组指针是一个指针指针指向一个类…

跨时钟域电路设计——多bit信号FIFO

多个bit信号的跨时钟域仅仅通过简单的同步器同步时不安全的。 如下图&#xff1a; 虽然信号都同步到目的时钟域&#xff0c;可完成的功能却与设计的初衷不相符。 解决方案之一为对信号进行格雷码编码&#xff0c;但此方案只适用于连续变化的信号。另一种方案为增加新的控制信号…

嵌入式linux系统中设备驱动程序

嵌入式linux系统中设备驱动程序是内核的一部分&#xff0c;完成对设备初始、读写操作和控制等功能。驱动程序隐藏了硬件设备的具体细节&#xff0c;对不同的设备提供一致的接口&#xff0c;这些接口通过file_Operation结构来定义&#xff0c;设计驱动程序的大部分工作就是根据硬…

WPF 打印实例

原文:WPF 打印实例在WPF 中可以通过PrintDialog 类方便的实现应用程序打印功能&#xff0c;本文将使用一个简单实例进行演示。首先在VS中编辑一个图形&#xff08;如下图所示&#xff09;。 将需要打印的内容放入同一个<Canvas>中&#xff0c;并起名为“printArea”&…

mongodb 物理删除数据

刚开始用mongodb的时候&#xff0c;感觉很好用&#xff0c;速度很快&#xff0c;不过后面就遇到一个问题&#xff0c;数据物理内存一直增加&#xff0c;删除表也不管用。 然后网上找了各种办法&#xff0c;最后发现一个办法管用&#xff0c;就是物理删除存储数据。 操作如下&am…

计数排序、桶排序和基数排序

计数排序 当输入的元素是 n 个 0 到 k 之间的整数时&#xff0c;它的运行时间是 Θ(n k)。计数排序不是比较排序&#xff0c;排序的速度快于任何比较排序算法。 由于用来计数的数组C的长度取决于待排序数组中数据的范围&#xff08;等于待排序数组的最大值与最小值的差加上1&a…