是否可以在 Linux(特别是 CentOS)中使用 RPM 或 YUM 或任何其他包管理器来安装已下载的包或从 repo 安装到自定义位置而无需管理员/root 访问权限?
我尝试从源代码构建,使用 cmake、configure、make、make install 等,但是,它最终一个接一个地拥有如此多的依赖项。
或者有没有更好的选择?
原文由 user3330840 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否可以在 Linux(特别是 CentOS)中使用 RPM 或 YUM 或任何其他包管理器来安装已下载的包或从 repo 安装到自定义位置而无需管理员/root 访问权限?
我尝试从源代码构建,使用 cmake、configure、make、make install 等,但是,它最终一个接一个地拥有如此多的依赖项。
或者有没有更好的选择?
原文由 user3330840 发布,翻译遵循 CC BY-SA 4.0 许可协议
TL;DR 使用 Miniconda,conda-forge 很棒。
curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh
或者,或者:
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh > Miniconda.sh
bash Miniconda.sh -b -p ~/conda
# -b is used to specify that this is done "in batch", so skip the EULA prompt
# -p lets you specify where you want conda installed
常用包:
conda install gcc
conda install zlib
conda install make
conda install cmake
conda install git
conda install -c conda-forge fish
conda install -c ActivisionGameScience zsh
conda install -c conda-forge tmux
da/lib
文件夹和符号链接 ln -sT libtinfow.so.6.1 libtinfo.so.6
来解决它其余的,您可以尝试 https://anaconda.org/search?q=
。
我已经尝试了很长时间让包管理器在 CentOS/RedHat 上运行良好,但没有成功。我能做的最好的事情是在另一个具有 root 访问权限的 CentOS 上的正确位置安装一个 Gentoo 前缀,然后将整个安装的 .tar.xz
scp 到目标服务器(这是为 Gentoo 获得正确 gcc 的唯一方法字首)。我可以在目标服务器上 emerge
(构建和安装)软件包,但一直遇到本地人和权限问题。
我最近使用 conda 实现了一些有趣的软件包的用户安装。以下是如何从命令行安装它:
curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh
如果像我一样,您的主文件夹托管在远程驱动器(网络文件系统)上,您可能不想将其安装在主文件夹中,因此您可能想使用类似 mkdir /var/tmp/lo
然后指定在安装过程中安装文件夹,如 /var/tmp/lo/da
。
然后,您将能够安装相当多的软件包,尽管可能不是所有您想要的。大多数时候,如果它不在默认频道中,它将在 conda-forge
中。您可以在 https://anaconda.org/search?q=
检查现有包
我在 conda 之后尝试使用的其他包管理器:
我认为这样安装自制软件(linuxbrew)会很容易,但是它们的源代码很乱,并且使用硬编码的绝对路径到 ruby 解释器,它失败了,因为它不是最后一个版本等等等等,我给了向上。
Nix 仍然要求您使用 /nix 文件夹。他们也对其进行了硬编码,并且很难从安装期间必须执行的每次下载中正确地对其进行 sed(更不用说更新了)。
我希望 Gentoo Prefix 更容易直接安装,因为我们可以在目标服务器上使用 gcc。 – 好的,我试过了,但在安装过程中遇到了权限错误(2018-09-28):
portage.exception.OperationNotPermitted: chown(b'~/gentoo/tmp/var/tmp/portage/sys-apps/gentoo-functions-0.12/image/var', 2000, 2000)
我现在要试试 pkgsrc 。 -- 如果在 CentOS 6 上或在 7.x 版本中遇到 (G)LibC 版本问题,请使用(较旧的)版本 64 位 EL 6.x。 – 不走运,pkgsrc 硬编码 /usr/pkg/sbin
和 /usr/pkg/bin
。所以它不能作为用户使用,除非可能设置一个 fakechroot 环境。但我从来没有这样做过,我预计会出现可用性问题。
如果您成功安装任何其他包管理器,请发表评论/回答。
原文由 loxaxs 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答2.8k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
2 回答1.4k 阅读
2 回答1.1k 阅读✓ 已解决
3 回答1.7k 阅读
1 回答1.1k 阅读✓ 已解决
可以使用 yum 和 rpm 在发行版的存储库中安装任何软件包。这是食谱:
查找包名
使用
yum search
。下载
使用
yumdownloader
下载软件包及其所有依赖项(默认情况下在 CentOS 上可用)。您需要传递它--resolve
以获得依赖关系解析。yumdownloader
下载到当前目录,除非您指定--destdir
。选择前缀位置
它可能是
~
、~/centos
或~/y
。如果你家因为在网络文件系统上而速度慢,你可以把它放在/var/tmp/...
中。提取所有 .rpm 包
将所有 .rpm 包提取到您选择的前缀位置。
rpm2cpio
将 .rpm 文件作为 .cpio 存档输出到标准输出。cpio
从标准输入读取-i
表示解压(到当前目录)-d
表示创建缺失目录您可以选择使用
-v
:详细配置环境
您需要配置环境变量
PATH
和LD_LIBRARY_PATH
以使安装的软件包正常工作。这是我的~/.bashrc
中的相应示例:编辑注释(感谢@AmitNaidu 指出我的错误):
根据 关于启动文件的 bash 文档,当通过 ssh 连接到服务器时,只有 .bashrc 来源:
现在,如果您想以这种方式安装大量软件包,您可能希望自动化该过程。如果是这样,请查看 此存储库。
额外说明:如果您尝试安装任何
gcc, zlib, make, cmake, git, fish, zsh or tmux
,您应该真正考虑使用 conda,请参阅 我的其他答案。