Linux软件管理之RPM

简介:

1.概述

对于一个软件安装到LINUX后,一般而言,需要注意安装后的一些位置,比如可执行二进制程序,配置文件,帮助文件,库文件都分别存放在哪里,因为这些是应用程序运行所必须的。以前学习过LINUX的FHS结构,知道/etc用于存放配置文件;/lib,/usr/lib,/usr/local/lib用于存放库文件;/usr/share/,/usr/local/share/用于存放帮助文档;/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin用于存放可执行二进制程序。RPM,即redhat package manage,软件包管理器。RPM可以用于制作软件,安装软件,卸载软件,升级软件,校验软件等功能。


2. RPM命名规范

举例如下:

bind-9.7.1-el5-i586.rpm


bind即包名,包分为主包和子包,比如bind(主包) , bind-lib(子包)

9.7.1即版本号

el5即发行版号,明确说明用于REDHAT企业版5   相当于是系统平台

i586即平台架构,i586/i686都是32位平台  x64/x86_64是64位平台   相当于是物理平台


RPM有两种格式:

二进制格式:已经编译成二进制了,直接安装即可,方便简单

源码格式:需要进行编译,有点麻烦。但是可以最大化利用主机的硬件性能



3. 安装RPM

rpm -i  PATH_RPM

    -h  可以显示安装进度,一个#表示2%进度

    -v  显示详细信息

    -vv

    -vvv

    --nodeps  忽略依赖关系,强制安装【可能导致,软件安装后无法使用】

    --replacepkgs 重新安装 覆盖以前版本    

    --force 强制安装【可能覆盖,可能降级】

    --test 并不安装,仅仅测试下


对于安装RPM,其实我们常用的就是:

rpm -ivh PATH_RPM



4. 查询RPM

我们知道,对于WINDOWS,如果安装了应用程序的话,有什么注册表啦,什么菜单,什么控制面板等等可以查找到安装的应用程序。但是LINUX并没有这些概念,那么我们如何查询安装了哪些RPM,安装在哪里?


rpm -q packagename  查询是否安装指定名称的packagename包

rpm -qa   查询所有已经安装的RPM包  后面可以跟上进行通配

rpm -qi   packagename 查询更加详细的信息

rpm -ql   packagename  查询这个RPM到底安装在哪里,定位下安装后的文件列表

rpm -qf   FILEPATH   查询指定路径的文件是由哪个RPM安装的

rpm -qc   packagename  查询指定包名称的配置文件在哪里configfiles

rpm -qd   packagename   文档说明在哪里  docfiles 

rpm -q --scripts packagename 查看安装前(pre) ,安装后(post) ,卸载前,卸载后  所要执行的脚本。



如果一个RPM包并未安装的话,那么我想

查询更加详细的信息  rpm -qpi PATH_RPM

查询这个RPM到底安装在哪里,定位下安装后的文件列表 rpm -qpl PATH_RPM

查询指定包名称的配置文件在哪里configfiles  rpm -qpc PATH_RPM

文档说明在哪里  docfiles   rpm -qpd PATH_RPM

查看安装前(pre) ,安装后(post) ,卸载前,卸载后  所要执行的脚本。 rpm -qp --scripts PATH_RPM

和上面的一样,只不过加入-p选项即可,并且后跟RPM包路径即可。 



注意了,有时候,我们需要使用RPM的包名,有时候我们需要提供RPM的路径。如果RPM已经安装完毕,那么实际上在RPM的数据库(/var/rpm/lib)中已经进行了记录,所以查询直接使用RPM的包名即可。如果未安装,显然需要使用RPM的路径。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@localhost rpm] # rpm -qa a*
attr-2.4.32-1.1
avahi-0.6.16-1.el5
automake14-1.4p6-13
autoconf-2.59-12
automake-1.9.6-2.1
[root@localhost rpm] # rpm -qi apr
Name        : apr                          Relocations: (not relocatable)
Version     : 1.2.7                             Vendor: Red Hat, Inc.
Release     : 11                            Build Date: Wed 17 Jan 2007 08:36:50 AM PST
Install Date: Fri 27 Jun 2014 09:40:03 AM PDT      Build Host: ls20-bc2-14.build.redhat.com
Group       : System Environment /Libraries    Source RPM: apr-1.2.7-11.src.rpm
Size        : 267135                           License: Apache Software License
Signature   : DSA /SHA1 , Wed 17 Jan 2007 12:29:27 PM PST, Key ID 5326810137017186
Packager    : Red Hat, Inc. <http: //bugzilla .redhat.com /bugzilla >
URL         : http: //apr .apache.org/
Summary     : Apache Portable Runtime library
Description :
The mission of the Apache Portable Runtime (APR) is to provide a
free  library of C data structures and routines, forming a system
portability layer to as many operating systems as possible,
including Unices, MS Win32, BeOS and OS /2 .
[root@localhost rpm] # rpm -qf  /usr/lib/libapr-1.so.0
apr-1.2.7-11
[root@localhost rpm]
[root@localhost rpm] # rpm -qc apr
[root@localhost rpm] # man rpm
[root@localhost rpm] # rpm -qd apr
/usr/share/doc/apr-1 .2.7 /CHANGES
/usr/share/doc/apr-1 .2.7 /LICENSE
/usr/share/doc/apr-1 .2.7 /NOTICE



