是否可以在Linux(特别是CentOS)中使用RPM或YUM或任何其他软件包管理器,在没有管理员/root访问权限的情况下,将已下载的软件包或从repo安装到自定义位置?
我试着从源代码构建,使用cmake、configure、make、make-install等,但是,它最终一个接一个地具有如此多的依赖性.
还是有更好的 Select ?
是否可以在Linux(特别是CentOS)中使用RPM或YUM或任何其他软件包管理器,在没有管理员/root访问权限的情况下,将已下载的软件包或从repo安装到自定义位置?
我试着从源代码构建,使用cmake、configure、make、make-install等,但是,它最终一个接一个地具有如此多的依赖性.
还是有更好的 Select ?
可以使用yum和rpm在发行版的存储库中安装任何软件包.以下是菜谱:
使用yum search
.
使用yumdownloader
下载软件包及其所有依赖项(默认情况下CentOS上提供).您需要通过--resolve
才能获得依赖项解析.yumdownloader
下载到当前目录,除非指定--destdir
.
mkdir -p ~/rpm
yumdownloader --destdir ~/rpm --resolve vim-common
可能是~
、~/centos
或~/y
.如果你的家是慢的,因为它是在一个网络文件系统,你可以把它放在/var/tmp/...
.
mkdir ~/centos
全部提取.rpm软件包到您 Select 的前缀位置.
cd ~/centos && rpm2cpio ~/rpm/x.rpm | cpio -id
rpm2cpio
个输出.rpm文件作为一个文件.标准数据上的cpio档案.cpio
从stdin读取-i
表示提取(到当前目录)-d
表示创建丢失的目录您可以 Select 使用-v
:verbose
您需要配置环境变量PATH
和LD_LIBRARY_PATH
,以使安装的软件包正常工作.以下是~/.bashrc
年款的相应示例:
export PATH="$HOME/centos/usr/sbin:$HOME/centos/usr/bin:$HOME/centos/bin:$PATH"
export MANPATH="$HOME/centos/usr/share/man:$MANPATH"
L='/lib:/lib64:/usr/lib:/usr/lib64'
export LD_LIBRARY_PATH="$HOME/centos/usr/lib:$HOME/centos/usr/lib64:$L"
编辑说明(感谢@AmitNaidu指出我的错误):
根据bash documentation about startup files,当通过ssh连接到服务器时,只有.bashrc的来源是:
由远程shell守护程序调用
Bash试图确定何时在其标准输入连接到网络连接的情况下运行它,例如由远程shell守护程序(通常是rshd)或安全shell守护程序sshd执行.如果Bash确定它正以这种方式运行,它将从~/读取并执行命令.bashrc,如果该文件存在且可读.
现在,如果你想用这种方式安装很多软件包,你可能想自动化这个过程.如果是的话,请看一下this repository.
额外注意:如果你试图安装gcc, zlib, make, cmake, git, fish, zsh or tmux
个,你应该考虑使用CONDA,见my other answer.