码迷,mamicode.com
首页 > 系统相关 > 详细

学习日志---linuxの RPM软件包管理器

时间:2015-10-25 22:51:09      阅读:417      评论:0      收藏:0      [点我收藏+]

标签:linux

rpm包的使用:

rpm包命名格式:

源程序:name-version.tar.{gz|bz2|xz}  打包在一起的源码

version: major.minor.release


rpm包:name-version-release.arch.rpm  这是打包好的二进制程序了

release:通常包含rpm的制作发行号,还包含适用的OS

arch:这个是适用于哪种硬件架构,还有位数

例子:bash-4.3.2-2.el6.x86_64.rpm


OS平台:

el6: redhat enterprise linux 6

el5:

CentOS5

CentOS6

suse11


arch:

x86_64

i386, i586, i686

ppc

noarch


nginx-1.4.16-5.noarch.rpm


比如,一个源码:有10个功能

大多数用户只用其6个功能,余下的4个呢?


分包:把一个大的程序打包制作成多个包

主包:bash-4.3.2-2.el6.x86_64.rpm

支包:bash-hello-4.3.2-2.el6.x86_64.rpm

 bash-world-4.3.2-2.el6.x86_64.rpm


DNS:bind, bind-devel, bind-libs, bind-utils


来源合法性验正:

源程序:通过md5或sha1校验码验正;

rpm包:发行商提供的合法性是可信的

验正包完整性:校验码

验正来源合法:公钥,使用私钥加密,对外用公钥解密,可以解密,则可认为是原作者



获取rpm包的途径:

1、发行商的光盘或站点服务器

以CentOS为例: 

http://mirrors.163.com

http://mirrors.sohu.com

下面两个是用于找rpm包的

2、http://rpmfind.net

3、http://rpm.pbone.net


注意:

1、发行商,发行光盘中的包,需要升级时,官方释放出升级包;

2、Fedora EPEL  这里面有很多的rpm包




rpm包管理:安装

使用wget+地址去下载rpm

rpm -i, --install

# rpm -i /path/to/rpm_package ...

-v: 

-vv:

-vvv:

-h: hash, 以#的个数显示安装进度,一个#表示2%的进度;


--test:仅测试,不真正执行安装过程


如果存在依赖:

解决依赖关系

忽略依赖关系: --nodeps


重新安装:

-ivh --replacepkgs


原来的配置文件不会被覆盖,新安装的配置文件将会重命名为以.rpmnew为后缀的文件;


rpm包管理:卸载

rpm -e, --erase

rpm -e package_name



如果卸载被其它程序所依赖的包:

1、把依赖者一同卸载;

2、忽略依赖关系;

--nodeps

3、不再卸载


rpm包管理:查询

rpm -q


查询所有已经安装的包:rpm -qa


查询包的描述信息:rpm -qi package_name

Name        : bash                         Relocations: (not relocatable)不支持重新定位

Version     : 4.1.2                             Vendor: CentOS

Release     : 15.el6_4                      Build Date: Thu 18 Jul 2013 09:21:24 PM CST

Install Date: Wed 12 Feb 2014 09:48:43 AM CST      Build Host: c6b10.bsys.dev.centos.org(系统)

Group       : System Environment/Shells     Source RPM: bash-4.1.2-15.el6_4.src.rpm

Size        : 3139291                          License: GPLv3+

Signature   : RSA/SHA1, Thu 18 Jul 2013 09:46:10 PM CST, Key ID 0946fca2c105b9de

Packager    : CentOS BuildSystem <http://bugs.centos.org>

URL         : http://www.gnu.org/software/bash 源码地址

Summary     : The GNU Bourne Again shell

Description :

The GNU Bourne Again shell (Bash) is a shell or command language

interpreter that is compatible with the Bourne shell (sh). Bash

incorporates useful features from the Korn shell (ksh) and the C shell

(csh). Most sh scripts can be run by bash without modification.


查询某单个包是否安装:rpm -q package_name


查询包安装之后在当前系统生成文件列表:rpm -ql(list) package_name

这个是查看安装完程序之后,都散布在哪些目录下,rpm包的安装都在/bin /sbin /lib /etc等这些目录下,包括二进制程序,库或者配置文件


查询某文件是哪个包安装生成的:rpm -qf /path/to/somefile

[root@xuanxuan ~]# rpm -qf /etc/passwd

setup-2.8.14-20.el6_4.1.noarch   可以看到/etc/passwd是在setup包安装后生成的文件


查询包安装后生成的帮助文档:rpm -qd package_name

查看某个包安装后生产的帮助文档所在的目录


