我正在尝试安装check_redis插件,为此我需要redis perl库,但我无法访问CPAN和internet.So有没有办法安装下载zip文件和所有依赖项。我是使用nagios核心。Here is the plugin i am trying to install
答案 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中的文件名可能由于当前的最后一个而更改。 版本。