linux学习之路之软件包的管理(RPM)

目前linux界管理软件有2种方式,一是使用dpt来管理,二是使用RPM来管理

dpt使用Debian linxu社区开发的,目前使用dpt来管理的发行商包括:B2D,Ubuntu等。

而RPM是有Red Hat公司开发出来的,目前使用RPM来管理软件的发行商包括:Fedora、CentOS、SuSE等。

由于当前最主流的软件包管理大多使用RPM来管理的,因此在这里我们只介绍如何使用RPM来管理软件包

什么是RPM呢?

RPM:全名是RedHat Package Manager,简称RPM,他是以一种数据库记录的方式将你所需要的软件安装到你的linux系统上的一套管理机制。也就是安装某个软件时,该软件的信息全部写入到了RPM数据库中,以后关于该软件包的升级、卸载、以及校验等操作都是根据RPM数据库中的数据来进行的。

RPM软件包的命名规则:

name-version-release.arch.rpm

软件名称-版本号-发行次数.操作平台.rpm

其中版本号分为主版本号和次版本号

主版本号:当软件包的重大功能发生改进时,才用于修正主版本号

次版本号:某个子功能发生改变时,才会改变,才用于修正次版本号

发行次数就是编译的次数

操作平台主要由以下几种:

i386:适用于所有的x86平台

i586:针对586等级的计算机进行优化编译的

x86_64:针对64位的CPU进行优化编译的

noarch:表示没有任何硬件等级上的限制

软件包管理器的核心功能是:

1、制作软件包。

我们知道RPM包是经过原始码编译而来的,所以RPM包是可以直接用来安装的,但是不同的发行商的RPM包是不用相互通用的,有的连相同发行商不同版本的RPM包也不可以使用。原因是编译这些RPM包的编译环境不一样所导致的。这些编译环境包括硬件平台、库文件等等。

换句话说,只有编译环境和安装RPM的环境一致时,该软件包才可以使用。而软件包管理器就可以用来编译原始码,使其在特定的平台上使用。

2、软件包管理器可以来安装、查询、升级、卸载、校验软件包中文件的正确性、重建数据库等操作。

在这里我们先介绍如何使用RPM来安装软件的。

在linux系统中,许多软件在安装过程中,存在依赖关系,这里所谓的依赖关系就是说在安装A软件时,必须先安装B软件,才能在安装A软件。这就是软件的相依属性。

一、RPM包安装

语法格式:rpm [option] package_file(这个是软件的文件名,全称)

-i:install的意思

-v:显示安装过程中的详细信息

-vv:显示更加详细的信息

-h:以#号来显示安装进度,其中每个#表示2%的进度

其中ivh通常一起使用

--nodeps:在安装过程中,忽略依赖关系,这可能会导致安装的软件无法使用

--replacepkgs:重新安装,替换原有的安装

--replacefiles:在安装过程中,如果某个安装文件已经存在,可以使用此选项覆盖。

--force:强行安装,可以实现重新安装或者降级安装

二、RPM包查询

之前说过RPM包在安装的时候会生成一个数据库文件,这个文件是/var/lib/rpm/目录,RPM查询就是在这个目录下查找数据库文件的。

语法格式:rpm [option] [package_name]

-q:查询指定的包是否已经安装

-qa:查询已经安装的所有包,后面不接包名

-qi:查询指定包的说明信息

-qc:查询指定包的配置文件

-qd:查询指定包的帮助文件(与man相关)

-ql:查询指定包安装后生成的文件列表

-q --scripts:查询指定包中所包含的脚本

-qf /path/to/somefile:查询指定的文件是由那个rpm包安装生成的。

如果某个软件包未安装,想要查询其相关信息,可以使用-qp来查询

语法格式:rpm -qp[ilcfd] package_name(未安装的软件包名)

其中-iclfd意思和上面一样

三、RPM包升级

rpm -Uvh package_file :如果该软件包已安装,则升级;没有安装,则进行安装

rpm -Fvh package_file:如果该软件以安装,则升级;没有安装,则退出

其中选项--oldpackage用于降级安装

四、RPM包卸载

rpm -e package_name:卸载某个软件包

--nodeps:在卸载过程中忽略依赖关系。

在卸载过程中,最好从上层一次往下卸载,避免系统混乱。

五、校验RPM安装生成的文件

校验RPM中的文件可以用来检测某个文件是否被修改过,以及该文件是否被误删了等信息。它是通过对比/var/lib/rpm/下的数据库内容和当前系统上面的所有文件等机制来检测的。

语法格式:

rpm [option] [package_name]

-V :检测指定的软件包中的文件是否被修改过,只有被更动过的文件才会显示出来

-Va:列出系统上所有被更动的文件

-Vf:检测某个文件是否被更动过

其中这上面的每一个点代表的是SM5DLUGT,只有改变的才会显示出来

S:文件的大小发生改变

M:文件的类型或者权限发生改变

5:MD5随机码不同

D:装置的主/次代号发生改变

L:Link路径发生改变

U:文件的属主发生改变

G:文件的属组发生改变

T:文件的修改时间发生改变

其中后面的字符表示文件类型

c:表示配置文件

d:数据文件

g:该文件不被某个软件所包含

l:许可证文件(license file)

r:自述文件(read me)

六、创建数据库

如果某个用户别不小心损毁了/var/lib/rpm/目录下的文件,那么可以使用rpm来重建数据库

语法格式:

rpm --rebuilddb:不管RPM数据库是否存在,使用该选项一定会重新创建数据库

rpm --initdb:初始化数据库,也就是说如果数据库不存在则创建数据库;存在则不用创建。

时间: 2024-10-03 22:55:35

linux学习之路之软件包的管理(RPM)的相关文章

