好记性不如烂笔头- linux 下rpm软件的安装和卸载 rpm --force -ivh ...

本文详细介绍了RPM包管理系统的基本操作,包括安装、卸载、查看包信息等实用技巧,并提供了具体的命令示例。

命令总忘-好记性不如烂笔头,留着以后查找~~

RPM包:

1.如何安装rpm软件包

rmp软件包的安装可以使用程序rpm来完成。执行下面的命令 
rpm -i your-package.rpm 
其中your-package.rpm是你要安装的rpm包的文件名,一般置于当前目录下。 
安装过程中可能出现下面的警告或者提示: 
... conflict with ... 可能是要安装的包里有一些文件可能会覆盖现有 
的文件,缺省时这样的情况下是无法正确安装的可以用 
rpm --force -i 强制安装即可 
... is needed by ... 
... is not installed ... 此包需要的一些软件你没有安装可以用 
rpm --nodeps -i 来忽略此信息 
也就是说,rpm -i --force --nodeps 可以忽略所有依赖关系和文件问题,什么包 
都能安装上,但这种强制安装的软件包不能保证完全发挥功能


2.如何安装.src.rpm软件包

有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时 
需要进行编译。这类软件包有两种安装方法, 
方法一: 
1.执行rpm -i your-package.src.rpm 
2. cd /usr/src/redhat/SPECS 
3. rpmbuild -bp your-package.specs 一个和你的软件包同名的specs文件 
4. cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录 
5. ./configure 这一步和编译普通的源码软件一样,可以加上参数 
6. make 
7. make install

方法二:

1.执行rpm -i you-package.src.rpm

2. cd /usr/src/redhat/SPECS
前两步和方法一相同

3. rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件

这时,在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等) 
在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。 
执行rpm -i new-package.rpm即可安装完成。

3.如何卸载rpm软件包

使用命令 rpm -e 包名,包名可以包含版本号等信息,但是不可以有后缀.rpm 
比如卸载软件包proftpd-1.2.8-1,可以使用下列格式: 
rpm -e proftpd-1.2.8-1 
rpm -e proftpd-1.2.8 
rpm -e proftpd- 
rpm -e proftpd 
不可以是下列格式: 
rpm -e proftpd-1.2.8-1.i386.rpm 
rpm -e proftpd-1.2.8-1.i386 
rpm -e proftpd-1.2 
rpm -e proftpd-1 
有时会出现一些错误或者警告: 
... is needed by ... 这说明这个软件被其他软件需要,不能随便卸载 
可以用rpm -e --nodeps强制卸载

4.如何不安装但是获取rpm包中的文件

使用工具rpm2cpio和cpio 
rpm2cpio xxx.rpm | cpio -vi 
rpm2cpio xxx.rpm | cpio -idmv 
rpm2cpio xxx.rpm | cpio --extract --make-directories 
参数i和extract相同,表示提取文件。v表示指示执行进程 
d和make-directory相同,表示根据包中文件原来的路径建立目录 
m表示保持文件的更新时间。

5.如何查看与rpm包相关的文件和其他信息

下面所有的例子都假设使用软件包mysql-3.23.54a-11

1.我的系统中安装了那些rpm软件包

rpm -qa 讲列出所有安装过的包 
如果要查找所有安装过的包含某个字符串sql的软件包 
rpm -qa |grep sql

2.如何获得某个软件包的文件全名

rpm -q mysql 可以获得系统中安装的mysql软件包全名,从中可以获得 
当前软件包的版本等信息。这个例子中可以得到信息mysql-3.23.54a-11

3.一个rpm包中的文件安装到那里去了?

rpm -ql 包名 
注意这里的是不包括.rpm后缀的软件包的名称 
也就是说只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm。 
如果只是想知道可执行程序放到那里去了,也可以用which,比如 
which mysql

4.一个rpm包中包含那些文件

一个没有安装过的软件包,使用rpm -qlp ****.rpm 
一个已经安装过的软件包,还可以使用rpm -ql ****.rpm

5.如何获取关于一个软件包的版本,用途等相关信息?

一个没有安装过的软件包,使用rpm -qip ****.rpm 
一个已经安装过的软件包,还可以使用rpm -qi ****.rpm

6.某个程序是哪个软件包安装的,或者哪个软件包包含这个程序