5.升级RPM

rpm -Uvh PATH_NEW_PACKAGE  如果系统上本身装有老版本的,升级,否则安装。

rpm -Fvh PATH_NEW_PACKAGE  如果系统上本身装有老版本的,升级,否则退出。

rpm -Uvh --oldpackage  就是要降级安装【比如我们软件升级后,发现不好使了】

指定新版本的RPM包位置即可。


6.卸载RPM

卸载:

rpm -e PACKAGENAME

注意,如果这个软件包是其他软件包的依赖的话,卸载时会阻止你,当然你可以进行强制卸载--nodeps。


7.校验RPM

由于我们所下载的RPM是来自互联网的,这个文件有没有被改过呢?怎么判断呢?必须有一种机制来进行校验。

rpm -V packagename

也就是在我们完成安装RPM后,即可使用校验机制。

 S file Size differs

 M Mode differs (includes permissions and file type)

 5 MD5 sum differs

 D Device major/minor number mismatch

 L readLink(2) path mismatch

 U User ownership differs

 G Group ownership differs

 T mTime differs

用上述8个位来进行表示变化。



其他说明:

检查来源合法性,及软件完整性:

首先,这个软件包的作者或者公司,会公布一个密钥,就是一个文件

我们应导入它:

rpm --import  xxxfile

然后进行校验

rpm -k package_path



8.关于RPM数据库

rpm --rebuilddb  一定会重新建立

rpm --initdb  初始化数据库,没有则建立。有,不做处理。



本文转自zfz_linux_boy 51CTO博客,原文链接:http://blog.51cto.com/zhangfengzhe/1440478,如需转载请自行联系原作者


相关文章
|
2月前
|
存储 Shell Linux
【Shell 命令集合 系统设置 】Linux 软件包管理工具 rpm命令 使用指南
【Shell 命令集合 系统设置 】Linux 软件包管理工具 rpm命令 使用指南
52 0
|
4月前
|
存储 Linux 程序员
Linux内存管理宏观篇(二):不同角度去看内存(软件)
Linux内存管理宏观篇(二):不同角度去看内存(软件)
54 0
|
9天前
|
Java Linux 开发工具
linux如何编译安装源码包软件
源码包软件是包含源代码的软件包,常见于Linux和BSD系统,如fcitx和Lumaqq。开源软件需满足源代码可见且有宽松许可,如GPL。安装源码包通常涉及解压、编译和安装步骤,使用`tar`命令解包,通过`./configure`, `make`, `make install`进行编译安装。软件源码允许定制和二次开发,但须遵循许可协议。安装前确保安装了必要的开发工具和库。对于perl和python程序,直接使用perl或python命令安装。推荐使用系统软件包管理工具如RPM、yum或apt进行管理,以简化流程。
19 0
|
10天前
|
Linux 数据安全/隐私保护
Linux(12)Debain系统安装远程控制软件
Linux(12)Debain系统安装远程控制软件
16 0
|
5月前
|
Linux
Linux|编译最新版的openssh-server-9.3的rpm包的使用方法(二)
Linux|编译最新版的openssh-server-9.3的rpm包的使用方法(二)
109 0
|
25天前
|
Linux
Linux设备深探:桥接硬件与软件的秘密通道
在Linux的世界里,"设备"这个词汇比你想象的要丰富和多彩得多。让我们一起来探索Linux设备的奥秘,理解它们是如何在Linux操作系统中发挥作用的。🐧✨
Linux设备深探:桥接硬件与软件的秘密通道
|
2月前
|
缓存 Linux Android开发
【Linux】软件包管理器 yum
【Linux】软件包管理器 yum
|
2月前
|
存储 Ubuntu Unix
【Linux】1、操作系统、计算机硬件和软件、Linux 介绍
【Linux】1、操作系统、计算机硬件和软件、Linux 介绍
42 0
|
3月前
|
Linux Windows
【Linux】Linux 软件包管理器 yum
【Linux】Linux 软件包管理器 yum
【Linux】Linux 软件包管理器 yum
|
3月前
|
缓存 Linux Shell
【Linux工具篇】软件包管理器yum
【Linux工具篇】软件包管理器yum
54 1