yum 安装在用户家中,供非管理员使用

hig*_*dth 66 yum rpm

我是大型计算机系统上的非管理员用户。我需要一些未安装在系统上的最新软件包。我想用 yum 来安装它们。作为没有 sudo、admin 或 root 访问权限的用户,我可以使用包管理在我的主目录中安装包吗?我总是可以从源代码中使用 make,但是能够使用 yum 会让生活更轻松。

gol*_*cks 49

与其使用yum,不如找到您想要的 rpm 并下载它们。你仍然不能在没有 root 的情况下直接安装它们,但 RPM 包实际上是花哨的 .cpio 文件,你可以解压它们的内容。最简单的方法可能是通过mc(“午夜指挥官”)文件浏览器(有史以来最伟大的软件之一),它允许您浏览.rpm文件的内容并直接从中复制文件。

没有,您可以使用rpm2cpio将其转换为 .cpio,然后cpio提取其中的文件并将它们放在正确的位置。这两个都已经安装在 redhat 或 fedora 系统上。这是安装“xsnow”的示例(您可能希望在空目录中执行此操作):

»rpm2cpio xsnow-1.42-17.fc17.x86_64.rpm > xsnow.cpio
Run Code Online (Sandbox Code Playgroud)

请注意,我找到了适合我的系统的 .rpm,fc17 x86_64。这很重要,因为这些是与其他组件链接的预编译二进制文件。现在提取 .cpio:

»cpio -idv < xsnow.cpio 
./usr/bin/xsnow
./usr/share/doc/xsnow-1.42
./usr/share/doc/xsnow-1.42/README
./usr/share/man/man6/xsnow.6.gz
212 blocks
Press any key to continue...
Run Code Online (Sandbox Code Playgroud)

如果我浏览这个目录树,我需要的一切都在那里,除了一些可能帮助我解决依赖关系的元信息。这可以使用rpm -q -p [package] --[query]

»rpm -q -p xsnow-1.42-17.fc17.x86_64.rpm --requires
warning: xsnow-1.42-17.fc17.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID d2382b83: NOKEY
libX11.so.6()(64bit)  
libXext.so.6()(64bit)  
libXpm.so.4()(64bit)  
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)  
rpmlib(PayloadIsXz) <= 5.2-1
Run Code Online (Sandbox Code Playgroud)

很确定我已经拥有了所有这些东西。所以现在我要做的就是将 xsnow 可执行文件放在我的 $PATH 中,它已经在我的主目录中包含了一个 bin:

»cp ./usr/bin/xsnow ~/bin
Run Code Online (Sandbox Code Playgroud)

中提琴!现在我可以输入xsnow和观看任何内容,因为事实证明 xsnow 不能很好地与 KDE 配合使用 :( 但希望这个过程的要点是清楚的。我不必在我的主目录之外做任何事情。

如果您需要安装库,您还需要在 home 中为它们创建一个目录并添加到~/.bashrc

export LD_LIBRARY_PATH=/home/you/lib
Run Code Online (Sandbox Code Playgroud)

  • 好的,那么有人制作一个工具来制作cpio文件,然后将所有内容复制到非根文件夹,例如./usr/bin到$PREFIX/usr/bin等,并递归检查和安装依赖项如何。 (5认同)
  • 两年半后,感谢您的有用回答。您可以在一行中执行此操作:mkdir xsnow ;cd xsnow ; wget -O - ftp://195.220.108.108/linux/rpmfusion/nonfree/fedora/releases/17/Everything/x86_64/os/xsnow-1.42-17.fc17.x86_64.rpm | rpm2cpio - | cpio -idv (2认同)
  • 我已经在我的办公室电脑上使用它超过 2 年了,它每次都像魅力一样。我想对你表示衷心的感谢。我希望我大学的 IT 也能胜任。 (2认同)

h3r*_*ler 8

大多数二进制文件都被编译为安装到/.

有非 root 包管理器,如Gentoo PrefixRootless GoboLinux,也许还有0install

正如你所说,自己编译会缓解这个问题,或者使用 chroot。但是,使用 chrooting 的最大障碍是先决条件和链接到内核共享对象。

  • Chroot 不是这里的选项。您需要成为 chroot 的 root 用户。 (14认同)