RPM命令管理

RPM命令管理

**3.1 RPM包的来源

所有RPM包都在系统光盘的Packages目录中

#mount  CentOS-7-x86_64-Minimal-2003.iso  /mnt/

#ls  /mnt/Packages/

3.2 RPM包命名规则

软件包名-软件版本-软件发布的次数-适合的Linux平台-适合的硬件平台-包扩展名

httpd-2.2.15-15.el6.centsos.1.i686.rpm

httpd软件包名-2.2.15软件版本-15发布的次数-el6.centos适合的Linux平台-i686适应的硬件平台-rpm包扩展名,el6是redhat的企业版

3.3 RPM包依赖性

a. 树形依赖:a->b->c 解决方法:从后往前安装
b. 环形依赖:a->b->c->a 解决方法:放在一条命令中安装即可
c. 模块依赖:库文件依赖,库也叫模块,就是linux当中的函数,它有一个典型的特征,就 是以【.so.数字】结尾,它依赖的其实是一个文件,而不是软件包。该文件藏身在某一个软件包当中。我们只要将该文件所在的软件包安装上,该文件也就安装了。解决方法:登录www.rpmfind.net网站,输入库文件名称查询到对应的rpm包,然后安装即可。

yum在线安装可以方便的解决依赖文件,一条命令就可以帮用户从网上(本地也可以)找到安装包进行安装。

**注:RedHat的yum是收费服务,而CentOS的yum是免费服务。

3.4 RPM安装

rpm -ivh 包全名

-i(install) 安装; -v(verbose) 详细信息; -h(hash) 进度;

http://rpmfind.net/linux/centos/7.8.2003/os/x86_64/Packages/httpd-2.4.6-93.el7.centos.x86_64.rpm

通常情况下,RPM 包采用系统默认的安装路径,所有安装文件会按照类别分散安装到表 1 所示的目录中。

表 1 RPM 包默认安装路径
安装路径含 义
/etc/配置文件安装目录
/usr/bin/可执行的命令安装目录
/usr/lib/程序所使用的函数库保存位置
/usr/share/doc/基本的软件使用手册保存位置
/usr/share/man/帮助文件保存位置

RPM 包的默认安装路径是可以通过命令查询的。

与 RPM 包不同,源码包的安装通常采用手动指定安装路径(习惯安装到 /usr/local/ 中)的方式。既然安装路径不同,同一 apache 程序的源码包和 RPM 包就可以安装到一台 Linux 服务器上(但同一时间只能开启一个,因为它们需要占用同一个 80 端口)。

实际情况中,一台服务器几乎不会同时包含两个 apache 程序,管理员不好管理,还会占用过多的服务器磁盘空间。

RPM 包的安装

安装 RPM 的命令格式为:

[root@localhost ~]# rpm -ivh 包全名

注意一定是包全名。涉及到包全名的命令,一定要注意路径,可能软件包在光盘中,因此需提前做好设备的挂载工作。

此命令中各选项参数的含义为:

·    -i:安装(install);
·    -v:显示更详细的信息(verbose);
·    -h:打印 #,显示安装进度(hash);

例如,使用此命令安装 apache 软件包,如下所示:

[root@localhost ~]# rpm -ivh \
 /mnt/cdrom/Packages/httpd-2.2.15-15.el6.centos.1.i686.rpm
 Preparing...
 ####################
 [100%]
 1:httpd
 ####################
 [100%]

注意,直到出现两个 100% 才是真正的安装成功,第一个 100% 仅表示完成了安装准备工作。

此命令还可以一次性安装多个软件包,仅需将包全名用空格分开即可,如下所示:

[root@localhost ~]# rpm -ivh a.rpm b.rpm c.rpm

如果还有其他安装要求(比如强制安装某软件而不管它是否有依赖性),可以通过以下选项进行调整:

·-nodeps:不检测依赖性安装。软件安装时会检测依赖性,确定所需的底层软件是否安装,如果没有安装则会报错。如果不管依赖性,想强制安装,则可以使用这个选项。注意,这样不检测依赖性安装的软件基本上是不能使用的,所以不建议这样做。
·-replacefiles:替换文件安装。如果要安装软件包,但是包中的部分文件已经存在,那么在正常安装时会报"某个文件已经存在"的错误,从而导致软件无法安装。使用这个选项可以忽略这个报错而覆盖安装。
·-replacepkgs:替换软件包安装。如果软件包已经安装,那么此选项可以把软件包重复安装一遍。
·-force:强制安装。不管是否已经安装,都重新安装。
也就是 
-replacefiles 和 -replacepkgs 的综合。
·-test:测试安装。不会实际安装,只是检测一下依赖性。
·-prefix:指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。

3.5 RPM升级和卸载

升级命令

rpm -Uvh **包全名**(要升级到的软件版本),如果没有安装这个软件的任何版本,这个命令可以代替rpm -ivh。

卸载命令

rpm -e 包名(比如Httpd,不需要包全名)

这个命令不同于安装和升级,它可以在任何目录运行,原理是去/var/lib/rpm目录中的数据库(如__db0)中查找对应的软件包(已经安装过的rpm包都在这些数据库中),然后卸载。
–nodeps这个选项不管是在安装和卸载的时候,最好都不要使用。