查询包安装后生成的配置文件:rpm -qc package_name

查看包安装户的配置文件都在哪里

[root@xuanxuan ~]# rpm -qc bash

/etc/skel/.bash_logout

/etc/skel/.bash_profile

/etc/skel/.bashrc


查询包相关的脚本:rpm -q --scripts package_name

脚本有四类:

preinstall: 安装前脚本

postinstall: 安装后脚本

preuninstall: 卸载前脚本

postuninstall: 卸载后脚本


查询尚未安装的rpm包文件的相关信息:q改为qp即可

查询安装后会生成的文件列表:rpm -qpl(list) /path/to/package_file 这里要跟包文件,不能只跟名,因为还没安装

查询其简单描述信息:rpm -qpi(information) /path/to/package_file


rpm包之升级:

rpm -U: 升级或安装

rpm -F:升级

rpm {-Uvh|-Fvh} /path/to/package_file 文件


--nodeps:忽略依赖关系

--force: 强行安装


注意:不要对内核执行升级操作;

多版本内核可并存,因此,建议执行安装操作;


rpm包管理:校验

检查包安装后生成的文件是否被修改过;

rpm -V package_name    (verify校验) 检查安装后的文件是否有被改变的

[root@xuanxuan ~]# rpm -V wget

如果wget安装后的文件有修改,如/etc下的某对应文件修改了,则会显示修改提示,如下格式:

      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     能力



rpm包管理:检验来源合法性和软件包完整性

包完整性:通过单向加密机制(md5|sha1)

来源合法性:通过公钥加密机制(RSA)


命令:gpg, pgp


导入制作者的公钥,CentOS发行版的公钥在iso文件中; 

导入命令:rpm --import /path/to/gpg-key-file


检查:rpm -K /path/to/package_file 文件,因为此时还没安装

rpm --checksig /path/to/package_file

--nosignature: 不检查来源合法性

--nodigest: 不检查完整性


[root@xuanxuan ~]# rpm --import RPM-GPG-KEY-CentOS-6 

[root@xuanxuan ~]# rpm -K httpd-2.2.15-45.el6.centos.i686.rpm 

httpd-2.2.15-45.el6.centos.i686.rpm: rsa sha1 (md5) pgp md5 OK


rpm包管理:数据库重建

数据库:/var/lib/rpm/  这个是rpm管理工具数据库的位置


重建:

rpm --initdb: 初始化

如果事先不存在一个数据库,则新建之;

rpm --rebuilddb: 重建

直接重建数据库,会覆盖原有的库;

这个是rpm数据库存储的信息

[root@xuanxuan rpm]# ll /var/lib/rpm

total 19208

-rw-r--r--. 1 root root   860160 Oct 22 02:31 Basenames    包的基名

-rw-r--r--. 1 root root    12288 Oct 21 07:03 Conflictname

-rw-r--r--. 1 root root   245760 Oct 22 02:31 Dirnames    包的路径

-rw-r--r--. 1 root root  1339392 Oct 22 02:31 Filedigests

-rw-r--r--. 1 root root    12288 Oct 22 03:10 Group

-rw-r--r--. 1 root root    12288 Oct 22 03:10 Installtid

-rw-r--r--. 1 root root    12288 Oct 22 03:10 Name

-rw-r--r--. 1 root root    12288 Oct 21 07:03 Obsoletename

-rw-r--r--. 1 root root 14245888 Oct 22 03:10 Packages   详细的信息

-rw-r--r--. 1 root root   684032 Oct 22 03:10 Providename

-rw-r--r--. 1 root root   577536 Oct 22 03:10 Provideversion

-rw-r--r--. 1 root root    12288 Oct 22 03:10 Pubkeys

-rw-r--r--. 1 root root   110592 Oct 22 02:31 Requirename

-rw-r--r--. 1 root root    65536 Oct 22 02:31 Requireversion

-rw-r--r--. 1 root root    24576 Oct 22 02:31 Sha1header

-rw-r--r--. 1 root root    12288 Oct 22 02:31 Sigmd5

-rw-r--r--. 1 root root    12288 Oct 21 07:03 Triggername

-rw-r--r--. 1 root root    24576 Oct 22 03:10 __db.001

-rw-r--r--. 1 root root   180224 Oct 22 03:10 __db.002

-rw-r--r--. 1 root root  1318912 Oct 22 03:10 __db.003

-rw-r--r--. 1 root root   491520 Oct 22 03:10 __db.004


学习日志---linuxの RPM软件包管理器

标签:linux

原文地址:http://wukong0716.blog.51cto.com/10442773/1706025

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!