对于非管理员,在用户主目录中安装 yum

对于非管理员,在用户主目录中安装 yum

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

答案1

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

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

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

请注意,我找到了适合我的系统 fc17 x86_64 的 .rpm。这很重要,因为这些是与其他组件链接的预编译二进制文件。现在提取 .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 配合使用 :( 但希望该过程的要点是清楚的。我不需要在我的主目录之外执行任何操作。

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

export LD_LIBRARY_PATH=/home/you/lib

答案2

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

有非 root 包管理器,例如Gentoo 前缀无根GoboLinux有可能0安装

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

答案3

我在阅读这里的其他答案后放弃使用yum,发现这些说明为我工作(对链接中描述的内容稍作修改):

在您的用户文件夹中安装 miniconda

$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ ./Miniconda3-latest-Linux-x86_64.sh

本地安装包

$ conda install <pkg-name>

完毕!

在提示中,我回答“是”或采用默认值,现在 conda 包管理器以及我用它安装的任何内容都放在~/miniconda3/.因此,就我而言,运行后conda install R glpk,我看到二进制文件的以下位置:

$ which conda R glpsol
~/miniconda3/bin/conda
~/miniconda3/bin/R
~/miniconda3/bin/glpsol

我仍然更喜欢使用yum,但这个解决方案让我不断前进。

相关内容