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