루트가 아닌 사용자로 CPAN을 어떻게 사용할 수 있습니까?
루트 액세스 권한이없는 공유 서버에 Perl 모듈을 설치하고 싶습니다. 어떻게 할 수 있습니까? 그들은 또한 CPAN의 이전 버전을 가지고있는 것 같습니다 (명령을 실행할 때 불평 함), 루트 액세스없이 내 계정에서 사용중인 CPAN 명령을 업데이트 할 수 있습니까?
지금까지 찾은 가장 쉬운 방법은
wget -O- http://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib
eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`
echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile
echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile
이것은 귀하의 프로필 이름이라고 가정 하고 , 등 .profile
으로 변경해야 할 수도 있습니다 . 그 후에 다음과 같이 말하여 모듈을 설치할 수 있습니다..bash_profile
.bashrc
cpanm Module::Name
루트 디렉토리에 설치된 경우와 동일한 방식으로 사용하면됩니다.
다음은 위의 명령이 수행하는 작업에 대한 간략한 설명입니다.
wget -O- http://cpanmin.us
의 최신 버전을 가져 cpanm
와서 인쇄 STDOUT
한 다음 perl - -l ~/perl5 App::cpanminus local::lib
. 먼저 -
이야기 perl
에 올 수있는 프로그램이 기대하는 STDIN
,이 차종은 perl
버전 실행 cpanm
우리 방금 다운로드합니다. perl
나머지 인수를 cpanm
. -l ~/perl5
인수는 말한다 cpanm
펄 모듈을 설치하고 다른 두 개의 인수를 설치하는 두 개의 모듈이 위치를. [App::cpanmins
] 1 은를 설치하는 패키지입니다 cpanm
. local::lib
로컬 디렉토리에서 모듈을 실행하는 데 필요한 환경 변수를 관리하는 도우미 모듈입니다.
해당 모듈이 설치된 후
eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`
로컬 모듈을 사용하는 데 필요한 환경 변수를 설정 한 다음
echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile
다음에 로그인 할 때 사용할 수 있도록합니다.
echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile
사람이 로컬 모듈에 대한 매뉴얼 페이지를 찾도록 할 것입니다.
http://novosial.org/perl/life-with-cpan/non-root/
두 명령어 세트의 주요 단계에는 local :: lib 모듈이 포함됩니다.
AFAIK, CPAN 로직은 Perl 모듈 (CPAN.pm)에 포함되어 있으므로 다른 Perl 모듈과 마찬가지로 로컬 디렉토리에 최신 로직을 쉽게 설치할 수 있습니다.
또한 비표준 위치에 모듈을 설치 한 후에는 비표준 위치에서 라이브러리를로드하는 방법에 대한 다음 두 가지 질문을 확인하십시오 (일부 정보는 위 링크에서 이미 사용 가능).
Perl 프로그램이 사용하는 Perl 모듈이 포함 된 파일을 찾을 위치를 어떻게 알 수 있습니까?
Perl의 @INC는 어떻게 구성됩니까? (일명 Perl 모듈이 검색되는 위치에 영향을 미치는 모든 방법은 무엇입니까?)
완전성을 위해 이것은 cpanm
OSX perl5
에서 ~/Library
.
curl -L http://cpanmin.us | perl - -l ~/Library/perl5 App::cpanminus local::lib
eval `perl -I ~/Library/perl5/lib/perl5 -Mlocal::lib=~/Library/perl5`
echo 'eval `perl -I ~/Library/perl5/lib/perl5 -Mlocal::lib=~/Library/perl5`' >> ~/.bash_profile
cpanminus가 설치된 모듈에 대한 매뉴얼 페이지도 읽을 수 있도록하려면 선택한 라이브러리 경로의 올바른 하위 디렉토리가 MANPATH에 있는지 확인해야합니다. 따라서 cpanm의 설치 프로세스를 보여주는 위의 솔루션에는 다음과 같은 추가 명령이 필요합니다.
export MANPATH=$HOME/Library/perl5/man:$MANPATH' >> ~/.bash_profile
실제로 위의 답변을 복사하여 붙여 넣은 것이지만 재사용 가능한 단일 bash 스크립트입니다.
#! /usr/bin/env bash │··
│··
# a bash wrapper for check-installing required perl modules as non-root
main(){ │··
doSetVars │··
doCheckInstallPreReqs │··
perl $PRODUCT_INSTANCE_DIR/src/perl/my-perl-script.t │··
} │··
│··
doSetVars(){ │··
#set -x │··
umask 022 ; │··
set -u -o pipefail │··
run_unit_bash_dir=$(perl -e 'use File::Basename; use Cwd "abs_path"; print dirname(abs_path(@ARGV[0]));' -- "$0") │··
export PRODUCT_INSTANCE_DIR=$run_unit_bash_dir/../.. │··
} │··
│··
doCheckInstallPreReqs(){ │··
eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib` │··
perl -e ' │··
use JSON ; │··
use Data::Printer; │··
use Test::Most ; │··
use Test::Mojo; │··
use Data::Printer ; │··
use FindBin; │··
use JSON::Parse ; │··
use IPC::System::Simple ; │··
use Mojolicious ; │··
' || { │··
curl -L http://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib │··
eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib` │··
echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.bashrc │··
cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) │··
export PERL_MM_USE_DEFAULT=1 │··
cpanm JSON Data::Printer Test::Most Test::Mojo Data::Printer FindBin JSON::Parse \ │··
IPC::System::Simple │··
sudo curl -L cpanmin.us | perl - Mojolicious │··
} │··
│··
} │··
│··
main
참고 URL : https://stackoverflow.com/questions/2980297/how-can-i-use-cpan-as-a-non-root-user
'your programing' 카테고리의 다른 글
MySQL : 필드 크기 / 길이로 정렬 (0) | 2020.10.16 |
---|---|
인수를 VBScript (cscript로 시작된 VBS 파일)에 전달할 수 있습니까? (0) | 2020.10.16 |
명령 프롬프트를 통해 휴지통을 비우는 방법은 무엇입니까? (0) | 2020.10.16 |
OS X에서 내 $ PATH 변수의 현재 값을 어떻게 볼 수 있습니까? (0) | 2020.10.16 |
Go 용 웹 서버 앞에서 Nginx를 사용하면 어떤 이점이 있습니까? (0) | 2020.10.16 |