我是大型计算机系统的非管理员用户。我需要一些系统上未安装的最新软件包。我想使用 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
,但这个解决方案让我不断前进。