我们在linux服务器上安装软件时,安装介质常见为两类:一类为二进制软件包;另一类则为”源码包“。源码包:优点是我们可以看到源代码;安装后效率更高,性能更稳定;卸载时只需删除安装目录即可,更方便。缺点:安装时间长,步骤多,安装时容易报错。二进制包即经过编译的软件包,编译成计算机可以识别的二进制代码,因此我们看不到源代码。在我们实验环境中红帽系列(centos)中的二进制软件包为”rpm“包。按照二进制包的优点是包管理系统简单,通过 几条命令就可以实现软件包的安装、升级、卸载、查询等。缺点是不能灵活的选择功能;软件安装过程中需要解决软件安装的”依赖性“。
针对以上这两种安装包相应的安装及管理方式也是不同的。其中”rpm格式二进制安装包“有两种方式安装,一种是”rpm命令管理“,另一种为”yum在线管理“。下面分别介绍他们的安装管理方式。
rpm包”rpm命令管理“
(1)安装命令语法 rpm -ivh ”二进制软件包全名“
-i (install) 安装
-v(verbose) 显示按照的详细信息
-h(hash) 显示安装进度
--nodeps 不检测依赖性,一般不要使用
1 [root@zabbix packages]# rpm -ivh mysql-server-5.1.73-7.el6.x86_64.rpm
(2)升级命令语法 rpm -Uvh ”二进制软件包全名“
-U(update) 升级
[root@zabbix packages]# rpm -Uvh mysql-server-5.1.73-7.el6.x86_64.rpm
(3)卸载命令语法 rpm -e ”包名“
[root@zabbix packages]# rpm -e mysql-server
(4)查询是否安装软件命令
语法 1:rpm -q 包名
语法2:rpm -qa | grep "关键字"
-q(query)查询
-a (all)所有
[root@zabbix packages]# rpm -q mysql-server
mysql-server-5.1.73-7.el6.x86_64
[root@zabbix packages]# rpm -qa | grep mysql-server
mysql-server-5.1.73-7.el6.x86_64
(5)查询已安装软件包的信息
语法1: rpm -qi "包名" (用于已安装的软件包)
语法2:rpm -qip "二进制软件包名称" (用于未安装之前)
(用于未安装之前)
-l (list) 列表
-i (information) 信息
[root@zabbix packages]# rpm -qi mysql-server
[root@zabbix packages]# rpm -qip mysql-server-5.1.73-7.el6.x86_64.rpm
(6)查询软件包的安装位置
语法1:rpm -ql "包名" (用于已安装的软件包)
语法2:rpm -qlp ”二进制软件包名称“(用于未安装之前)
-l (list) 列表
-p(package)
[root@zabbix packages]# rpm -ql mysql-server
[root@zabbix packages]# rpm -qlp mysql-server-5.1.73-7.el6.x86_64.rpm
(7)查询某个文件属于哪个rpm安装包
语法 rpm -qf "文件名"
-f (file) 文件名
[root@zabbix packages]# rpm -qf /usr/share/mysql/mysql_system_tables_data.sql
mysql-server-5.1.73-7.el6.x86_64
(8)查询软件包的依赖性
语法1 rpm -qR ”包名“
语法1 rpm -qRp ”二进制软件包名称“
-R(requires) 查询软件包的依赖性
-p(package)查询未安装包信息的依赖性
[root@zabbix packages]# rpm -qRp mysql
[root@zabbix packages]# rpm -qRp mysql-5.1.73-7.el6.x86_64.rpm
依赖性解决
树形依赖:a-->b-->c,如果安装软件包a依赖b,安装软件包b依赖c,则我们可以依次安装c、b、a解决依赖问题。
环形依赖:a-->b-->c-->a,我们可以同时安装这三个包来解决依赖问题。
模块依赖:例如".so.2"结尾的模块,他并不是独立的一个软件包,他是软件包中的一个模块,我们可以通过安装包含这个模块的软件来解决依赖性(通过www.rpmfind.net查 询该模块属于哪个软件包)。
通过yum方式安装解决依赖性问题。
(9)rpm软件包的校验
语法:rpm -V "包名"
返回结果:“S M 5 D L U G T ” c/d/g/l/r 文件名 (如果返回结果为空,则说明软件安装后没有进行修改。)
S :文件大小改变
M:文件的类型及权限是否改变
5:文件的MD5校 验值改变
D:
L:文件路径是否改变
U:文件的属主是否改变
G:文件的属组是否改变
T:文件的时间是否改变
c:配置文件
d:普通文件
g:鬼文件,该文件类型不应该被Rpm包包含
l:授权文件(license file)
r:描述文件 (read me)
[root@zabbix packages]# rpm -V mysql
(10)rpm包文件提取
语法:
rpm2cpio “二进制软件包名称” | cpio -idv .文件名
将二进制rpm包转换成cpio格式,并通过cpio命令提取包中的文件,放入当前目录。
注意:rpm包只有在安装升级时,后面所跟参数为二进制软件包全名。在安装完成后的其他操作是在/var/lib/rpm数据库中进行查询,命令后面跟的参数为软件包的包名。
1 [root@zabbix rpm]# ls /var/lib/rpm/
2 Basenames Filedigests Name Providename Requirename Sigmd5
3 Conflictname Group Obsoletename Provideversion Requireversion Triggername
4 Dirnames Installtid Packages Pubkeys Sha1header
rpm包”yum在线管理“
本地光盘做yum源