一、源代码管理

绝大多数开源软件都是直接以源代码形式发布的,一般会被打包为 tar.gz 的归档压缩文件。程序源代码需要编译为二进制可执行文件后才能够运行使用。源代码的基本编译流程为:

  1. ./configure:解压缩后运行该命令,它主要检查编译环境、相关库文件以及配置参数并生成 makefile
  2. make:对源代码进行编译,生成可执行文件
  3. make install:将生成的可执行文件安装到计算机中

源代码形式的软件使用起来较为麻烦,但是兼容性和可控性较好。并且开源软件一般会大量使用其他开源软件的功能,所以开源软件会有大量的依赖关系(使用某软件需要先安装其他软件)。

二、RPM(RPM Package Manager,RPM包管理器)

使用源代码形式安装软件的优点是适用于所有系统、可定制,而缺点则是操作复杂、编译时间较长、极容易出现错误。为了方便使用,Erik Troan 和 Marc Ewing 开发了 RPM(RPM Package Manager,RPM 包管理器),RPM 最早是应用在 RedHat(红帽)中的。

1.设计目标

RPM 通过将源代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。RPM 的设计目标如下:

  • 使用简单
  • 使用单一软件包格式文件发布(.rpm 文件)
  • 可升级
  • 追踪软件依赖关系
  • 基本信息查询
  • 软件验证功能
  • 支持多平台

2.命名规范

packagename-1.2.0-30.el6.x86_64.rpm

(包名-版本号-操作系统-硬件平台)

其中,

操作系统:el6 表示 RedHat 6.x 或 CentOS 6.x 操作系统。

硬件平台:x86_64 表示 64 位平台,i386 表示 32 位平台,noarch 表示不需要特定的硬件平台(跨平台)。

3.基本命令

安装包:

安装包: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查询

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验证

软件包在传播的过程中可能会被恶意地修改,所以为了安全起见,现代系统都加入了对软件包的验证功能。

验证一般使用非对称加密算法,所以需要一个公钥。导入公钥的方法是:

rpm --import /path/to/key_file

验证未安装的软件包:

rpm -K package.rpm

验证已安装的软件包:

rpm -V package

  

 

参考链接:

Linux中RPM包命名规则

YUM 公钥认证及导入

最新文章

  1. nth-of-type在选择class的时候需要注意的一个小问题
  2. 使用nuget打包类库并发布
  3. linux内核分析作业:操作系统是如何工作的进行:完成一个简单的时间片轮转多道程序内核代码
  4. iOS - 定制多样式二维码
  5. __attribute__ 变量对齐
  6. 论那些年我们讨论过的Bank系统!
  7. NoSQL聚合数据模型
  8. jdbc连接池中c3p0的配置文件的详解以及在在java中如何使用
  9. Apache Shiro入门实例
  10. css helper class
  11. Android常见开源解决方案
  12. bindingredirect 没有效果
  13. 怎么将Emeditor设置成网页查看源代码的默认编译器
  14. css块级元素居中
  15. 【一天一道LeetCode】#53. Maximum Subarray
  16. 如何重置Sitecore CMS中的管理员密码
  17. random(随机模块)
  18. 详解 HTML5 中的 WebSocket 及实例代码-做弹幕
  19. Groovy 读取json文件,并用gson反序列化为List集合
  20. Latex中为作者添加多个单位属性(IEEE模板)

热门文章

  1. IE8 兼容CSS3 使用 PIE.htc
  2. 【.Net】C#文本文件(.txt)读写
  3. BZOJ4767 两双手(组合数学+容斥原理)
  4. 进程间通讯-3(Manager)-实现数据的同时修改
  5. Oracle 物化视图创建以及常见问题
  6. [CF1083B]The Fair Nut and Strings
  7. POJ3678:Katu Puzzle——题解
  8. BZOJ1058:[ZJOI2007]报表统计——题解
  9. BZOJ2038:[2009国家集训队]小Z的袜子——题解
  10. bzoj1211: [HNOI2004]树的计数(purfer编码)