软件包分类:
- 源码包:脚本安装包(源C代码)
- 二进制包(rpm包,系统默认包)
源码包
1.源码包优点
- 开源,如果有足够的能力,完全可以修改源代码
- 可以自己选择所需要安装的功能
- 软件是编译安装,所以更加适合自己的系统,更加稳定,效率也更高
- 卸载方便
2.源码包缺点
- 安装步骤比较多,尤其安装比较大的软件时,很容易出错(特别是拼写错误)
- 编译时间过长
- 编译安装,出错的话,新手很难解决
rpm包
1.rpm包优点
- 包安装管理系统简单,通过几个命令就可以实现包的安装,升级,查询,卸载
- 安装速度比安装源码包快得多
2.rpm包缺点
- 通过编译,不能再看点源代码
- 功能选择性不如源代码包灵活
- 依赖性
rpm包命名规则:
httpd-2.2.15-15.e16.entos.1.i686.rpm | |
httpd | 软件包名 |
2.2.15 | 软件版本 |
15 | 软件发布次数 |
e16.centos | 适合的Linux平台 |
i686 | 适合的硬件扩展平台 |
rpm | rpm包扩展名 |
所有的包都是在ios/pakages中
rpm依赖性
- 树形依赖:
- 环形依赖:a->b->c->a,解决办法,用一个安装命令同时将a,b,c同时安装即可
- 模块依赖:模块依赖查询网站:www.rpmfind.net
软件包库依赖:只要是有“.so.数字”结尾的包都是库依赖包,这种库依赖包是某个软件包中的一部分。在www.rpmfind.net中寻找依赖的软件包。
rpm包安装:先将ios镜像导入CD/DVD中,同时在linux中用:mount /dev/sr0 挂载ios镜像,然后进入到pakages文件夹中。
rpm -ivh 包全名:选项:-i (install) 安装 -v (verbose) 显示详细信息
-h (hash) 显示进度 --nodeps 不检测依赖性(不用)
rpm -Uvh 包全名: -U(upgrade)升级包
rpm -e 包名: -e (erase) 卸载 ;包卸载;卸载命令会将依赖包都卸载了,可能会影响其让rpm的使用,所有一般不会卸载。
以上用yum命令比较方便,但是yum基本没有查询方法。一般都是用rpm查询。
rpm查询:
1.rpm -q 包名: -q (query) :查询是否按照包
2.rpm -qa:-a (all) 查询所有已安装的rpm包。
3.rpm -qi 包名(查询包信息):-i (information) 查询软件包信息 -p (package) 查询未安装包信息。这些信息都是组建这个包时候就有的。
4.rpm -ql 包名(查询包中文件安装的位置): -l (list) 列表 -p (package) 查询未安装包信息。
5.rpm -qf 系统文件名(查询系统文件属于哪个rpm包): -f (file)查询系统文件属于哪个软件包。
6.rpm -qR 包名(查询软件包的依赖性,需在package目录下):
- -R (require)查询软件包的依赖性;
- -p (package)查询未安装包的的依赖性
7.rpm -V (rpm包校验,检验rpm包是否有修改):-V (Verified)
验证内容中的八个数字字符信息具体内容如下:
S | 文件大小是否改变 |
M | 文件的类型或文件的权限(rwx)是否改变 |
5 | 文件内容是否改变 |
D | 设备中的从代码是否改变 |
L | 文件路径是否改变 |
U | 文件所有者是否改变 |
G | 文件所属组是否改变 |
T | 文件修改时间是否改变 |
8.rpm2cpio 包全名 | cpio -idv .文件绝对路径。(rpm包文件提取,将rpm包转换为cpio格式的命令) 从包中提取指定的文件 代表换行 .代表将指定文件提取到当前目录中
用来修复被误删除的包。例如:
rpm -qf /bin/ls #查询s命令属于哪个软件包 mv /bin/ls /tmp #造成ls命令误删除假象 rpm2cpio /mnt/cdrom/Packages/coreutils-.............rpm | cpio -idv ./bin/ls #提取rpm包中ls命令到当前目录的/bin/ls下 cp /root/bin/ls /bin/ #把ls命令复制到bin目录,修复文件丢失
cpio:是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件。
cpio 选项 < [文件|设备]: -i copy-in模式,还原 -d 还原是自动创建目录 -v 显示还原过程。
rpm包全名和包名:
- 操作的包是没有安装的软件包时,使用包全名,而且要注意路径。
- 操作的是已经安装的软件包时,使用包名,是搜索/var/lib/rpm/中的数据库。