如何在没有 root 权限的情况下在 Linux 上安装软件包?

如何在没有 root 权限的情况下在 Linux 上安装软件包?

无论出于什么原因,我们组织中具有 root 权限的管理员将软件包的选择限制在供应商的官方“基础”存储库(RHEL)内。

甚至连 EPEL 都不可能,更不用说 IUS 了。

我们自己的-- 手工制作 -- RPM 是允许的,但仍然需要填写票据和等待。这不仅使安装过程变得不必要地痛苦,而且妨碍了软件包开发 -- 我无法立即测试我的新 RPM。

但是,我们可以构建和安装任何我们想要的软件 - 只要它进入“我们的”目录。我们已经构建和安装这些东西一段时间了,我想知道,我们是否可以更好地组织这些东西,例如,gcc-8.2 可以在一个系统上构建(使用类似prefix/Data/local`)并安装在多个其他系统上。

当然,我可以使用普通的 tar-ball 来做到这一点,但如果有某种包管理器功能(例如,跟踪依赖关系)就更好了……

有没有什么办法呢?还是我们还是坚持使用自制的工具?

答案1

您可以尝试--prefix--dbpath选项。并非所有 RPM 都支持--prefix,但如果您自己制作 RPM,那就不是问题,只需使它们可重定位即可。

我已经成功将系统 rpm DB 复制/tmp/lib/rpm到我自己的目录并通过 指定--dbpath。然后我可以rpm -i在不使用 root 的情况下运行。当然,您现在拥有 DB 的私人副本,并且当您的 IT 安装新软件包时它将变得过时 - 并且其他用户不会知道您私人安装的软件包。但是,嘿,考虑到您提出的问题,这可能没问题。

不幸的是,分发您的 RPM 仍然需要其他用户通过 IT 或创建他们自己的数据库,例如。

rpm -ivh --dpath ~/rpmdb --prefix ~/ mypkg-1.0-1.el8.x86_64.rpm

您还可以要求您的 IT 使系统 RPM DB 可写。

相关内容