我是大型计算机系统上的非管理员用户。我需要一些未安装在系统上的最新软件包。我想用 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)
大多数二进制文件都被编译为安装到/.
有非 root 包管理器,如Gentoo Prefix和Rootless GoboLinux,也许还有0install。
正如你所说,自己编译会缓解这个问题,或者使用 chroot。但是,使用 chrooting 的最大障碍是先决条件和链接到内核共享对象。
| 归档时间: |
|
| 查看次数: |
113075 次 |
| 最近记录: |