我是大型计算机系统上的非管理员用户。我需要一些系统上未安装的最新软件包。我想用yum安装它们。作为没有sudo,admin或root访问权限的用户,我可以使用软件包管理在我的主目录中安装软件包吗?我总是可以从源头上使用make,但是能够使用yum将使生活更加轻松。
我是大型计算机系统上的非管理员用户。我需要一些系统上未安装的最新软件包。我想用yum安装它们。作为没有sudo,admin或root访问权限的用户,我可以使用软件包管理在我的主目录中安装软件包吗?我总是可以从源头上使用make,但是能够使用yum将使生活更加轻松。
Answers:
大多数二进制文件被编译为可安装到的某些位置/
。
有一些非root软件包管理器,例如Gentoo Prefix和Rootless GoboLinux,也许还有0install。
如您所说,编译自己可以缓解此问题,或使用chroot。但是,chrooting的最大障碍将是前提条件和链接到内核共享对象。
无需使用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