我通过从/etc/yum.repos.d
使用中删除其文件来删除一个存储库rm -rf
。然后我尝试安装相同的存储库,dnf install
但它没有显示在/etc/yum.repos.d
或当我运行时dnf repolist
。
我认为该包有可能仍被记忆在dnf
缓存中,因此我尝试通过键入来清除缓存
dnf clean expire-cache
甚至将--refresh
选项传递给dnf install
但存储库仍然不显示。
手动删除存储库后如何安装它?
答案1
目前尚不清楚您删除了哪个存储库并尝试使用dnf install ...
命令重新安装,但我们只能假设您尝试执行以下操作:
$ sudo dnf install -y http://download1.rpmfusion.org/free/fedora/releases/28/Everything/x86_64/os/Packages/r/rpmfusion-free-release-28-1.noarch.rpm
Fedora 28 - x86_64 411 kB/s | 60 MB 02:30
Last metadata expiration check: 0:00:00 ago on Mon 23 Jul 2018 02:06:48 AM UTC.
rpmfusion-free-release-28-1.noarch.rpm 40 kB/s | 20 kB 00:00
Dependencies resolved.
...
...
Preparing : 1/1
Installing : rpmfusion-free-release-28-1.noarch 1/1
Verifying : rpmfusion-free-release-28-1.noarch 1/1
Installed:
rpmfusion-free-release.noarch 28-1
Complete!
然后删除 .repo 文件,如下所示:
$ sudo rm /etc/yum.repos.d/rpmfusion-free-updates.repo
然后尝试再次安装:
$ sudo dnf install -y http://download1.rpmfusion.org/free/fedora/releases/28/Everything/x86_64/os/Packages/r/rpmfusion-free-release-28-1.noarch.rpm
RPM Fusion for Fedora 28 - Free 1.3 MB/s | 754 kB 00:00
Last metadata expiration check: 0:00:00 ago on Mon 23 Jul 2018 02:11:12 AM UTC.
rpmfusion-free-release-28-1.noarch.rpm 57 kB/s | 20 kB 00:00
Package rpmfusion-free-release-28-1.noarch is already installed, skipping.
Dependencies resolved.
Nothing to do.
Complete!
解决方案
为了让事情恢复正常,您需要执行reinstall
此 RPM,而不是install
.
$ sudo dnf reinstall -y http://download1.rpmfusion.org/free/fedora/releases/28/Everything/x86_64/os/Packages/r/rpmfusion-free-release-28-1.noarch.rpm
Last metadata expiration check: 0:03:11 ago on Mon 23 Jul 2018 02:11:12 AM UTC.
rpmfusion-free-release-28-1.noarch.rpm 44 kB/s | 20 kB 00:00
Dependencies resolved.
...
...
Preparing : 1/1
Reinstalling : rpmfusion-free-release-28-1.noarch 1/2
Erasing : rpmfusion-free-release-28-1.noarch 2/2
Verifying : rpmfusion-free-release-28-1.noarch 1/2
Verifying : rpmfusion-free-release-28-1.noarch 2/2
Reinstalled:
rpmfusion-free-release.noarch 28-1
Complete!
如果我们确认,已删除.repo 文件回来了:
$ ls -l /etc/yum.repos.d/rpmfusion-free-updates.repo
-rw-r--r--. 1 root root 1264 Apr 24 11:27 /etc/yum.repos.d/rpmfusion-free-updates.repo
没有网址?
如果您愿意,您甚至可以在不知道用于设置/安装此存储库的原始 RPM 的 URL 的情况下执行此操作。
检查 RPM 的名称:
$ rpm -qa|grep rpmfus
rpmfusion-free-release-28-1.noarch
dnf reinstall ...
然后只使用 RPM 的名称来执行此操作:
$ sudo dnf reinstall -y rpmfusion-free-release
Last metadata expiration check: 0:10:00 ago on Mon 23 Jul 2018 02:11:12 AM UTC.
Dependencies resolved.
...
...
Preparing : 1/1
Reinstalling : rpmfusion-free-release-28-1.noarch 1/2
Erasing : rpmfusion-free-release-28-1.noarch 2/2
Verifying : rpmfusion-free-release-28-1.noarch 1/2
Verifying : rpmfusion-free-release-28-1.noarch 2/2
Reinstalled:
rpmfusion-free-release.noarch 28-1
Complete!
并检查文件是否已恢复:
$ ls -l /etc/yum.repos.d/rpmfusion-free-updates.repo
-rw-r--r--. 1 root root 1264 Apr 24 11:27 /etc/yum.repos.d/rpmfusion-free-updates.repo
如果我不知道 RPM 的名称怎么办?
如果您处于奇怪的困境中,您无法弄清楚或回忆起使用什么 RPM 来重新安装,那么您仍然没有完全运气不好。
您可以查看从命令中删除的文件history
,然后运行此rpm
命令以了解 RPM 提供了哪些文件:
$ rpm -qf /etc/yum.repos.d/rpmfusion-free-updates.repo
rpmfusion-free-release-28-1.noarch
然后如上所述使用 RPM 名称重新安装。
如果 RPM 不是通过 DNF 或 YUM 安装的怎么办?
在您的特定情况下,您提到的 RPM 是:geogebra-classic-6.0.477.0-201807062103.i386.rpm,不是包含任何 YUM .repo 文件的 RPM。
$ rpm -qpl geogebra-classic-6.0.477.0-201807062103.i386.rpm | grep yum
$
在这种情况下,双方都dnf
无法yum
提供任何帮助,因为双方都不知道重新安装/下载此 RPM 的 URL。这是因为该 RPM 最初可能只是直接下载并安装。
当以这种方式安装 RPM 时,dnf
&yum
对 URL 视而不见,只是安装您通过本地 HDD 上的文件指示他们执行的任何 RPM。
在这种情况下,您唯一的办法是重新下载有问题的 RPM 并使用dnf
、yum
或手动重新安装rpm
。