一、 软件包分类
1、软件包分类
- 源码包
- 二进制包
2、源码包
2.1 源码包什么样
[root@localhost ~]# vim hello.c
#include <stdio.h>
int main (void)
{
printf ("hello world\n");
}
[root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/gcc-4.4.6-4.el6.i686.rpm
[root@localhost ~]# gcc -c hello.c
#-c 生成“.o”头文件。这里会生成 hello.o 头文件,但是不会生成执行文件
[root@localhost ~]# gcc -o hello hello.o
#-o 生成执行文件,并制定执行文件名。这里生成的 hello 就是可执行文件
[root@localhost ~]# ./hello
hello world #执行 hello 文件
2.2 源码包特点
源码包的优点是:
- 开源,如果有足够的能力,可以修改源代码
- 可以自由选择所需的功能
- 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
- 卸载方便
缺点是:
- 安装过程步骤较多,尤其安装较大的软件集合时(如 LAMP 环境搭建),容易出现拼写错误
- 编译过程时间较长,安装比二进制安装时间长
- 因为是编译安装,安装过程中一旦报错新手很难解决
3、二进制包
3.1 二进制包分类
- DPKG 包:是由 Debian Linux 所开发出来的包管理机制,通过 DPKG 包,DebianLinux就可以进行软件包管理。主要应用在 Debian 和 unbuntu 中。
- RPM 包:是由 Red Hat 公司所开发的包管理系统。功能强大,安装、升级、查询和卸载都非常简单和方便。目前很多 Linux 都在使用这种包管理方式,包括 Fedora、CentOS、SuSE 等。我们学习的是 CentOS 6.3,所以我们将要学习 RPM 包管理系统
3.2 特点
RPM 包的优点:
- 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
- 安装速度比源码包安装快的多
RPM 包的缺点:
- 经过编译,不再可以看到源代码
- 功能选择不如源码包灵活
- 依赖性。有时我们会发现需要安装软件包 a 时需要先安装 b 和 c,而安装 b 时需要安装d 和 e。这是需要先安装 d 和 e,再安装 b 和 c,最后才能安装 a 包。比如说,我买了个漂亮的灯具,打算安装到我们家客厅,可是在安装灯具之前我们家客厅总要有顶棚吧,
顶棚总要是做好了防水和刷好油漆了吧,这个装修和安装软件其实类似总要有一定的顺序的。可是有时依赖性会非常繁琐
3.3 RPM包依赖
1)树形依赖 a---->b---->c
2)环形依赖 a---->b---->c---->a
3)函数库依赖
二 rpm安装
1 rpm包命名规则
httpd :软件包名
2.2.15 : 软件版本
15 : 软件发布的次数
el6 : 软件发行商。el6 是 RedHat 公司发布,适合 RHEL6.x(Red Hat Enterprise Linux)和 CentOS6.x 下使用 i686 适合的硬件平台。RPM包可以在不同的硬件平台安装,选择适合不同 CPU 的软件版本,可以 最大化的发挥 CPU 性能,所以出现了所谓的 i386(386以上计算机都可以安装)、i586(586 以上的计算机都可以安装)、i686(奔腾 II 以上计算机都可以安装,目前所有的 CPU 都是奔腾 II 以上,所以这个软件版本居多)、x86_64(64 位 CPU 可以安装)和 noarch(没有硬 件限制)等文件名了。 rpmrpm 包的扩展名。我们说过 Linux 下文件不是靠扩展名区分文件类型,也就是 Linux 中扩展 名没有任何含义。可是这里怎么又出现了扩展名呢?原因很简单,如果我不把 RPM 的扩展名 叫做“.rpm”,管理员很难知道这是一个 RPM包,当然也就无法正确安装了。也就是说如果 RPM 包不用“.rpm”作为扩展名,系统可以正确识别没有问题,可是管理员很难识别这是个 什么样的软件。
包全名:如果操作的是未安装软件包,则使用包全名,而且需要注意绝对路径
包名:如果操作的是已经安装的软件包,则使用包名即可,系统会生产 RPM 包的数据库(/var/lib/rpm/),而且可以在任意路径下操作
2.rpm包手工命令安装
2.1 默认安装位置
RPM 包默认安装路径 | |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
2.2 RPM 包安装
1)安装命令:
rpm –ivh 包全名
#注意一定是包全名。如果跟包全名的命令要注意路径,因为软件包在光盘当中
选项:
-i install 安装(install)
-v 显示更详细的信息(verbose)
-h 打印#显示安装进度(hash)
- –nodeps 不检测依赖性安装。软件时会检测依赖性,确定所需的底层软件是否安装。如果没有安装则会报错。如果我不管依赖性,想强行安装,可以使用这个选项。注意:这样不检测依赖性安装的软件基本是不能使用的,所以不建议这样做
- –replacefiles 替换文件安装。如果安装软件包,可是包中部分文件已经存在,那么正常安装时候,会报错“某个文件已经存在”从而导致软件无法安装,使用这个选项可以忽视这个报错,而覆盖安装
- –replacepkgs 替换软件包安装。如果软件包已经安装,此选项可以把软件包重复安装一遍。
- –force 强制安装。不管是否已经安装,都重新安装。就是—replacefiles 和 —replacepkgs 的综合。
- –test 测试安装。不会实际安装,只是检测一下依赖性。
- –prefix 指定安装路径。为安装软件指定安装路径