Linux学习笔记-4.1. 软件包分类和4.2. rpm命令管理

4.1.软件包分类

1、源码包

a)脚本安装包

源码包安装慢,容易报错

优点:

a)开源,如果有足够能力,可以修改源码

b)可以自由选择所需的功能

c)软件是编译安装,所以更加适合自己的系统,更加稳定也效率也高。

d)卸载方便,直接删除目录即可。

缺点:

a)安装过程步骤较多,尤其安装较大的软件集合时,容易出现拼写错误。

b)编译过程时间较长,安装比二进制安装时间长。

c)因为是编译安装,安装过程中一旦报错新手很难解决。

2、二进制包(RPM包,即系统默认包)

是指源码包经过编译后安装包

安装速度快了,但是不是源码

优点:

a)包管理系统简单,只通过几个命令就可以实现包的安装,升级,查询和卸载。

b)安装速度比源码包安装快的多

缺点:

a)经过编译,不再可以看到源代码

b)功能选择不如源码包灵活

c)依赖性,安装包相互依赖,依赖层次较多时,安装比较困难

4.2.rpm命令管理

4.2.1.包命名

例:包全名

httpd-2.2.15-15.el6.centos.1.i686.rpm

httpd 软件包名

2.2.15 软件版本

15软件发布的次数

el6.centos 适用的Linux平台

i686 适合的硬件平台

rpm rpm包扩展名

4.2.2.依赖性

树形依赖:a>b>c

环境依赖:a>b>c>a

abc用命令一起安装,可解决这种问题

模块依赖:模块依赖查询网站:www.rpmfind.net

4.2.3.安装升级与卸载

包全名

httpd-2.2.15-15.el6.centos.1.i686.rpm

包名:

httpd

包全名

操作的包是没有安装的软件包时,使用包全名。而且要注意路径

包名

操作已经安装的软件包时,使用包名。因为系统搜索/var/lib/rpm/中的数据库自己去查找。

安装

rpm –ivh 包全名

-i install 安装

-v verbose 显示详细信息

-h hash 显示进度

--nodeps 不检测依赖性,不建议使用,如果有依赖没有安装,就是安装上了,也不能用。

依赖性是rpm安装的最大困难

升级

rpm –Uvh 包全名

-U upgrade 升级

卸载

rpm –e 包名

-e erase 卸载

--nodeps 不检测依赖性

4.2.4.查询

可以查询rpm和yum安装的软件包

查询是否安装

rpm –q 包名

-q query

[root@localhost dev]# rpm -q httpd

package httpd is not installed

[root@localhost dev]# rpm -q net-tools

net-tools-2.0-0.22.20131004git.el7.x86_64

[root@localhost dev]#

查询所有已经安装的包

rpm -qa

-a all

[root@localhost dev]# rpm -qa|grep net-tools

net-tools-2.0-0.22.20131004git.el7.x86_64

查询软件的详细信息

rpm –qi 包名

-i 查询软件信息 infomation

-p 查询未安装包信息 package,后面必须跟包全名

[root@localhost dev]# rpm -qi net-tools

Name        : net-tools

Version     : 2.0

Release     : 0.22.20131004git.el7

Architecture: x86_64

Install Date: Sun 22 Apr 2018 04:57:36 PM CST

Group       : System Environment/Base

Size        : 938986

License     : GPLv2+

Signature   : RSA/SHA256, Fri 11 Aug 2017 02:30:02 AM CST, Key ID 24c6a8a7f4a80eb5

Source RPM  : net-tools-2.0-0.22.20131004git.el7.src.rpm

Build Date  : Thu 03 Aug 2017 05:17:34 PM CST

Build Host  : c1bm.rdu2.centos.org

Relocations : (not relocatable)

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

Vendor      : CentOS

URL         : http://sourceforge.net/projects/net-tools/

Summary     : Basic networking tools

Description :

The net-tools package contains basic networking tools,

including ifconfig, netstat, route, and others.

Most of them are obsolete. For replacement check iproute package.

查询未安装包信息

未安装的包的信息已经写在系统中,可以查询到。

需要包全名

rpm –qip 包全名

查询包中文件安装位置

rpm –ql 包名

-l列表list

-p 查询未安装包信息package

查询系统文件属于哪个RPM包

rpm –qf 系统文件名

-f 查询系统文件属于哪个软件包file

[root@localhost dev]# rpm -qf /usr/share/man/pt/man8/route.8.gz

net-tools-2.0-0.22.20131004git.el7.x86_64

[root@localhost dev]# rpm -qf /etc/yum.conf

yum-3.4.3-154.el7.centos.noarch

查询软件包的依赖性

rpm –qR 包名

-R 查询包的依赖性requires

-p 查询未安装包信息package

[root@localhost dev]# rpm -qR net-tools

/bin/sh

libc.so.6()(64bit)

libc.so.6(GLIBC_2.14)(64bit)

libc.so.6(GLIBC_2.2.5)(64bit)

libc.so.6(GLIBC_2.3)(64bit)

libc.so.6(GLIBC_2.3.4)(64bit)

libc.so.6(GLIBC_2.4)(64bit)

libselinux.so.1()(64bit)

rpmlib(CompressedFileNames) <= 3.0.4-1

rpmlib(FileDigests) <= 4.6.0-1

rpmlib(PayloadFilesHavePrefix) <= 4.0-1

rtld(GNU_HASH)

systemd-units

rpmlib(PayloadIsXz) <= 5.2-1

[root@localhost dev]#

4.2.5.校验和

查询校验和

rpm –V 已安装的包名

-V 校验指定的RPM包中的文件verify

没有任何提示信息,说明该安装包还是原始安装包,没有进行过修改

[root@localhost dev]# rpm -V net-tools

[root@localhost dev]#

修改了yum.conf文件

[root@localhost /]# rpm -V yum

S.5....T.  c /etc/yum.conf

[root@localhost /]#

验证内容中的8个信息的具体内容如下:

S 文件大小是否改变

M文件的类型或文件的权限rwx是否被改变

5 文件MD5校验和是否改变,可以看成文件内容是否改变

D 设备的主从代码是否改变

L 文件路径是否改变

U 文件的属性,所有者 是否改变

G 文件的所属组是否改变

T 文件的修改时间是否改变

文件类型

c 配置文件config file

d 普通文档 documentation

g “鬼”文件,ghost file,很少见,就是该文件不应该被这个RPM包包含

l 授权文件 license

r 描述文件 read me

RPM包中文件提取

主要为了修复文件系统

rpm2cpio 包全名 | \

cpio –idv .文件绝对路径

\代表一条命令没有输完,还要继续换行输入

.表示把文件提取当前目录中

/bin/ls表示要提取的文件

rpm2cpio 

将RPM包转换为cpio格式的命令

cpio

是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件

cpio 选项 <[文件|设备]>

-i copy in模式,还原

-d 还原时自动新建目录

-v 显示文件还原过程

将ls命令提取出来

rpm2cpio /mnt/cdrom/Packages/ coreutils-8.22-18.el7.x86_64 | cpio –idv ./bin/ls

猜你喜欢

转载自wlcacc.iteye.com/blog/2422644