如何知道将哪个存储库添加到 dnf 以在 RHEL 中安装特定应用程序?

如何知道将哪个存储库添加到 dnf 以在 RHEL 中安装特定应用程序?

我是一名长期的 Windows 用户,试图过渡到使用 Linux 作为我的主要操作系统。

  • 我使用的是 RHEL 9.3 (Plough) 64 位。
  • 我正在尝试安装快门
  • 当我dnf install shutter按照指示跑步时这里我收到以下错误消息:
sudo dnf install shutter [sudo] password for simon: Updating
Subscription Management repositories. Last metadata expiration check:
0:08:13 ago on Sat 06 Apr 2024 13:38:27 BST. No match for argument:
shutter Error: Unable to find a match: shutter

我已经做了一些谷歌搜索/ChatGPT,我相信这是因为dnf包管理器在当前启用的存储库中找不到名为“shutter”的包。

我的问题:我如何可靠地知道需要添加哪些存储库来dnf安装特定应用程序?有某种搜索引擎吗?我对 Shutter 项目没有在他们的网站上列出这一点感到有点惊讶,但我也没有在其他项目的网站上看到它,这让我觉得我的方法一定有根本性的错误。

笔记:我尝试添加 EPEL 存储库,但这没有列出快门:

✘ simon@localhost  /  dnf repolist
Not root, Subscription Management repositories not updated
repo id                                                                                                                                          repo name
code                                                                                                                                             Visual Studio Code
codeready-builder-for-rhel-9-x86_64-rpms                                                                                                         Red Hat CodeReady Linux Builder for RHEL 9 x86_64 (RPMs)
epel                                                                                                                                             Extra Packages for Enterprise Linux 9 - x86_64
epel-cisco-openh264                                                                                                                              Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64
google-chrome                                                                                                                                    google-chrome
rhel-9-for-x86_64-appstream-rpms                                                                                                                 Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs)
rhel-9-for-x86_64-baseos-rpms                                                                                                                    Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs)
 simon@localhost  /  dnf list --available | grep -i shutter
 ✘ simon@localhost  /  

答案1

我如何可靠地知道需要将哪些存储库添加到 dnf 才能安装特定应用程序?

在 RHEL 上,您可能需要 EPEL,这是一项社区努力,旨在将其他发行版(主要是 Fedora)拥有但 Red Hat 不提供支持的软件包引入 RHEL。dnf install -y epel-release; dnf check-update来启用它。

然而,在这种情况下,shutter也不在EPEL中。

有某种搜索引擎吗?

有几个,但我建议您执行以下操作:首先调查该项目的主页。如果这没有产生任何结果,并且 Red Hat 的官方来源和 EPEL 都没有快门,则意味着您需要依赖第三方包装;这不是一个很好的情况,因为您需要首先找到一个人,他可能在充足的时间里为您的特定发行版打包了您感兴趣的软件,但随后没有采取措施“上游”该软件包,这意味着他们没有与该项目合作,使其成为软件开发人员正式推荐的东西,也没有与发行版/EPEL 合作,使其得到打包社区的正式认可。这通常是“实验性”包装/软件的情况,或者只是没有人愿意这样做的情况。

我认为,虽然快门仍然处于“我们仍然是实验性的”版本号中(你通常不要将东西发布为版本 0.something 除非你想告诉人们它还没有为最终用户做好准备),后者是这种情况:没有人坐下来拿 Fedora 包并尝试制作 RHEL 包将其导出(通常非常简单),将其提交给 EPEL,并在每次更新时投入时间来处理它。

所以,我猜你不会在普通的搜索引擎上找到任何东西:

厄运!您需要自己构建软件,或者使用替代的屏幕截图程序,例如桌面环境中已经附带的程序。

自己构建软件并不难,通常。然而,Shutter 并没有附带依赖项列表,它缺少一个构建系统来检测系统上的依赖项,因此您确实需要做上游开发人员通常要做的工作才能使事情在 RHEL 上运行。诚实地,或许快门对于这一点来说仍然有点太实验性了。坚持使用支持稍微好一些的东西,直到有人弄清楚如何正确地打包东西。

只是为了有人真正尝试一下,RHEL 9 上的步骤是某物像这样从 Fedora 移植该包。这是未经测试的,我不会帮助调试它。这甚至不会尝试纠正 Fedora 和 RHEL 之间软件包的命名差异,您可以预计您还需要移植快门的依赖项。老实说,在 2024 年用 Perl 为现代桌面编写屏幕截图实用程序并不是一个很容易移植的选择; Perl 是一种适用于多种用途的优秀语言,但在过去 20 年里它绝对不是图形应用程序中最受欢迎的语言。

RPMNAME=shutter
sudo dnf install -y epel-release
sudo dnf install -y --refresh fedpkg
fedpkg clone --anonymous "rpms/${RPMNAME}"
cd "${RPMNAME}"
fedpkg mockbuild
# after the build there will be a results* subdirectory
# bash: enable recursive globs
shopt -s globstar
sudo dnf install result*/**/*.rpm

相关内容