非用户在用户主目录中安装yum


51

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


1
除非yum二进制文件是suid root(其机会很小)。
h3rrmiller

1
@ h3rrmiller,但是是否有任何程序包管理器可以在$ HOME中安装程序,因此不需要sudo访问?我知道OSX上的MacPorts可以做到。Linux有哪些选项?
highBandWidth

Answers:


7

大多数二进制文件被编译为可安装到的某些位置/

有一些非root软件包管理器,例如Gentoo PrefixRootless GoboLinux,也许还有0install

如您所说,编译自己可以缓解此问题,或使用chroot。但是,chrooting的最大障碍将是前提条件和链接到内核共享对象。


10
Chroot不是这里的选项。您需要成为chroot的root用户。
Marco Marco

38

无需使用yum,而是找到所需的rpm并下载它们。如果没有root用户,仍然无法直接安装它们,但是RPM软件包实际上是精美的.cpio文件,您可以解压缩它们的内容。最简单的方法可能是通过mc(“午夜指挥官”)文件浏览器(有史以来最伟大的软件之一),它允许您浏览an的内容.rpm并直接复制其中的文件。

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

»rpm2cpio xsnow-1.42-17.fc17.x86_64.rpm > xsnow.cpio

注意,我找到了适合我的系统的.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...

如果浏览此目录树,除了一些可以帮助我解决依赖关系的元信息外,所有我需要的都在那里。可以使用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

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

»cp ./usr/bin/xsnow ~/bin

中提琴!现在,我可以键入xsnow任何内容,而无需进行任何操作,因为事实证明xsnow在KDE ::上不能很好地发挥作用,但是希望过程的精髓是明确的。我不必在主目录外进行任何操作。

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

export LD_LIBRARY_PATH=/home/you/lib

@siamii好吧,您有更好的答案吗?
Marcin

5
好的,那么有人如何制作一个工具来制作cpio文件,然后将所有内容复制到一个非根文件夹中,例如./usr/bin到$ PREFIX / usr / bin等,并递归检查并安装依赖项。
highBandWidth 2014年

2
两年半后,谢谢您的帮助。您可以使用以下代码一行完成此操作:mkdir xsnow; cd xsnow; wget -O- 195.220.108.108/linux/rpmfusion/nonfree/fedora/releases/17/… | rpm2cpio-| cpio -idv
拉里·

1
我已经在办公室计算机上使用了2年以上,并且每次都像是一种魅力。我想对你表示衷心的感谢。我希望我的大学的IT能够胜任。

每隔一段时间,我会遇到一个无法符号链接到“ ...”:权限被拒绝或cpio:....:无法打开:权限被拒绝,是否有办法解决此问题?请注意,我是在没有sudo的情况下创建这些文件的,但是由于某些原因,我需要使用sudo来卸载它们
Phylliida
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.