1.Linux下的软件包可细分为两种,分别是源码包和二进制包。
- 源码包
- 源码包就是一大堆源代码程序
- 计算机只能识别机器语言,也就是二进制语言,所以源码包的安装需要一名“翻译官”,也就是编译器。
- 编译器的功能就是把源代码翻译为二进制代码,让计算机识别并运行
- 源码包的编译是很费时间的,况且绝多大数用户并不熟悉程序语言,初学者很难解决。
- 二进制包
- 二进制包,也就是源码包经过成功编译之后产生的包。因此用户安装软件的速度较快
- 目前主要有以下 2 大主流的二进制包管理系统:
RPM 包管理系统:很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、CentOS、SuSE 等。
DPKG 包管理系统:主要应用在 Debian 和 Ubuntu 中。
2.RPM包统一命名规则
包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名
- 例如名称是httpd-2.2.15-15.el6.centos.1.i686.rpm的RPM二进制 包
httped:软件包名。这里需要注意,httped 是包名,而 httpd-2.2.15-15.el6.centos.1.i686.rpm 通常称为包全名,包名和包全名是不同的
2.2.15:包的版本号,版本号的格式通常为主版本号.次版本号.修正号。
15:二进制包发布的次数
el*:软件发行商,el6 表示此包是由 Red Hat 公司发布,适合在 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用。
centos:表示此包适用于 CentOS 系统。
i686:表示此包使用的硬件平台:如下
i386 386 以上的计算机都可以安装
i586 686 以上的计算机都可以安装
i686 奔腾 II 以上的计算机都可以安装,目前所有的 CPU 是奔腾 II 以上的,所以这个软件版本居多
x86_64 64 位 CPU 可以安装
noarch 没有硬件限制
rpm:RPM 包的扩展名,表明这是编译好的二进制包,此外,还有以 src.rpm 作为扩展名的 RPM 包,
这表明是源代码包,需要安装生成源码,然后对其编译并生成 rpm 格式的包,最后才能使用 rpm 命令进行安装。
3.rpm 命令进行安装、卸载和升级操作
1.RPM包默认安装路径
- 安装文件会按照类别分散安装到如下
/etc/ 配置文件安装目录
/usr/bin/ 可执行的命令安装目录
/usr/lib/ 程序所使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man/ 帮助文件保存位置
2.安装
- 命令格式为:
[root@localhost ~]# rpm -ivh 包全名
-i:安装(install);
-v:显示更详细的信息(verbose);
-h:打印 #,显示安装进度(hash);
涉及到包全名的命令,一定要注意路径,需提前做好设备的挂载工作。
- 例如,使用此命令安装 apache 软件包,如下所示:
[root@localhost ~]# rpm -ivh \
/mnt/cdrom/Packages/httpd-2.2.15-15.el6.centos.1.i686.rpm
Preparing...
####################
[100%]
1:httpd
####################
[100%]
#注意,直到出现两个 100% 才是真正的安装成功,第一个 100% 仅表示完成了安装准备工作。
#apache 服务安装完成后,可以尝试启动:
[root@localhost ~]# service 服务名 start|stop|restart|status
#服务启动后,可以查看端口号 80 是否出现。命令如下:
[root@localhost ~]# netstat -tlun | grep 80
tcp 0 0 :::80:::* LISTEN
3.升级
[root@localhost ~]# rpm -Uvh 包全名
-U(大写)选项的含义是:如果该软件没安装过则直接安装;若没安装则升级至最新版本。
4.卸载
RPM 软件包的卸载要考虑包之间的依赖性。
例如,我们先安装的 httpd 软件包,后安装 httpd 的功能模块 mod_ssl 包,
那么在卸载时,就必须先卸载 mod_ssl,然后卸载 httpd,否则会报错。
[root@localhost ~]# rpm -e 包名
#-e 选项表示卸载,也就是 erase 的首字母。
4.查询软件包
- -q:查询软件包是否安装
[root@localhost ~]# rpm -q 包名
#-q 表示查询,是 query 的首字母。
- -qa:查询系统中所有安装的软件包
[root@localhost ~]# rpm -qa
libsamplerate-0.1.7-2.1.el6.i686
startup-notification-0.10-2.1.el6.i686
gnome-themes-2.28.1-6.el6.noarch
fontpackages-filesystem-1.41-1.1.el6.noarch
gdm-libs-2.30.4-33.el6_2.i686
gstreamer-0.10.29-1.el6.i686
redhat-lsb-graphics-4.0-3.el6.centos.i686
…省略部分输出…
- -qi:查询软件包的详细信息
[root@localhost ~]# rpm -qi httpd
Name : httpd Relocations:(not relocatable)
#包名
Version : 2.2.15 Vendor:CentOS
#版本和厂商
Release : 15.el6.centos.1 Build Date: 2012年02月14日星期二 06时27分1秒
#发行版本和建立时间
Install Date: 2013年01月07日星期一19时22分43秒
Build Host:
c6b18n2.bsys.dev.centos.org
#安装时间
Group : System Environment/Daemons Source RPM:
httpd-2.2.15-15.el6.centos.1.src.rpm
#组和源RPM包文件名
Size : 2896132 License: ASL 2.0
#软件包大小和许可协议
Signature :RSA/SHA1,2012年02月14日星期二 19时11分00秒,Key ID
0946fca2c105b9de
#数字签名
Packager:CentOS BuildSystem <http://bugs.centos.org>
URL : http://httpd.apache.org/
#厂商网址
Summary : Apache HTTP Server
#软件包概述
Description:
The Apache HTTP Server is a powerful, efficient, and extensible web server.
#描述
- -ql:查询到已安装软件包中包含的所有文件及各自安装路径
[root@localhost ~]# rpm -ql httpd
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
…省略部分输出…
- -qR:查询软件包的依赖关系
例如,查询 apache 软件包的依赖性,可执行以下命令:
[root@localhost ~]# rpm -qR httpd
/bin/bash
/bin/sh
/etc/mime.types
/usr/sbin/useradd
apr-util-ldap
chkconfig
config(httpd) = 2.2.15-15.el6.centos.1
httpd-tods = 2.2.15-15.el6.centos.1
initscripts >= 8.36
…省略部分输出…
5.RPM包验证和数字证书
为了能够及时发现文件误删、误修改文件数据、恶意篡改文件内容等问题,Linux 提供了以下两种监控(检测)方式:
RPM 包校验:其实就是将已安装文件和 /var/lib/rpm/ 目录下的数据库内容进行比较,确定文件内容是否被修改。
RPM 包数字证书校验(数字签名):用来校验 RPM 包本身是否被修改。
- RPM 包校验
[root@localhost ~]# rpm -V 已安装的包名
#-V 选项表示校验指定 RPM 包中的文件,是 verity 的首字母。
[root@localhost ~]# rpm -V httpd
S.5....T. c /etc/httpd/conf/httpd.conf
可以看到,结果显示了文件被修改的信息。该信息可分为以下 3 部分:
最前面的 8 个字符(S.5....T)都属于验证信息,各字符的具体含义如下:
S:文件大小是否改变。
M:文件的类型或文件的权限(rwx)是否改变。
5:文件MD5校验和是否改变(可以看成文件内容是否改变)。
D:设备的主从代码是否改变。
L:文件路径是否改变。
U:文件的属主(所有者)是否改变。
G:文件的属组是否改变。
T:文件的修改时间是否改变。
.:若相关项没发生改变,用 . 表示。
被修改文件类型,大致可分为以下几类:
c:配置文件(configuration file)。
d:普通文档(documentation)。
g:"鬼"文件(ghost file),很少见,就是该文件不应该被这个 RPM 包包含。
l:授权文件(license file)。
r:描述文件(read me)。
被修改文件所在绝对路径(包含文件名)。
由此,S.5....T. c S.5....T. c /etc/httpd/conf/httpd.conf 表达的完整含义是:
配置文件 httpd.conf 的大小、内容、修改时间被人为修改过。
- RPM数字证书验证
RPM 包校验其实就是将现有安装文件与最初使用 RPM 包安装时的初始文件进行对比,
如果有改动则提示给用户,因此这种方式无法验证 RPM 包本身被修改的情况。
数字证书是唯一的,由软件开发商直接发布。
若 RPM 包做了修改,此包携带的数字证书也会改变,软件无法安装。
数字证书默认会放到系统中/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6位置处