다음 시스템 서비스 파일을 이전 서버에서 새 서버로 복사하고 있습니다. 저는 Perl을 처음 접했고 서비스 파일에서 (/usr/local/assp 항목 외에) 이동해야 할 다른 항목을 이해하려고 노력하고 있습니다.
파일에 PERL5LIB= 줄이 포함되어 있는데, 그 기능이 무엇인지, 필요한지 잘 모르겠습니다. 이전 서버에는 /root/perl5/lib/perl5에 파일이 있었지만 그것이 무엇을 하는지는 잘 모르겠고 새 서버에는 이 디렉토리가 없습니다. 이전 서버는 CentOS7(perl 5.16.3)이고 새 서버는 AlmaLinux9(perl 5.32.1)입니다. 나는 이것이 호환성과 관련이 있다고 생각하지만 그것을 알아낼 수는 없습니다.
이 디렉터리를 다시 만들어야 합니까? PERL5LIB 라인을 변경해야 합니까?
[Unit]
Description=AntiSpam SMTP Proxy
After=network.target
[Service]
Type=
Environment=PERL5LIB=/root/perl5/lib/perl5/
ExecStartPre=-rm -f /usr/local/assp/pid
ExecStart=/usr/bin/perl /usr/local/assp/assp.pl /usr/local/assp/
ExecStopPost=-rm -f /usr/local/assp/pid
[Install]
WantedBy=multi-user.target
답변1
프로그램 perl
에는 다음과 같은 내용이 포함될 수 있습니다 use IO;
. 이는 언어가 모듈에 로드되도록 지시합니다.
이러한 라이브러리를 찾는 데 사용할 수 있는 기본 경로가 있습니다 perl -V
.
perl
그러나 이러한 영역 외부에 수동으로 라이브러리를 배치하는 경우(매우 일반적임) 해당 라이브러리를 찾을 위치를 알려주어야 합니다 . 이는 수정을 통해 코드 내에서 수행할 수도 있고 환경 변수(또는 해당 문제에 대한 변수)를 @INC
설정할 수도 있습니다 .PERL5LIB
PERLLIB
이를 설정하면 PERL5LIB=/root/perl5/lib/perl5/
프로그램이 이를 수행하면 기본 위치를 use xyzzy;
찾게 됩니다 ./root/perl5/lib/perl5/xyzzy.pm
새 환경에서 이 변수를 설정해야 하는지 여부는 /usr/local/assp/assp.pl
필요한 사항에 따라 다릅니다. 우리는 이 질문에 답할 수 없습니다.