use*_*840 18 linux centos rpm yum package-managers
是否可以在Linux中使用RPM或YUM或任何其他软件包管理器(特别是CentOS)来安装已下载的软件包或从repo到没有admin/root访问权限的自定义位置?
我尝试从源代码构建,使用cmake,configure,make,make install等,但是,它最终依次拥有如此多的依赖项.
还是有更好的选择吗?
lox*_*axs 17
可以使用yum和rpm在发行版的存储库中安装任何软件包。这是食谱:
使用yum search。
使用下载软件包及其所有依赖项yumdownloader(默认情况下在CentOS上可用)。您需要传递它--resolve以获取依赖关系解析。yumdownloader除非指定,否则将下载到当前目录--destdir。
mkdir -p ~/rpm
yumdownloader --destdir ~/rpm --resolve vim-common
Run Code Online (Sandbox Code Playgroud)
它可能是~,~/centos或~/y。如果您的家庭由于位于网络文件系统上而速度较慢,则可以将其放入/var/tmp/...。
mkdir ~/centos
Run Code Online (Sandbox Code Playgroud)
将所有.rpm软件包解压缩到您选择的前缀位置。
cd ~/centos && rpm2cpio ~/rpm/x.rpm | cpio -id
Run Code Online (Sandbox Code Playgroud)
rpm2cpio 在stdout上将.rpm文件输出为.cpio存档。cpio 从stdin读取-i 意味着提取(到当前目录)-d 意味着创建丢失的目录您可以选择使用-v:详细
您将需要配置环境变量PATH,LD_LIBRARY_PATH并使已安装的软件包正常工作。这是来自我的相应样本~/.profile:
export PATH="$HOME/centos/usr/sbin:$HOME/centos/usr/bin:$HOME/centos/bin:$PATH"
L='/lib:/lib64:/usr/lib:/usr/lib64'
export LD_LIBRARY_PATH="$L:$HOME/centos/usr/lib:$HOME/centos/usr/lib64"
Run Code Online (Sandbox Code Playgroud)
注意:SSH到服务器时,将获得一个登录shell。因此.bashrc,默认情况下您的来源不是。Bash而是运行您的登录启动文件。这个文件在列表中的第一个现有的文件:.bash_profile,.bash_login和.profile(参见启动文件bash的文档)。如果出于某种晦涩的原因,您想在自己的环境中.bashrc而不是登录或启动文件中配置环境,则必须从后者中获取前者。
现在,如果您想以这种方式安装许多软件包,则可能需要自动化该过程。如果是这样,请查看此存储库。
TL; DR使用Miniconda,conda-forge很棒。
我已经尝试了很长时间才能使软件包管理器在CentOS上正常工作,但是没有成功。我能做的最好的事情是在另一个具有root访问权限的CentOS上的正确位置上安装一个Gentoo前缀,然后.tar.xz将整个安装过程打包到目标服务器(这是为Gentoo前缀获取适当gcc的唯一方法)。我可以emerge在目标服务器上(构建并安装)软件包,但一直遇到本地和权限问题。
我最近使用conda在用户安装了一些有趣的软件包。这是从命令行安装的方法:
curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh
Run Code Online (Sandbox Code Playgroud)
如果像我一样,您的主文件夹位于远程驱动器(网络文件系统)上,则您可能不想将其安装在主文件夹中,因此您可能想使用类似的东西,mkdir /var/tmp/lo然后在安装/var/tmp/lo/da过程中指定一个安装文件夹。
还将提示/var/tmp/lo/da/bin您在.bashrc中的PATH中添加例如说,但是,当您SSH进入服务器时,您将获得一个登录shell,因此.bashrc默认情况下不提供您的登录shell 。因此,你需要用你的.bash_profile/ .bash_login/ .profile(见启动文件bash的文件),以增加该行或将您的来源.bashrc。
这样,您就可以安装很多软件包,尽管可能不是您想要的所有软件包。在大多数情况下,如果它不在默认频道中,它将在中conda-forge。您可以在以下位置检查现有软件包https://anaconda.org/search?q=
conda install gccconda install zlibconda install makeconda install cmakeconda install gitconda install -c conda-forge fishconda install -c ActivisionGameScience zshconda install -c conda-forge tmux
da/lib文件夹并进行符号链接来解决此问题ln -sT libtinfow.so.6.1 libtinfo.so.6我在conda之后尝试使用的其他软件包管理器:
我以为有了它,安装homebrew(linuxbrew)会很容易,但是它们的源代码很杂乱,并且使用硬编码的绝对路径访问ruby解释器,但失败了,因为它不是最新版本,依此类推,依此类推,我给了起来
Nix仍然要求您使用/ nix文件夹。他们也对其进行了硬编码,并且很难在安装过程中每次下载都正确地对其进行加密(更不用说更新了)。
我希望现在我们可以在目标服务器上使用gcc,因此Gentoo Prefix可以更容易直接安装。-好的,我尝试但在安装过程中遇到权限错误(2018-09-28):
portage.exception.OperationNotPermitted: chown(b'~/gentoo/tmp/var/tmp/portage/sys-apps/gentoo-functions-0.12/image/var', 2000, 2000)
Run Code Online (Sandbox Code Playgroud)
我现在要尝试pkgsrc。-如果在CentOS 6上或如果7.x版本遇到(G)LibC版本问题,请使用(旧)版本的64位EL6.x。-没有运气,pkgsrc硬代码/usr/pkg/sbin和/usr/pkg/bin。因此,除非设置了fakechroot环境,否则它不能用作用户。但是我从来没有做过,我期望可用性问题。
如果您成功安装了其他软件包管理器,请发表评论/回答。
| 归档时间: |
|
| 查看次数: |
22001 次 |
| 最近记录: |