我正在尝试为我们的开发过程构建一个新的Docker镜像,使用cpanm安装一堆Perl模块作为各种项目的基本映像.
在开发Dockerfile时,cpanm返回失败代码,因为某些模块没有干净地安装.
我很确定我需要apt安装更多东西.
我的问题是,在哪里可以找到/.cpanm/work输出中引用的目录,以便检查日志?在一般情况下,如何检查失败docker build命令的文件系统?
早上编辑咬了子弹然后跑了一个find我发现的
/var/lib/docker/aufs/diff/3afa404e[...]/.cpanm
Run Code Online (Sandbox Code Playgroud)
这是可靠的,还是我最好建立一个"裸"容器并手动运行东西,直到我拥有我需要的所有东西?
出于某种原因,每当我运行任何Perl模块(如cpanm)时,我都会得到这样的响应:
ListUtil.c: loadable library and perl binaries are mismatched (got
handshake key 0xdb00080, needed 0xdb80080)
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会这样.似乎没有任何额外的堆栈跟踪,即使有很多关于此错误的错误报告和问题,我也无法找到解决方案.我正在运行Ubuntu 17.04.
编辑:我正在运行Ubuntu附带的默认Perl安装.
使用pip,您可以创建需求文件以指定要安装的库.是否有使用CPAN的perl模块的等效项?
我遇到了ExtUtils :: MakeMaker,但这看起来像make文件专门用于每个模块.
我想尝试更好地了解我所问的是否有办法做某事
cpan install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
然后指定要在该需求文件中安装的模块.
提前致谢!
在我的Dockerfile中,我正在设置将在运行时安装的Perl模块,如下所示:
RUN ["cpanm", "Carp", "Carp::Heavy", "Class::Data::Inheritable"]
但是,对于一个模块,我需要一个特定版本的模块,而不是最新版本.如何在上面的行中指定该版本?
我一直在网上搜索几个小时,但还没有找到任何有用的东西.
我最近在安装一些模块时遇到了一些问题,并且我惊讶地发现许多已经安装的模块都有重复的安装和版本.试图跟踪标准(如果有这样的东西)安装使用的东西cpanm,我发现以下结果非常混乱.
报告显示了这些位置:
cpan -V:# cpan -V
/usr/bin/cpan script version 1.672, CPAN.pm version 2.22
--------------------------------------------------
Checking install dirs...
Checking core
+ /usr/share/perl5/5.26
+ /usr/lib/perl5/5.26/x86_64-cygwin-threads
Checking vendor
+ /usr/share/perl5/vendor_perl/5.26
+ /usr/lib/perl5/vendor_perl/5.26/x86_64-cygwin-threads
Checking site
+ /usr/local/share/perl5/site_perl/5.26
+ /usr/local/lib/perl5/site_perl/5.26/x86_64-cygwin-threads
Checking PERL5LIB
no directories for PERL5LIB
Checking PERLLIB
no directories for PERLLIB
Run Code Online (Sandbox Code Playgroud)
perl -V:.*site.*:# perl -V:.*site.* |column -t -s "=" |sort -d -i -k 1.22
d_sitearch 'define';
usesitecustomize 'undef';
siteprefix '/usr/local';
siteprefixexp '/usr/local';
installsitebin '/usr/local/bin';
installsitescript '/usr/local/bin'; …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Perl中编写需要多个模块的东西,但这是我第一次使用Perl而我似乎无法安装我需要的一个特定模块Archive::zip.
我使用perlbrew并使用以下命令尝试安装模块:
cpanm install Archive::zip
Run Code Online (Sandbox Code Playgroud)
这将通过命令行返回以下消息:
install is up to date. (0.01)
! Finding Archive::zip on cpanmetadb failed.
! Finding Archive::zip () on mirror http://www.cpan.org failed.
! Couldn't find module or a distribution Archive::zip
Run Code Online (Sandbox Code Playgroud)
起初我认为"安装是最新的意味着"我拥有它,但是我试图运行的任何需要该模块的东西都告诉我它已经丢失了.我认为之后的消息意味着它找不到任何安装此模块的地方,而且我似乎没有在网上任何地方发现过这个问题.如果是这种情况,我可以指定一个不同的镜像吗?
如果它可能与此相关,我目前正在使用OSX 10.10.2.
我最近安装了 XAMPP。到目前为止一切都很好,但有一件事让我无法休息:我无法通过 cpanm 获取任何模块。典型的安装日志如下所示:
cpanm (App::cpanminus) 1.6005 on perl 5.016003 built for MSWin32-x86-multi-thread
Work directory is C:\Users\2B86~1/.cpanm/work/1448496711.6352
You have LWP 6.04
You have C:\Users\boss\AppData\Local\Atlassian\SourceTree\git_local\bin\tar.exe, C:\Users\boss\AppData\Local\Atlassian\SourceTree\git_local\bin\gzip.exe and C:\Users\boss\AppData\Local\Atlassian\SourceTree\git_local\bin\bzip2.exe
You have C:\Users\boss\AppData\Local\Atlassian\SourceTree\git_local\bin\unzip.exe
Searching DateTime::Tiny on cpanmetadb ...
--> Working on DateTime::Tiny
Fetching http://www.cpan.org/authors/id/A/AD/ADAMK/DateTime-Tiny-1.04.tar.gz
-> OK
Unpacking DateTime-Tiny-1.04.tar.gz
Entering DateTime-Tiny-1.04
Checking configure dependencies from META.yml
Checking if you have ExtUtils::MakeMaker 0 ... Yes (6.64)
Configuring DateTime-Tiny-1.04
Running Makefile.PL
-> OK
Checking dependencies from MYMETA.json ...
Checking if you have ExtUtils::MakeMaker 0 ... Yes …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 cpanfile 和 cpanm 来安装大量模块。其中一个模块 Unicode::String 在 CPAN 上有一个错误,作者仅在 Github 上修复了该错误。(https://github.com/msouth/Unicode-String)
是否可以将 Github 存储库列为 cpanfile 中的要求,并从那里而不是从 CPAN 安装 cpanm?如果是这样,这样做的正确语法是什么?
我发现的最接近的是 2013 年的一条线索,宫川说它将在未来的版本中推出,然后未来的版本很脆弱并且被搁置:
https://github.com/perl-carton/carton/issues/132 (这里讨论 carton,但由于它们都使用 cpanfile,因此语法应该相同。)
在我的 mac OS X 机器上Darwin maci 15.6.0 Darwin Kernel Version 15.6.0
我已在以下自定义目录中安装了 libxml2 和 libxslt
/usr/local/MyLibs/libxml2-2.9.2
和 libxslt
/usr/local/MyLibs/libxslt-1.1.29
现在我想使用这些库来构建我的 CPANM 模块XML::LibXSLT。
这告诉我我可以使用--configure-args(它仍然是实验性的)来做到这一点。所以我做了类似的事情,
cpanm http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/XML-LibXSLT-1.94.tar.gz --configure-args="--cflags=-I/usr/local/libxslt-1.1.29/include -I/usr/include/libxml2 -I/usr/local/MyLibs/libxml2-2.9.2/include/libxml2 --libs=-L/usr/local/libxslt-1.1.29/lib -lxslt -lxml2 -lz -lpthread -licucore -lm -L/usr/local/MyLibs/libxml2-2.9.2/lib -lxml2 -lz -lpthread -liconv -lm" --force
Run Code Online (Sandbox Code Playgroud)
但是,构建日志表明它没有使用我的自定义位置中安装的库。
我是否有什么做得不正确的地方?
cpanm ×10
perl ×8
cpan ×5
docker ×2
cygwin ×1
debugging ×1
dockerfile ×1
github ×1
module ×1
perl-module ×1
ubuntu ×1
xml-libxml ×1