windows下使用cpanm进行模块安装
要放假了,突然想整理一下手头上的软件,突然发现perl的安装模块这个功能不能用。
弄了一下,使得windows 下 perl 的 cpanm能用,避免成天为了依赖痛苦。
软件版本:#理论上此方法所有版本通用
windows8.1 64bit
Active-perl v5.22.1 64bit
dmake 4.12.2.2
cpanm 1.7040
1. 下载
1)perl:
https://www.perl.org/get.html #比较简单不再赘述。
2)dmake:
http://mirrors.163.com/cpan/authors/id/S/SH/SHAY/dmake-4.12.2.2.zip
3)cpanm(App::cpanminus):
http://mirrors.163.com/cpan/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.7040.tar.gz
注意了,当前我下载的版本分别是 4.12.2.2 和 1.7040 ,随着时间推移,可能版本有更新,将上述路径红色部分去掉,浏览器打开,然后搜索对应的模块名称来下载即可。
2. 安装perl并添加环境变量(exe文件里面有提示添加,可以在那里添加即可,假设Perl安装路径是D:/Perl64)。
3. 将dmake-4.12.2.2.zip解压,把 startup 文件夹和 dmake.exe 文件放入D:/Perl64/bin
4. 解压App-cpanminus-1.7040.tar.gz 到任意目录,cmd窗口进入,输入如下命令:
perl Makefile.PL
dmake test
dmake install
上面这命令和在linux下的一样啦,只不过linux下是用gcc的make
5. 已经能用的了:
cpanm Net::SMTP::TLS
6. 运行上述命令的时候是不是报错啦?
D:/tools/perl>cpanm Net::SMTP::TLS
--> Working on Net::SMTP::TLS
Fetching http://www.cpan.org/authors/id/A/AW/AWESTHOLM/Net-SMTP-TLS-0.12.tar.gz... FAIL
! Download http://www.cpan.org/authors/id/A/AW/AWESTHOLM/Net-SMTP-TLS-0.12.tar.gz failed. Retrying ...
! Download http://www.cpan.org/authors/id/A/AW/AWESTHOLM/Net-SMTP-TLS-0.12.tar.gz failed. Retrying ...
! Download http://www.cpan.org/authors/id/A/AW/AWESTHOLM/Net-SMTP-TLS-0.12.tar.gz failed. Retrying ...
! Failed to download http://www.cpan.org/authors/id/A/AW/AWESTHOLM/Net-SMTP-TLS-0.12.tar.gz
! Failed to fetch distribution Net-SMTP-TLS-0.12
别急,这是因为你在大天朝帝国,幸好我们天朝也是有好人的:163和sohu的镜像站:http://mirrors.163.com/cpan、http://mirrors.sohu.com/CPAN/
使用cpanm的时候指定镜像站点就好了:
cpanm --mirror http://mirrors.163.com/cpan Net::SMTP::TLS
附加. 第6点实际上已经结束了的,但是我不能每次都这么搞啊,虽然163很可爱,但是也不能每次都输入一遍啊。
windows又没有alias,咋办?
简单的办法:
在D盘新建文件夹 bin ,在D:/bin 下新建文件:cpanm163.bat (注意名字一定要和cpanm区分开,不然会死循环),内容:
cpanm --mirror http://mirrors.163.com/cpan %1%
然后很重要的一点来了。
系统变量里面,默认是 D:/Perl64/site/bin;D:/Perl64/bin; 在最前面的(真流氓),我们在这个前面加上D:/bin;
就能将自己的程序优先执行了。
C:/Users/Administrator>cpanm163 Net::SMTP::TLS
C:/Users/Administrator>cpanm --mirror http://mirrors.163.com/cpan Net::SMTP::TLS
Net::SMTP::TLS is up to date. (0.12)
同理还能在ls.bat 文件 里面使用dir %1%来模拟linux的ls命令(当然,这个只是模拟,实际上功能不对滴) 。