linux学习之路之磁盘管理和文件系统三

ext3文件系统和ext2文件系统的区别? 在某些时候,某个用户在linux系统上写入数据,这时系统正好断电或者系统核心出现错误,写入的数据仅有inode table和datablock而已,可能会导致之前写过的数据没有保存在磁盘上.而当系统重启后,系统可能会对没有保存的数据进行数据恢复.但是,由于系统并不知道是哪个文件不完整,因此会遍历整个文件系统中inode,来查看block是否完整.不过,当某个文件的数据太大时,数据的恢复时间可能会比较长,而这对于服务器来说是不利的.所以在这种情况下,也就

linux学习之路之目录管理和文件管理

我们知道linux文件系统是一个树型结构,在最上层是'/'目录,根目录的下面就是其他目录,而这些目录下面又可以有多个子目录,这样一层一层的就形成一个树型结构图.那是不是我们查找某一个文件必须要从根目录开始往下查找的呢?当然不是,在这里我将会介绍两种路径方式:相对路径和绝对路径. 什么是相对路径和绝对路径? 绝对路径:就是从'/'根目录开始往下一级一级的查找,直到目的所经过的线路. 相对路径:就是相对当前位置而言来找到目的地所经过的线路. 目录的创建 mkdir:用于创建目录 语法格式:mkdir

linux学习之路之磁盘管理和文件系统二

从前面的学习中,我们知道磁盘可以划分多个分区,每一个分区可以经过高级格式化以后,就形成了一个文件系统.那么在Linux系统中该如何创建分区呢? 使用fdisk命令可以来创建分区 语法格式为:fdisk [-l] 设备文件名(不能加数字) -l:显示指定硬盘上所有的分区内容.后面不加设备,则显示系统上所有的设备的所有分区内容. 不加任何选项时,可以用来创建分区. 使用fdisk 设备文件名(不能加数字) 其中这些子命令表示如下意思: p:显示当前硬盘上面的所有分区,包括没有保存的. n:表示创建新

linux学习之路之模块管理和内核编译

我们知道linux内核再启动过程中,主要完成以下几种功能: 1.侦测硬件信息 2.驱动初始化(可能借助intrd文件加载硬件模块) 3.以只读方式挂载根文件系统 4.转载第一支程序init 如果我们的kernel识别不了某些硬件或者实现不了某些功能的话,那么只能将某些功能代码添加在内核当中,或者将这些功能代码做成模块的形式,kernel需要哪些模块就直接调用这些模块即可.通过这两种功能就可以实现相应的功能. 而不同的实现机制和kernel设计有关. kernel设计分为2种: 一种是单内核:这种

Linux学习笔记十:软件包管理

在Linux的众多版本中,可以大致分成两个系列,分别是:RedHat系Linux,Debian系Linux.在这两种不同系的Linux中,软件包的管理也是有着一定的区别,但他们的原理都大致相同.这篇笔记将以RedHat系Linux为重点讲解其软件包的管理,并简单介绍Debian系Linux软件包的管理.其大致的结构如下: · RedHat系Linux软件包管理 - 1. 二进制包管理(基于rpm) - 2. 二进制包管理(基于yum) - 3. 源代码包管理 - 4. 脚本安装 · Debian

linux学习之路之bash及其特性

我们知道当我们用鼠标点击,或输入一个命令,系统就玩帮我们完成一个任务,那么当我们点击一个链接时,系统由是如何知道要去完成相应的操作呢?这是因为通过shell来完成的. 那么什么是shell呢? shell就是用户和操作系统之间的一个接口,通过这个接口shell接受来自用户的命令,并调用相应的应用程序来呼叫kernel来处理相应的工作. 在linux系统上面存放着多种类型的shell,这些shell存放在/etc/shells文件里,默认RedHat使用的shell为bash 下面介绍一些bash

linux学习之路之ssh协议

SSH协议 SSH英文全称Secure SShell,是一种安全的协议,也是用于远程登入的. SSH相比telenet而言,具有更高的安全性,使用telent远处登入某台主机,存在着以下两个隐患: 1.用户认证是明文的 2.数据传输也是明文的 因此,处于数据安全考虑,使用SSH来远处登入更安全. SSH有2个版本,SSHv1和SSHv2,SSH1由于无法抵挡中间人攻击,因此,现在很少使用SSHv1版了.所以使用更多的还是SSHv2版,毕竟它要安全多了. SSH是工作在TCP层,端口号是22:te

linux学习之路之加密类型及其相关算法

加密类型及其相关算法 随着互联网越演越烈,互联网上的各种攻击层出不穷,因此在互联网上相互传递的信息越来越不安全,因此为了防止用户在互联网上传递的数据被窃取,因此我们很有必须加强传递的数据的安全性. 数据的安全性主要包括以下三个方面: 数据的机密性:保证传递的数据不被读取 要想使传递的数据不被读取,可以对这些数据进行加密,因为默认这些数据是以明文来传递的 整个加密过程可以这么来理解: 加密:plaintext--->转换规则--->ciphertext 解密:ciphertext--->转

linux学习之路之日志系统

日志系统 日志系统是用来存放系统在执行任务过程中产生的讯息或者是执行时产生的错误日志信息都存放在日志系统里.由于Linux系统上面会同时开启多个服务或者子系统,因此为了便于查看或者管理它们产生的日志信息,我们一般将不同的子系统或者服务产生的日志信息根据级别不同放在不同的配置文件中或者主机中. 在RHEL 5上,使用的日志系统是syslog 而在RHEL 6上,使用的日志系统是syslog-ng这是一款开源系统 要想使用syslog日志系统,必须要确保syslog服务一直在运行.而syslog服务