版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014565127/article/details/88751835
源代码
- 绝大多数开源软件都是直接以源代码形式发布
- 源代码一般会被打包成tar.gz的归档压缩文件
- 程序源代码需要编译成为二进制形式之后才能够运行使用
- 源代码基本编译流程:
- ./configure 检查编译环境、相关库文件以及配置参数并生成makefile
- make对源代码进行编译,生成可执行文件
- make install 将生成的可执行文件安装到当前计算机中
- 源代码形式的软件使用起来较为麻烦,但是兼容性及可控制性较好
- 开源软件一般都会大量使用其他开源软件的功能,所以开源软件会有大量的依赖关系(使用某软件需要先安装其他软件)
(这里只是暂时做了解,具体的使用暂时不介绍)
RPM
- 源代码形式的缺点:操作复杂、编译时间较长、极容易出现错误
- 源代码形式的优点:适用所有系统、可定制。
- 为了方便使用,Erik Troan和Marc Ewing开发了RPM(Redhat package manager)
- RPM通过将源代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理
- RPM设计目标如下:
- 使用简单
- 使用单一软件包格式文件发布(.rpm文件)
- 可升级
- 追踪软件依赖关系
- 基本信息查询
- 软件验证功能
- 支持多平台
命名规范
RPM软件包常用命令规范:
RPM依赖关系
树形依赖:
A→B→D
B→E
A→C→F
环形依赖:
A→B→C→A
模块依赖:
模块依赖查询网站 www.rpmfind.net
RPM基础命令
安装软件必须在root用户下。
- 安装软件:
rpm -i software.rpm
- 卸载软件:
rpm -e software
(后面只跟程序名字!) - 升级形式安装:
rpm -U software.rpm
- rpm支持通过http、ftp协议安装软件:
rpm -ivh http://www.test.net/software.rpm
可以加入以下参数:
-v
:verbose显示详细信息-h
:hash显示进度条
RPM查询
RPM会保存软件相关的很多信息,可以通过以下命令查询:
rpm -qa
:列出所有安装的rpm软件rpm -qf filename
:查询目标文件属于哪个rpm包rpm -qi packagename
:查询指定已安装rpm软件的信息rpm -ql packagename
:查询指定已安装rpm软件包含的文件rpm -qip softname.rpm
:查询rpm文件的信息rpm -qlp software.rpm
:查询rpm文件包含的文件
RPM验证
- 软件在传播过程中可能会被恶意的修改,所以为了安全起见现代系统都加入了对软件的验证功能
- 验证已安装的软件:
rpm -V 已经安装的包名
验证内容中的8个信息的具体内容如下:
验证结果的文件类型:
- 验证一般使用非对称加密算法,所以需要一个秘钥
- 导入秘钥:
rpm --import RPM-GPG-KEY-CentOS-6
- 验证rpm文件:
rpm -K software.rpm
RPM包中文件提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径
分析一下:
rpm2cpio
:将rpm包转换为cpio格式的命令cpio
:是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
cpio的格式:cpio 选项 <[文件|设备]
选项:
-i
:copy-in模式,还原
-d
:还原时自动新建目录
-v
:显示还原过程
我们在丢失了一些系统文件的时候,不需要把整个系统都重新安装,只需要把相应缺失的文件提取出来,还原至应在的目录即可。
That’s all.
环境:
软件版本:VMware® Workstation 14 Pro
Linux系统版本:CentOS 7 ×86_64 1511
如有纰漏,望不吝指出,不胜感激。