rpm安装包安装的位置是由软件包开发者决定的,安装后的位置会非常凌乱,所以最好是使用rpm -e命令卸载。

相对于二进制安装,源码安装是指定安装目录了,卸载的时候只需要删除对应的目录就可以完全的卸载,不留一点残余。

3.6 RPM包查询

1.查询是否安装

rpm -q 包名

rpm -qa 
# q ==> query a ==> all

查询所有已经安装的RPM包

 rpm -qa | grep httpd 

grep 后跟正则表达式, find 后跟通配符

2. 查询软件包详细信息

rpm -qi 包名

rpm -qip 包全名

# i ==> infomation
# p ==> package : 查询**`未安装包`**信息

有时遇到问题, 可根据未安装包信息中所提供的网站进行查询资料

3. 查询包中文件安装位置

rpm -ql 包名

# l ==> list
# -p ==> package : 查询未安装包信息

可查看包作者欲将包安装的位置

RPM 包默认安装位置

4. 查询系统文件属于哪个 RPM 包

rpm -qf 系统文件名

# f ==> file : 查询系统文件属于哪个软件包

该文件必须是通过 RPM 包安装的

5. 查询软件包的依赖性

rpm -qR 包名

R ==> requires : 查询软件包的依赖性 
p ==> package : 查询未安装包的信息

3.7 RPM 包校验

 rpm -V 已安装的包名

-V ==> (verify) : 校验指定RPM包中的文件

执行 rpm -V httpd 后, 无任何提示, 代表该文件没有被做任何修改

  判断本地的apache 与官方给出的是否一致, 从而判断是否被人修改。
  修改文件 /etc/httpd/conf/httpd.conf , 在注释行添加任意内容后, 再次执行

提示 : S.5…T. c /etc/httpd/conf/httpd.conf

验证内容中的8个信息:

S: 文件大小是否改变

M: 文件的类型或文件的权限( rwx )是否被改变

5: 文件MD5 校验和是否改变( 可以看成文件内容是否改变 )

D: 设备的主从代码是否改变

L: 文件路径是否改变

U: 文件的属主( 所有者 ) 是否改变

G: 文件的属组是否改变

T: 文件的修改时间是否改变

验证内容中的文件类型:

c(config file) : 配置文件

d(documentation) : 普通文档

g(ghost file) : "鬼"文件, 很少见, 就是该文件不应该被这个RPM包包含

L(license file) : 授权文件

r(read me) : 描述文件

MD5校验

作用:
用来校验文件的完整性(文件内容是否被改变)。

例如, 在官网下载的游戏, 官方会给出MD5校验码, 将下载的游戏通过专用的MD5校验工具校验后生成一份MD5校验码, 对比两份校验码是否一致, 不一致则说明,下载的文件可能丢包, 可能文件损坏, 可能被其他人动过手脚一直木马等。

### 如何在 openEuler 上使用 RPM 命令管理软件 RPM 是 Red Hat Package Manager 的缩写,是一种用于管理和分发软件包的工具。openEuler 使用 DNF 作为默认的包管理工具,但仍可以通过 RPM 来直接操作 `.rpm` 文件进行软件包的安装、查询和卸载。 以下是关于如何在 openEuler 系统上使用 RPM 进行软件管理的具体方法: #### 安装软件包 要安装一个本地的 `.rpm` 文件,可以运行以下命令: ```bash sudo rpm -ivh package_name.rpm ``` 其中 `-i` 表示安装,`-v` 提供详细的输出信息,`-h` 显示安装进度条[^1]。 如果需要强制覆盖已存在的文件,则可加上 `--force` 参数;若需替换同名软件包则加 `--replacefiles` 和 `--replacepkgs` 参数。 #### 查询已安装的软件包 为了查看当前系统中所有已安装的 RPM 软件包列表,执行如下指令即可: ```bash rpm -qa ``` 此命令会打印出每一个已经成功部署到系统的程序名称及其版本号等基本信息。 对于特定条件下的筛选查找,比如只关心某个具体的应用或者库函数是否存在以及其确切详情的话,那么应该这样调用它: ```bash rpm -qi package_name ``` #### 卸载软件包 当不再需要某些应用程序时,可通过下面这条语句来将其彻底移除掉: ```bash sudo rpm -e package_name ``` 这里需要注意的是,在删除之前最好先确认该目标确实是你想要处理的那个实例,并且没有任何依赖关系阻止这项行动的发生。 另外,如果有多个相同名字但不同架构或版本编号的对象存在,则可能还需要进一步指定完整的路径地址或者其他附加选项才能顺利完成任务。 --- ### 示例代码展示 假设现在有一个名为 `example-app-1.0.0.x86_64.rpm` 的文件位于用户的家目录下,下面是几个实际应用场景的操作示范: **安装** ```bash sudo rpm -ivh ~/example-app-1.0.0.x86_64.rpm ``` **查询详细信息** ```bash rpm -qi example-app ``` **卸载** ```bash sudo rpm -e example-app ``` 以上就是利用 RPM 工具完成基本功能实现的方式介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值