绝大多数开源软件都是直接以源代码形式发布的,通常会被打包为 tar.gz 的归档压缩文件。程序源代码须要编译为二进制可执行文件后才可以运行使用。源代码的基本编译流程为:html
源代码形式的软件使用起来较为麻烦,可是兼容性和可控性较好。而且开源软件通常会大量使用其余开源软件的功能,因此开源软件会有大量的依赖关系(使用某软件须要先安装其余软件)。算法
使用源代码形式安装软件的优势是适用于全部系统、可定制,而缺点则是操做复杂、编译时间较长、极容易出现错误。为了方便使用,Erik Troan 和 Marc Ewing 开发了 RPM(RPM Package Manager,RPM 包管理器),RPM 最先是应用在 RedHat(红帽)中的。安全
RPM 经过将源代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。RPM 的设计目标以下:bash
packagename-1.2.0-30.el6.x86_64.rpmdom
(包名-版本号-操做系统-硬件平台)加密
其中,spa
操做系统:el6 表示 RedHat 6.x 或 CentOS 6.x 操做系统。操作系统
硬件平台:x86_64 表示 64 位平台,i386 表示 32 位平台,noarch 表示不须要特定的硬件平台(跨平台)。设计
安装包:code
安装包:rpm -i packagename.rpm
卸载包:
rpm -e packagename
升级包:
rpm -U packagename-new.rpm
经过 http、ftp 协议安装:
rpm - ivh http://www.domainname.com/packagename.rpm
经常使用参数:
-v 显示详细信息 -h 显示进度条 -i 安装包 -e 卸载包 -U 更新(升级)包 -q 查询 -a 查询全部已安装包 -i 显示包信息 -h 取hash(哈希) -f 查询文件属于哪一个包 -p 未安装包的信息 -l 列出包里的文件
rpm -qa 列出已安装的全部rpm包 rpm -qa | grep '.*gnome.*' 列出全部名称含有gnome的包 rpm -qf filename 查询目标文件属于哪一个包 rpm -qi package 获取一个已安装包的相关信息 rpm -qip package.rpm 获取一个未安装包的相关信息 rpm -ql package 获取一个已安装包内的文件列表 rpm -qlp package.rpm 列出一个未安装包内的文件列表
软件包在传播的过程当中可能会被恶意地修改,因此为了安全起见,现代系统都加入了对软件包的验证功能。
验证通常使用非对称加密算法,因此须要一个公钥。导入公钥的方法是:
rpm --import /path/to/key_file
验证未安装的软件包:
rpm -K package.rpm
验证已安装的软件包:
rpm -V package
参考连接: