AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 100189
Accepted
David Nehme
David Nehme
Asked: 2010-01-07 12:11:42 +0800 CST2010-01-07 12:11:42 +0800 CST 2010-01-07 12:11:42 +0800 CST

没有root的rpm

  • 772

是否可以在没有 root 访问权限的情况下使用 rpm?

rpm
  • 10 10 个回答
  • 18578 Views

10 个回答

  • Voted
  1. Alex
    2010-01-07T13:57:12+08:002010-01-07T13:57:12+08:00

    有很多答案建议可重定位的软件包。重定位选项供管理员选择目标(例如,将目标设置为 /opt 而不是 /usr/local),并不真正用于用户权限。

    虽然使用此方法可能会解决一些权限问题,但主要问题是当您执行 rpm 操作时,它正在修改 root:root 拥有的 /var/lib/rpm/__db.* 数据库。因此,正如 JPerkSter 所说的“简短回答 = 否”。设置 sudo 来满足特定需求可能是最好的选择。

    • 8
  2. Lee Goddard
    2014-02-07T00:26:16+08:002014-02-07T00:26:16+08:00

    考虑到上述所有情况,关于可重定位构建,您可以尝试按照此处列出的说明进行操作。

    rpm --initdb --root /home/username/local --dbpath /home/username/local/lib/rpm
    rpm --root /home/username/local --dbpath /home/username/local/lib/rpm \
     --relocate /usr=/home/username/local --nodeps -ivh package.rpm
    
    • 7
  3. Datageek
    2012-10-27T08:35:36+08:002012-10-27T08:35:36+08:00

    有些软件包是可重定位的,因此它们可以在没有 root 的情况下正常工作,只需在安装时指定前缀: rpm -i my.rpm --prefix=/my/home/folder

    如果包不可重定位,您仍然可以从 RPM 中提取文件并尝试运行它。您可以使用例如以下方法提取 RPM 文件:

    • rpm2cpio
    • 或午夜指挥官

    将文件复制到您的 ~/ 文件夹中,添加任何其他依赖库并希望最好。不能保证,但您可能会得到一些不可重定位的包以这种方式工作。

    • 4
  4. Scott Pack
    2010-01-07T12:47:39+08:002010-01-07T12:47:39+08:00

    RPM 规范包含一个名为“relocatable”的选项。如果构建 rpm 时启用了可重定位性,则可以使用“--prefix”选项将其安装在用户指定的目录中。因此,只要满足两个条件,就可以在没有超级用户访问权限的情况下在本地安装 rpm:

    1. 该软件包最初是为了可重定位而构建的
    2. 'rpm' 二进制文件不会尝试将包添加到全局系统目录

    但是,一般来说,不,您需要超级用户访问权限才能安装 RPM。虽然存在可重定位选项,但我几乎从未见过为支持它而构建的软件包。

    • 3
  5. Best Answer
    Zoredache
    2010-01-07T13:16:29+08:002010-01-07T13:16:29+08:00

    根据包的内容,您可以简单地提取rpm 的内容并从您的主目录中的某个地方使用它。即使它没有被标记为可重定位。如果包中的二进制文件具有硬编码路径,或者如果应用程序需要 root 访问权限,那么这可能是不可能的。

    • 3
  6. user12722
    2014-04-25T05:31:29+08:002014-04-25T05:31:29+08:00

    您可以使用不同的 dbpath 强制它安装在不同的目录下。此外,您可能不应该在不检查它们的情况下直接运行任何脚本。

    这将在当前目录下放置一个 rpm 并提取脚本,以便您可以在必要时编辑和运行它们。

    rpm --install --badreloc --relocate /=`pwd` -dbpath `pwd`/rpm_db --nodeps --noscripts package.rpm
    
    rpm --query --scripts -p package.rpm > scripts.txt
    
    • 2
  7. sciurus
    2014-04-25T07:28:57+08:002014-04-25T07:28:57+08:00

    是的,但您可能不想这样做。我使用自定义 puppet 清单和 rpm 包来维护我没有 root 访问权限的计算集群上的软件。理论上它很简单

    rpm --inittb --root /foo 
    rpm --dbpath /foo -i bar.rpm
    

    但是,这在 EL4、EL5 和 EL6 中的行为方式存在一些怪癖,因此您需要为每个步骤设置不同的步骤和选项。我手头没有这些信息了。这些怪癖,以及频繁的 RPM 数据库问题(可能是由于 NFS),让我后悔使用 rpm。

    • 2
  8. JPerkSter
    2010-01-07T12:24:21+08:002010-01-07T12:24:21+08:00

    您可以在没有 root 访问权限的情况下构建 RPM,只需在您的主目录中进行。至于安装 RPM,我会说简短的回答 = 否。

    • 1
  9. krubo
    2021-01-14T15:49:52+08:002021-01-14T15:49:52+08:00

    扩展 Zoredache关于从 RPM 中提取文件而不安装的链接:

    如果您有一个名为 的包文件foo.rpm,您可以使用以下命令在当前目录路径下提取其文件:

    rpm2cpio foo.rpm | cpio -idmv
    

    例如,如果您在其中执行此操作/home/myself并且包中包含文件/lib/foo.soand /usr/bin/foo,则这些文件将被提取到/home/myself/lib/foo.soand/home/myself/usr/bin/foo中。

    • 0
  10. Rajat
    2010-01-07T12:35:20+08:002010-01-07T12:35:20+08:00

    不,没有 root、su 或 sudo 访问权限是不可能的 rpm

    • -2

相关问题

  • 将 rpm 命令转换为 dpkg

  • 通过 RPM 管理配置?

  • 用于维护 yum 存储库的工具

  • 用于 centos 的 Python 源 RPMS?

  • 可以使用 easy_install 和 bdist_rpm 安装吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve