介绍
Linux软件包的介绍,分为源码包和二进制包,优缺点如下:
类型 | 优点 | 缺点 |
源码包 | 开源,能看到源码 可以按照需求选择功能 编译安装更适合自己的环境 卸载方便,删除安装文件即可 | 安装过程复杂,特别是大型软件 安装时间长(取决于机器性能,但总体时间比二进制时间长) 安装难度高,对新手不友好,如果有编译报错,难以解决 |
二进制包 | 管理简单,安装、升级等操作命令较少 安装速度快 | 依赖性差 看不到源码 安装功能选择不够灵活 |
在Redhat下,制作的二进制包叫做rpm包,Ubuntu下,安装包是deb包。
rpm依赖
有三种依赖:
1、树形依赖
2、环形依赖,解决办法可以是把几个安装放在一个命令中
3、模块依赖,可以查询www.rpmfind.net网站确定依赖所在的rpm
命令介绍
在安装过程中要使用安装包的全部名称,并且使用绝对路径或者进入该路径进行安装
rpm安装
rpm -ivh 包名称
-i (install)表示安装
-v (verbose)表示显示详细信息
-h (hash)表示显示进度
- --nodeps 不检测依赖性(实际中不会用到,依赖性问题是必须解决的问题)
rpm包一般都有相同名字开头的多个包,例如httpd:
httpd-2.2.15是他的主包
devel表示库包
manual表示文档
tools表示工具
rpm升级
rpm -Uvh 包名称
-U(upgrade)表示升级
在系统中没有安装的包使用升级命令相当于是安装
rpm卸载
rpm -e 包名称
-e (erase)表示卸载
- --nodeps 不检测依赖性(实际中不会用到,依赖性问题是必须解决的问题)
rpm是没有指定安装位置的,会装在系统默认的位置
rpm查询
- rpm -q 包名称
-q (query)表示查询是否安装了此包
- rpm -qa 包名称
-qa (query all)表示查询所有安装包
但是系统中的包很多,一般建议加上 |grep 进行过滤
例如 rpm -qa |grep llvm
- rpm -qi 包名称
-i (information)表示查询安装包的信息(此信息安装前后都可以查,是开发者记录的信息)
-p (pakeage)表示查询未安装的包要加的参数
- rpm -ql 包名称
-l (list)表示列表清单
-p(pakeage)表示查询未安装的包时要加的参数
默认安装路径 | |
/etc/ | 配置文件目录 |
/usr/bin/ | 可执行命令的安装目录 |
/usr/lib/ | 程序使用函数库保存的位置 |
/usr/share/doc/ | 软件手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
- rpm -qf 系统文件名
-f (file)表示查询系统文件属于哪个软件包
只有通过rpm的安装出的包才能反向追踪,不能是手动建立的
- rpm -qr 包名称
-r(requires)表示查询软件包的依赖性
-p(pakeage)表示查询未安装的包时要加的参数
这个依赖查询的用处不大,因为查询出来的包的依赖性会包含全部的依赖,不如直接安装报错,来的更快。
rpm校验
- rpm -V 包名称
-V(verify)表示校验安装包的文件
动作表示校验安装后的文件是否被修改,没有提示表示没有被修改.
修改内容提示信息含义如下:
S | 表示文件大小改变 |
M | 表示文件类型或者权限改变 |
5 | 表示MD5校验和改变(内容是否变化,验证文件完整性) |
D | 表示主从代码改变 |
L | 表示文件路径改变 |
U | 表示文件属主改变 |
G | 表示文件属组改变 |
T | 表示文件的修改时间改变 |
文件类型信息如下:
c(config file) | 配置文件 |
d(documentation) | 普通文档 |
G(ghost file) | 不应该出现的文件,有可能是系统被攻击 |
L (license file) | 授权文件 |
r(read file) | 描述文件 |
rpm2cpio 从rpm包里面提取文件
这个命令可以应对重要文件的丢失,但是使用的时候注意文件位置。
- rpm -V 包名称 |cpio -idv .文件绝对路径
- rpm2cpio 表示将rpm转换为cpio的格式的命令
-cpio 工具,用于创建档案文件和从档案文件中提取文件
- cpio -idv < 文件或者设备
-i (copy -in 模式)还原
-d 还原时自动新建目录
-v 显示还原过程