普通用戶沒有root許可權,如何在自己的home目錄安裝Perl模塊?

在Mac Book Pro上,有Perl,但是沒有root許可權。運行腳本的時候,需要安裝模塊。怎麼安裝?


1. 創建perl模塊文件夾

在自己目錄內創建文件夾,請根據情況,將home替換成自己的路徑

/home/perl_modules/bin
/home/perl_modules/man
/home/perl_modules/man/man1
/home/perl_modules/lib

2. 設置配置文件

touch perl_local_config

內容為:

PREFIX=/home/perl_modules
INSTALLSCRIPT=/home/perl_modules/bin
INSTALLBIN=/home/perl_modules/bin
INSTALLMAN1DIR=/home/perl_modules/man1
INSTALLSITELIB=/home/perl_modules/lib

這些安裝時會用,寫成文件,省時。

3. 下載模塊,測試模塊

* 下載模塊,如: http://search.cpan.org/CPAN/authors/id/M/MA/MAKAMAKA/JSON-2.90.tar.gz

* 解壓,進入模塊目錄。

4. 修改Makefile.PL配置

常規安裝步驟:

perl Makefile.PL
make
make test
make install(如果測試成功)

因為沒有root許可權,所以要替換

perl Makefile.PL

perl Makefile.PL `cat perl_local_config`

5. 安裝模塊

perl Makefile.PL `cat perl_local_config`
make
make test

當所有測試都已經成功後,安裝模塊

make install

  • 以下命令測試是否成功安裝

cpan -I JSON

6. 使用模塊

雖然JSON模塊已安裝,但此時運行腳本,仍會報錯

Can"t locate JSON.pm in @INC (@INC contains: XXXXX......XXXXX) at /home/bin/your_perl_module line XX.

perl還需加入新目錄支持

export PERL5LIB=/home/perl_modules/lib:$PERL5LIB

7. 保證每次開機都可以使用

將export PERL5LIB=/home/perl_modules/lib:$PERL5LIB,加入~/.bash_profile文件

echo "export PERL5LIB=/home/perl_modules/lib:$PERL5LIB" &>&> ~/.bash_profile

  • 如果.bash_profile沒有存在,使用touch ~/.bash_profile創建。

8.在crontab實現調用

如果perl腳本是要在crontab下用,需要把export PERL5LIB=/home/perl_modules/lib:$PERL5LIB加入crontab,如:

*/5 * * * * cd /Users/fox/Documents/fm /usr/bin/perl xxx.pl

改成

*/5 * * * * export PERL5LIB=/home/perl_modules/lib:$PERL5LIB cd /Users/fox/Documents/fm /usr/bin/perl xxx.pl

參考:

How to Install A Perl Module In Linux Without Root Permission

crontab -e配置後為什麼無法保存?

crontab內設置失敗後,怎麼找原因?

哪裡有簡單明了的crontab格式說明?


perlbrew + cpanm


plenv + cpanm 用的很爽。


你可以自己compile一個perl。在配置的時候,把prefix指定到你能控制的目錄里,這樣得到的perl是完全受你控制的。


強烈推薦cpanm 誰用誰知道,

科學網—如何製作cpan的本地鏡像


推薦閱讀:

Ubuntu 系統下有哪些整理硬碟的工具?
如何正確為 Noto Sans CJK 配置 fontconfig 使中文不會被顯示為日文字型?
Mir 和 Wayland 等 X11 替代品,相比 X11 有哪些具體的優點?
為什麼 Linus Torvalds 不願意將 Linux 變成 GPLv3 授權?
Linux 當中選擇的軟體包 i386 和 i686 有和區別?

TAG:Mac | Linux | Perl | Perl模塊 |