배포판 (칼리)이 올바로 설정되어 있다면 상황이 스스로 처리되어야합니다 (그렇지 않은 경우). 즉, kali가 perl
으로 업그레이드했다면, 다양한 perl 모듈 패키지 (그 중 하나 인 Moose
)를 다시 빌드해야합니다.
또는 ... Moose
는 배포판에서 설치 결코했지만, (예를 들어, 어떤 사람의 일환으로) CPAN
에서 설치되었다.
또 다른 방법은 cpan
을 호출하고 거기에서 Moose
패키지를 다운로드, 다시 작성 및 설치하는 것입니다. 찾기 위해
것은 현재 Moose
가 perldoc -lm Moose
을 수행하여 (예를 들어, /usr/lib64/...
또는 /usr/local/lib64/...
등)에 설치되어있는 장소를 찾는 것입니다. 이 경우 디렉토리를 설치하는 데 cpan
을 구성하는 데 도움이 될 수 있습니다.
는 UPDATE :
혼자 무스를 다시 CPAN을 사용하는 방법을 찾을 수 없습니다, 나는 또한 다운로드하려고 -c, -m과 함께 "CPAN 무스를"(시도 그리고 -g를 사용하여 설치, 아무 것도 작동하지 않음) 그래서 설치된 모든 모듈을 업데이트하기 위해 cpan -u를 실행했습니다. 그 후에도 문제가 지속됩니다. 배포판 패키지 (예를 들어 칼리 포)와 CPAN
패키지 :
패키지 두 가지 유형이있다. 주어진 펄 모듈이 배포판에서 설치 되었다면 cpan
이 그것을 업데이트하려고 시도하지 않을 것입니다. 우리가해야 할 일은 cpan
에서 까지 (CPAN
에서)을 설치하는 것입니다.
cpan
을 사용할 때 나는 보통 /full_path_to/perl -MCPAN -e shell
입니다. 전체 경로를 사용하는 이유는 여러 다른 perl 버전이 설치되어 있기 때문입니다. 내가 가진 이유에 대한 배경 지식이 프롬프트에서, 나는 보통 install Moose
그런 짓을, 내 대답은 그 후 https://serverfault.com/questions/741186/cpan-is-using-old-perl-version-to-install-modules/741216#741216
를 참조 [와 그들을 가지고했다]. 패키지 의존성을 찾을 것이고 일반적으로 모두에게 예라고 말합니다.
cpan
은 몇 가지 다른 설치 모드를 허용합니다. 특히 시스템 전체 (즉, 사용자는 sudo
)를 설치하거나 $ HOME 디렉토리 아래의 서브 디렉토리에 설치하십시오. 이렇게하면 루트가 아닌 사용자가 로컬 시스템 관리자가 설치를 허용하지 않을지라도 CPAN 모듈을 설치할 수 있습니다. /usr/lib64/...
자세한 내용은 을 참조하십시오. 특히 관심 대상은 $HOME/.cpan/CPAN/MyConfig.pm
입니다. 해당 텍스트 파일에서 설치 관련 정보 (예 : 'make_install_make_command' => q[sudo /usr/bin/make]
)를 찾으십시오. 그것에는 sudo
이있을 수도 있고 없을 수도 있습니다. 거기에 몇 가지 다른 유사한 옵션이 있습니다 (mbuild_install_build_command
). 그들이 sudo
을 가지고 있지 않다면, 은 수작업으로 파일을 편집 할 수 있습니다.
여기까지 조금 더 살펴 보겠습니다. 하지만 먼저 uniscan
을 strace
아래로 실행해야합니다. 상황이 어떻게 구성되고, 버전이 지정 되더라도, 이것은 진행되고있는 일을 기록 할 것입니다. 여기에 내가 strace
에게 추천하려는 옵션이있는 스크립트는 다음과 같습니다
strace -ttt -i -f -ff -etrace=all -o /anyplace/log/whatever.spysys \
-eread=0,1,2,3,4,5,6,7,8,9,10 -ewrite=0,1,2,3,4,5,6,7,8,9,10 \
-eread=11,12,13,14,15,16,17,18,19,20,21 \
-ewrite=11,12,13,14,15,16,17,18,19,20,21 \
-eread=22,23,24,25,26,27,28,29,30,31,32 \
-ewrite=22,23,24,25,26,27,28,29,30,31,32 \
-eread=33,34,35,36,37,38,39,40,41,42,43 \
-ewrite=33,34,35,36,37,38,39,40,41,42,43 \
-eread=44,45,46,47,48,49,50,51,52,53,54 \
-ewrite=44,45,46,47,48,49,50,51,52,53,54 \
-eread=55,56,57,58,59,60,61,62,63,64,65 \
-ewrite=55,56,57,58,59,60,61,62,63,64,65 \
-eread=66,67,68,69,70,71,72,73,74,75,76 \
-ewrite=66,67,68,69,70,71,72,73,74,75,76 \
-eread=77,78,79,80,81,82,83,84,85,86,87 \
-ewrite=77,78,79,80,81,82,83,84,85,86,87 \
-eread=88,89,90,91,92,93,94,95,96,97,98 \
-ewrite=88,89,90,91,92,93,94,95,96,97,98 -eread=99 -ewrite=99 -x \
/usr/bin/whatever
시스템에 적합한 무언가로 /anyplace/...
를 교체합니다. /usr/bin/whatever
을 uniscan
명령으로 바꾸십시오. 당신이 일반적으로 루트로 uniscan
을 실행하면 strace
이러한 옵션은 출력의 많은를 생성하는 것을 sudo
참고로 strace
를 앞에 수 있지만 금품을 두지 마십시오. 결국 uniscan
명령은 [이미 경험 한대로] 중단되지만, 이제 strace
출력에 이유가 있습니다.
특히 로그 출력을 살펴보면 오류가있는 Moose.so
의 정확한 전체 경로를 찾을 수 있습니다.즉, perl
은 무스 관련 파일을 열어 (성공적으로) 곧 실패 메시지를 stderr로 출력합니다. moose 파일은 /usr/lib64/...
이거나 또는 /usr/local/lib64/...
과 같이 완전히 이상한 곳이거나 심지어 낯선 사람 /usr/lib64/uniscan/lib/Moose/...
일 수 있습니다. 그러나 이것은 이제 우리에게 을 말해줍니다.은 무스를 다시 빌드하고 설치하려고합니다.
참고 : 여러분도 알다시피, 내 원래의 대답은 편집있어 [pedantically] 문법,하지만, 실질적으로 [I가 승인하지 않았다] find
를 사용하여 내 추천을 대체합니다.
어쨌든 cpan
및 strace
항목을 일치시킵니다. cpan
을 사용할 때 "설치를 $HOME/...
"모드로 실행했을 수 있습니다.이 모드는 IIRC가 기본값입니다. 따라서 그러한 경우 (예 : MyConfig.pm
체크) 원하는 시스템 전체 디렉토리가 아닌 홈 디렉토리 아래에서 업데이트 된 패키지를 찾을 수 있습니다. 따라서 이것을 확인하는 데 도움이되도록 find $HOME -name '*Moose*'
을 실행하고 무슨 일이 일어나는지 확인하십시오.
는 그래서, strace
파일 이름에 따라, 파일 에 타임 스탬프 당신이 당신의 cpan
명령을 한 시간과 일치한다. 그러나, 나는 그들이하지 않을 것이라는 점을 확신하고있다.
$HOME/.cpan
에는 하위 디렉토리 $HOME/.cpan/build
이 있습니다. 이것은 cpan
명령이 패키지 파일을 다운로드하여 저장하는 위치입니다. 또한 패키지를 빌드합니다. cpan
호출에 무스가 적용된 경우 파일과 디렉토리가 *Moose*
이어야합니다.
"나쁜"패키지 인 IIRC가있을 때마다 $HOME/.cpan/build
(및 일부 종속 패키지)에서 제거한 다음 install
을 다시했습니다. 상황이 재발견되고 재건되고 재설치됩니다. 그것에서 사슴 파일을 가지고 어디에 strace
에서
우리는 지금 는 통역을 펄가 (아마 /usr/bin/perl
)을 사용 하였다 알고있다. moose 파일은 @INC
디렉토리 중 하나에 있어야합니다. 그렇다면, 괜찮아. 그렇지 않다면 uniscan
의 "wrapper"스크립트가 strace에 대한 비표준 경로를 설정하고 있다는 것을 의미합니다. strace를 수행하는 이유입니다.이 것을 확인하거나하지 않습니다.
그런 다음 필요한 경우 MyConfig.pm
을 수정하십시오. 그것이 sudo
이 빠진 경우, 그게 전부일지도 모릅니다. 그런 다음 install Moose
을 수행하십시오.
원할 경우 $HOME/.cpan/build
을 먼저 제거 할 수 있습니다.
다른 빌드의 Perl로 설치된 Perl 빌드가있는 모듈을 사용하는 것처럼 보입니다. 'PERL5LIB' 환경 변수는 아마도 어딘가에있는 것을 가리킬 것입니다. – ikegami