Answers:
有多种方法可以使用来在用户目录中安装rpm rpm
,但我认为这并不简单。我不相信有办法yum
。
我的标准做法是从源代码编译到local
我家中的目录
$ mkdir ~/local
$ mkdir ~/local/bin
$ mkdir ~/local/lib
$ mkdir ~/local/include
我以/usr/local
root 身份下载源代码,例如在中~/local/git
。
编译时,我将前缀设置为local
目录
$ configure --prefix=/home/user_name/local
$ make
$ make install
然后~/local/bin
,我将添加到$ PATH中.bash_profile
。
当然,从源代码安装的痛苦是无法获得自动的依赖关系解析。如果发现需要安装依赖项,请按照上面的说明进行编译和安装。然后在进行编译时git
,需要更新编译标志,以便它们在依赖项库的正确位置查找并包含文件:
./configure --prefix=/home/user_name/local LDFLAG='-L/home/user_name/local/lib' CFLAGS='-I/home/user_name/local/include' CPPFLAGS='-I/home/user_name/local/include' CXXFLAGS='-I/home/user_name/local/include'
.rpm文件实际上是一种cpio
存档形式,非常类似于.rpm 的简单形式tar
。该rpm2cpio
实用程序可能已安装在系统上,不需要特权即可使用。它写入标准输出,因此要进行转换:
rpm2cpio whatever.rpm > whatever.cpio
有一个man cpio
你可以看看自己,但是你现在要做的就是饲料归档的cpio在“副本”模式是什么:
cat whatever.cpio | cpio -i
这些内容很可能被组织到目录树中,以便文件进入适当的位置(bin等)。如果您的pwd中不存在这些文件,则会出现错误,但这将列出存档中的文件(您可以使用-t
/ --list
开关获得相同的内容)。如果要自动创建目录,请使用-d
。因此,打开rpm包装的快速方法:
rpm2cpio whatever.rpm | cpio -i -d
您可以使用它来安装到$ HOME中。唯一的问题将是程序是否希望在/etc
等等中找到东西,因为编译时,无论出于何种目的,许多东西的安装位置都被硬编码在其中。
从源代码进行构建可能是一个更好的选择(因为您可以提供正确的位置),但是如果您可以在任何情况下都可以使用它,那么它会变得快速简单。
此外,午夜指挥官文件浏览器(mc
),可能还有其他文件浏览器,将使您能够浏览rpm或cpio(或压缩的tar或zip)层次结构,并复制单个文件,就像解压缩了存档一样(它创建了一个临时文件系统以浏览其中的存档内容)。
这是另一种选择(不使用yum),并且权限会很古怪,但是之后您可以chown
向目标用户:-还是命中或失手:-(
#-## Download all dependency for the RPM --
#sudo yum install yum-utils
#sudo yumdownloader --resolve --destdir ~/download bash
#-## Install all downloaded to an alternate root
#sudo rpm --initdb --root <user_home_dir>
#sudo rpm --root <user_home_dir> -Uvh --nodeps ~/download/*
然后将适当的位置添加到您的路径。