rpm -qf `which 程序名` 返回软件包的全名 
rpm -qif `which 程序名` 返回软件包的有关信息 
rpm -qlf `which 程序名` 返回软件包的文件列表 
注意,这里不是引号,而是`,就是键盘左上角的那个键。 
也可以使用rpm -qilf,同时输出软件包信息和文件列表

7.某个文件是哪个软件包安装的,或者哪个软件包包含这个文件

注意,前一个问题中的方法,只适用与可执行的程序,而下面的方法,不仅可以 
用于可执行程序,也可以用于普通的任何文件。前提是知道这个文件名。 
首先获得这个程序的完整路径,可以用whereis或者which,然后使用rpm -qf例如: 
# whereis ftptop 
ftptop: /usr/bin/ftptop /usr/share/man/man1/ftptop.1.gz 
# rpm -qf /usr/bin/ftptop 
proftpd-1.2.8-1 
# rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt 
proftpd-1.2.8-1

总结:

获得软件包相关的信息用rpm -q,q表示查询query,后面可以跟其他选项,比如 
i 表示info,获得软件包的信息; 
l 表示list,获得文件列表; 
a 表示all,在所有包中执行查询; 
f 表示file,根据文件进行相关的查询; 
p 表示package,根据软件包进行查询 
需要的查询条件可以使用grep产生,或者从"` `"中的命令行产生

<think>首先,用户的问题是:“我想查找如何卸载通过rpm-ivhremi-release-7.rpm命令安装的Redis的方法请问如何卸载通过rpm-ivhremi-release-7.rpm安装的Redis”。用户想卸载通过rpm-ivhremi-release-7.rpm安装的Redis。关键点是:卸载通过rpm-ivhremi-release-7.rpm安装的Redis。这里的remi-release-7.rpm是一个RPM包,用于安装remi源,而不是直接安装Redis。remi源是一个软件仓库,提供了额外的软件包,包括Redis。用户的问题有点混淆。他们提到了“通过rpm-ivhremi-release-7.rpm命令安装的Redis”,但remi-release-7.rpm安装的是源本身,不是Redis。Redis可能是通过这个源安装的。所以,我需要澄清用户的实际意图:-remi-release-7.rpm安装remi软件仓库源。-然后,用户可能使用yum安装了Redis,从remi源中。所以,用户可能想卸载Redis本身,而不是remi源;或者是两者都卸载。再看用户的问题:"卸载通过rpm-ivhremi-release-7.rpm安装的Redis"。这有点歧义。或许用户想卸载Redis软件,这些软件是通过remi源安装的。在提供的引用中:-引用[1]:提到下载remi-release-7.rpm安装它,然后查找Redis版本:yum--enablerepo=remilistredis。这表明在安装remi源后,使用yum从remi源安装软件-引用[2]:有关卸载MySQL的命令:rpm-qa|grep-i-Emysql\|mariadb|xargs-n1sudorpm-e--nodeps。这是一个卸载软件包的模式。-引用[3]:提到卸载MySQL的部分,但不直接相关。所以,用户的问题是关于卸载Redis的,假设Redis是通过remi源安装的。步骤:1.**卸载Redis软件本身:**如果Redis是通过yum从remi源安装的,应该使用yum或rpm命令卸载Redis包。-首先,确认Redis是否安装。例如,使用:`rpm-qa|grepredis`或`yumlistinstalled|grepredis`-然后卸载,使用:`yumremoveredis`或`rpm-eredis`。但在引用[2]中有一个更具体的例子。2.**可选卸载remi源:**如果用户也想卸载remi源本身。但用户说:"卸载通过rpm-ivhremi-release-7.rpm安装的Redis",所以焦点是卸载Redis,但通过这个源安装的。remi-release-7.rpm没有直接安装Redis;它启用了安装。因此,正确方法是卸载Redis软件包,然后如果需要,卸载remi源。在Linux中,卸载软件包:-使用yum:`yumremove<package-name>`-使用rpm:`rpm-e<package-name>`为了彻底卸载,包括依赖项,yum更好。在引用[2]中,有一个卸载MySQL的例子:`rpm-qa|grep-i-Emysql\|mariadb|xargs-n1sudorpm-e--nodeps`。这搜索所有与MySQL相关的包,然后强制卸载它们(使用--nodeps忽略依赖问题)。对于Redis,类似:-确认Redis包名:通常Redis的主包是"redis",但由于从remi源安装,它可能同名。-查询:`rpm-qa|grepredis`来列出所有相关的包。-然后卸载:例如,`sudorpm-eredis`或使用xargs来卸载所有找到的包。使用yum更安全,因为它处理依赖:`yumremoveredis`但如果是从remi源安装的,确保yum能找到它,或者指定repo,但通常yum会处理。现在,用户提到了remi-release-7.rpm,所以可能也想卸载源本身。卸载remi源的方法:-remi-release-7.rpm安装了一个repo文件,通常在/etc/yum.repos.d/目录中。-可以删除那个repo文件,然后可能清理。具体卸载rpm包:-remi-release-7.rpm是一个包,可以使用rpm卸载它。-查询安装的包:`rpm-qa|grepremi-release`-然后卸载:`sudorpm-eremi-release-7`(可能需要完整包名)在引用[1]中,包名是remi-release-7.rpm,所以假设为"remi-release-7"。但卸载源本身不会卸载通过它安装软件。所以首先卸载Redis软件,然后如果需要卸载源。回答结构:-系统级指令:所有数学表达式用$...$,独立公式用$$...$$,但这个问题涉及命令,所以可能没有数学。使用中文回答,生成相关问题。-回答应该结构化清晰。步骤建议:1.**检查Redis是否安装:**使用`rpm-qa|grepredis`或`yumlistinstalled|grepredis`列出安装的Redis包。2.**卸载Redis:**如果只有一个包,`yumremoveredis`。或者使用像引用[2]的完整方法:`rpm-qa|grepredis|xargs-n1sudorpm-e--nodeps`(但--nodeps可能会引发问题,最好先试yum)。-由于Redis可能没有许多依赖,直接rpm卸载可以。3.**可选卸载remi源:**如果不需要remi源,卸载remi-release包:`rpm-qa|grepremi-release`然后`sudorpm-eremi-release-7`-然后删除repo文件,如果需要:`sudorm/etc/yum.repos.d/remi.repo`或类似文件(实际文件名称可能不同,检查/etc/yum.repos.d/)在引用[1]中,安装命令是`rpm-ivhremi-release-7.rpm`,所以包名可能是"remi-release-7"。在LinuxCentOS/RHEL系统中,remi-release包通常提供repo文件。相关问题:-生成相关问题在末尾。引用标识:引用末尾自然添加[^1]、[^2]等,但这里我没有直接引用内容,我需要参考提供的引用。在回答中,如果有用到的部分,添加引用。例如:-从引用[2],卸载软件的命令模式可以参考。-从引用[1],安装remi源的方法。但在回答中,针对卸载。最终,回答用户:如何卸载通过这种方式安装的Redis。澄清:卸载Redis软件,这些软件是从remi源安装的。所以:-步骤1:卸载Redis软件包。-步骤2:(可选)卸载remi源包。用中文回答。**回答结构:**-简要解释remi-release-7.rpm的作用:它是一个软件仓库源包,安装它后可以从remi源安装软件如Redis。-用户想卸载Redis,这些软件可能是通过yum从这个源安装的。-方法:1.**确认Redis包:**运行`rpm-qa|grepredis`列出所有相关的软件包。2.**卸载Redis包:**使用yum卸载:`sudoyumremoveredis`。或者,如果yum不可用或问题,使用rpm卸载所有相关包:`sudorpm-e$(rpm-qa|grepredis)`或安全方式使用xargs,像引用[2]:`rpm-qa|grepredis|xargs-n1sudorpm-e--nodeps`,但注意`--nodeps`忽略依赖,可能导致问题。3.**验证卸载:**运行命令检查Redis是否不再列出。-可选,如果还想卸载remi源:-确认remi-release包:`rpm-qa|grepremi-release`-卸载它:`sudorpm-eremi-release-7`(假设包名为remi-release-7)-删除repo文件:`sudorm/etc/yum.repos.d/remi*.repo`或具体文件。添加引用:-如,卸载命令模式参考[^2]。在引用末尾自然地加引用标识,例如[^2]。生成相关问题:-在§§相关问题§§部分,列出相关问题。例如:1.如何检查哪些软件是从remi源安装的?2.卸载remi源后如何重新安装它?3.如何处理在卸载软件时遇到的依赖问题?确保回答真实可靠。</think> ### 卸载通过 remi 源安装的 Redis 的方法 用户的问题是关于卸载通过 `rpm -ivh remi-release-7.rpm` 命令安装的 remi 源并从该源安装的 Redis 软件。首先,澄清一下:`remi-release-7.rpm` 是一个软件仓库源包(repo),它本身并不直接安装 Redis。相反,安装此源包后,用户可以通过 `yum` 命令从 remi 源安装 Redis。因此,用户的操作涉及两部分:卸载 Redis 软件本身(如果已安装)以及可选卸载 remi 源(如果不再需要)。下面我将逐步说明卸载方法,确保操作安全可靠。所有命令适用于 CentOS/RHEL 7 系统(基于引用中提到的环境)。 #### 步骤 1: 确认并卸载 Redis 软件包 Redis 是通过 remi 源安装软件包。卸载前,先确认 Redis 是否已安装及具体的包名,然后移除软件包。这样可以避免残留文件或服务影响系统。 1. **检查已安装的 Redis 包:** 运行以下命令列出所有与 Redis 相关的已安装包: ```bash rpm -qa | grep redis ``` 输出可能类似 `redis-5.0.3-1.el7.remi.x86_64`(具体版本包名取决于安装时选择)。如果输出为空,表示 Redis 未安装,无需卸载。 2. **卸载 Redis 包:** 如果 Redis 已安装,使用 `yum remove` 命令卸载它(推荐使用 `yum` 因为它自动处理依赖关系,更安全)。运行: ```bash sudo yum remove redis ``` - 此命令会卸载 Redis 主包及其依赖项(如果有)。系统会提示确认卸载,输入 `y` 同意。 - 如果 Redis 有多个相关包(例如 `redis-server` 或 `redis-tools`),命令会列出所有待卸载的包。 - 如果 `yum` 无法工作(例如 remi 源已禁用),可以使用 `rpm` 强制卸载所有匹配的包,如下: ```bash rpm -qa | grep redis | xargs -n1 sudo rpm -e --nodeps ``` 这里 `--nodeps` 忽略依赖检查,但可能导致系统不稳定或残留文件,建议只在必要且谨慎时使用此方法(参考引用[2]中卸载 MySQL 包的类似命令模式[^2])。 3. **验证 Redis 是否卸载成功:** 再次运行 `rpm -qa | grep redis` 检查输出。如果无结果,表示 Redis 已移除。另外,检查 Redis 服务状态以确认: ```bash sudo systemctl status redis # 如果以前启用了服务 ``` 如果服务仍在运行,先停止它:`sudo systemctl stop redis`,然后卸载。 #### 步骤 2: 可选卸载 remi 源包 如果用户不再需要 remi 软件仓库源,可以卸载 `remi-release-7.rpm` 包。注意:卸载源包不会自动移除从该源安装的其他软件(如 Redis),因此应优先完成 Step 1。 1. **确认 remi 源包是否安装:** 运行命令查看: ```bash rpm -qa | grep remi-release ``` 输出通常为 `remi-release-7.x86_64` 或类似。 2. **卸载 remi 源包:** 使用 `rpm -e` 命令移除包: ```bash sudo rpm -e remi-release-7 # 如果包名显示为 remi-release-7 ``` - 如果包名不同(e.g., `remi-release-7.6-2.el7.remi.noarch`),使用完整名称:`sudo rpm -e remi-release-7.6-2.el7.remi.noarch`。 - 卸载后,repo 文件不会被自动删除。需要手动移除以完全清理源配置。 3. **清理残留的 repo 文件:** remi 源的配置文件通常位于 `/etc/yum.repos.d/` 目录。检查并删除相关文件: ```bash sudo rm -f /etc/yum.repos.d/remi*.repo # 删除所有 remi 开头的 repo 文件 ``` 然后运行 `sudo yum clean all` 清理 yum 缓存。 #### 注意事项 - **系统影响:** 卸载 Redis 会删除所有配置数据(除非用户提前备份)。如果需要保留数据,运行 `sudo systemctl stop redis` 后备份 `/var/lib/redis/` 目录。 - **依赖问题:** 如果卸载时遇到依赖错误(如其他软件依赖 remi 源),考虑使用 `yum remove` 而非 `rpm -e`。在引用[3]中,类似环境显示依赖管理问题,`yum` 更安全[^3]。 - **通用性:** 此方法适用于任何通过 remi 源安装软件。例如,引用[1] 显示查找 remi 源中的 Redis 版本命令[^1],但卸载不限于源本身。 - **验证操作:** 所有命令执行后,推荐重启系统或运行 `sudo yum update` 确保无残留问题。 如果用户只关心 Redis 软件卸载忽略 Step 2 即可。如果遇到问题,提供更多系统细节有助于进一步诊断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值