如何手动安装Redis perl库,即离线。从哪里可以获得所有安装依赖项

时间:2017-06-14 10:48:45

标签: perl redis perl-module cpan nagios

我正在尝试安装check_redis插件,为此我需要redis perl库,但我无法访问CPAN和internet.So有没有办法安装下载zip文件和所有依赖项。我是使用nagios核心。Here is the plugin i am trying to install

4 个答案:

答案 0 :(得分:2)

因为我在工作中遇到了类似的问题,所以我碰巧在这个主题上写了我的个人问答。这是:

Q: How to install CPAN modules without Internet access?
A: 1. Install CPAN::Mini on the internet machine:
          $ cpan CPAN::Mini
   2. Find a CPAN mirror here: http://mirrors.cpan.org/#de
          e.g. http://ftp.hosteurope.de/pub/CPAN/
   3. on the internet machine:
          $ minicpan -l /path/to/local/cpan/mirror -r http://ftp.hosteurope.de/pub/CPAN/
   4. Copy /path/to/local/cpan/mirror to the non-internet machine (or mount it)
   5. On the non-internet machine add the directory to CPAN's search path:
          $ cpan
              cpan shell -- CPAN exploration and modules installation (v1.xxxx)
            cpan> o conf urllist unshift file:///path/to/local/cpan/mirror
            cpan> o conf commit
            commit: wrote /home/user/.cpan/CPAN/MyConfig.pm
   6. Install as usual on the non-internet machine.

要更新您的CPAN镜像,请转到您的互联网设备并重复步骤3和4.

参考文献:

一些注释

虽然CPAN说初始镜像只占用大约1 GB,但它需要大约3.5 GB。我认为他们的文件在这方面已经过时了。

镜像最初将在CPAN上包含最新版本的所有模块。每次更新镜像时,都会下载最新版本(将旧版本保留在磁盘上),因此随着新版本的到来,镜像将随着每次更新增长

我更新了我的镜子三到四次,它现在有3.9 GB。

答案 1 :(得分:1)

当然,你可以手动安装东西,但这会很痛苦。

您可以从CPAN下载Redis distribution tarball。但它可能需要您尚未安装的其他模块。您可以在其META.yml文件中查看其要求列表。因此,您也可以为每个模块下载分发tar包。但是,当然,每个模块都可能需要您没有的其他模块。所以你可以查看他们所有的META.yml文件。它继续......

老实说,弄清楚机器暂时连接到互联网有多困难可能更容易: - )

答案 2 :(得分:0)

您可以使用App::FatPacker将无法安装的所有依赖项解压缩到check_nagios.pl中。我将概述如何做到这一点。

首先,让我们确保the Nagios plugin拥有允许我们执行此操作的许可。

  

该程序是免费软件;您可以重新分发和/或修改   它是根据GNU通用公共许可证的条款发布的   自由软件基金会;许可证的第2版,或   (根据您的选择)任何更高版本。

好的,那很棒。我们允许改变来源。现在让我们克隆它,这样我们就可以了。

$ git clone git@github.com:willixix/WL-NagiosPlugins.git
$ cd WL-NagiosPlugins

现在我们需要将App :: FatPacker安装到我们的本地Perl。我们需要在一台机器上做这件事,从互联网上安装东西不是问题。您可以在用于编写问题的机器上执行此操作。

$ cpanm App::FatPacker

之后,我们还需要安装所有依赖项。我们知道这需要Redis,所以

$ cpanm Redis

现在,您通常需要做的就是运行fatpack pack命令,但这会打包所有内容。我们并不真的需要它。毕竟我们在目标系统上有核心模块。所以我们将一步一步地做到这一点。

首先,我们需要告诉fatpack找到所有依赖项。

$ fatpack trace check_redis.pl

这将创建一个fatpacker.trace文件。

$ cat fatpacker.trace 
IO/Handle.pm
Data/Dumper.pm
IO.pm
bytes.pm
Socket.pm
overload.pm
vars.pm
Redis/Sentinel.pm
lib.pm
Symbol.pm
Redis.pm
IO/Select.pm
PerlIO/via/Timeout.pm
base.pm
Scalar/Util.pm
fields.pm
IO/Socket/UNIX.pm
DynaLoader.pm
constant.pm
overloading.pm
Errno.pm
Getopt/Long.pm
warnings/register.pm
Carp.pm
IO/Socket.pm
SelectSaver.pm
Exporter/Heavy.pm
IO/Socket/Timeout.pm
List/Util.pm
Sub/Util.pm
Fcntl.pm
Time/HiRes.pm
IO/Socket/INET.pm
Try/Tiny.pm
Config.pm
Text/ParseWords.pm

我建议删除看起来像核心模块的所有内容。通过将/替换为::并删除.pm,然后将其传递到目标上附带Perl的corelist实用程序,将文件名重新转换为模块名称机。所有的pragmata(以小写字母开头的)都可以忽略,它们是核心的一部分。

这是我将其剪切到我认为有意义的列表后的列表。这可能不完整或不正确,但我无法尝试使用您的计算机。该文件现在看起来像这样。

$ cat fatpacker.trace 
Redis/Sentinel.pm
Redis.pm
Try/Tiny.pm

现在我们按照RECIPES in the fatpack documentation中的说明进行操作。

$ fatpack packlists-for `cat fatpacker.trace` >packlists

packlists文件包含几个路径,用于查找这些模块的包列表。这特定于您的Perl安装。

$ fatpack tree `cat packlists`

这将创建一个目录fatlib,其中包含我们要捆绑的所有内容。

$ tree fatlib/
fatlib/
├── Redis
│   ├── Hash.pm
│   ├── List.pm
│   └── Sentinel.pm
├── Redis.pm
└── Try
    └── Tiny.pm

2 directories, 5 files

最后,我们需要运行实际的打包命令。

$ fatpack file check_redis.pl >check_redis.packed.pl

现在我们有一个名为check_redis.packed.pl的文件。如果你打开它并查看它,你会看到一个BEGIN块加载一堆东西。那些东西是你无法安装的依赖项。它们现在捆绑在脚本中。

使用Nagios将该脚本移动到计算机上,然后使用它而不是check_nagios.pl。它现在应该正常工作。

请注意,如果它有效,我实际上没有尝试过,因为我既没有Redis也没有Nagios来尝试它。但它应该有用。

答案 3 :(得分:0)

这在centOs 7中对我有用。

步骤1:在通过以下命令连接到Internet的centOs7中下载依赖项:

yumdownloader --destdir=/etc/LinuxRepos/Redis epel-release
yumdownloader --destdir=/etc/LinuxRepos/Redis jemalloc
yumdownloader --destdir=/etc/LinuxRepos/Redis epel-release

第2步:从/ etc / LinuxRepos / Redis复制下载的文件并将其复制到目标centOS 7。

第3步:通过

安装软件包
yum localinstal epel-release-7-11.noarch.rpm
yum localinstall jemalloc-3.6.0-1.el7.x86_64.rpm
yum localinstall epel-release-7-11.noarch.rpm
  

注意:步骤3中的文件名可能由于当前的最后一个而更改。   版本。