실수로 모든 Perl 모듈을 설치 취소하려면 어떻게합니까?


8

CPAN을 통해 Perl 모듈을 업그레이드하려고했지만 업그레이드 할 정규식 / 모듈 이름을 제공하지 않았습니다 perl -MCPAN -e 'upgrade'. perldoc perllocalCPAN의 모든 Perl 모듈이 설치 되고있는 최악의 상황 (출력으로 지원되는 것) 만 가정 할 수 있습니다 .

이 혼란을 어떻게 취소 할 수 있습니까? 나는 제거 할 수 있다고 생각 /usr/local/share/perl하지만 그 의미는 무엇입니까?

편집 : 여전히 하드 드라이브에 95 %의 여유 공간이 있으므로 큰 문제는 아닙니다. 나는 불필요한 많은 혼란을 원하지 않습니다. 나는 rm그 디렉토리를 사용하고 CPAN 설치 프로세스를 수행 dpkg --purge perl하고 다시 하는 것을 고려 하고 apt-get있습니다. 그러나 실제로 필요 /usr/local/share/perl합니까? 아니면 불필요한 모듈을 제거 할 수 있습니까?


어떤 사람들은 시스템 파일과 폴더를 직접 삭제 하는 것이 좋지 않다고 생각 합니다. apt-get시스템이 완전히 삭제하고 필수 데이터베이스를 업데이트하도록 또는 Synaptic 과 같은 것을 사용하는 것이 좋습니다 .

4
CPAN에 설치된 @ vasa1 Perl 모듈은 그렇게 추적되지 않습니다. 모듈이있는 디렉토리를 삭제해야합니다. 또는 CPAN을 통해 수동으로 삭제해야하며 설치 제거 지시문 또는 make uninstall명령을 준수 할 경우 cr * pshoot 입니다. 불행히도 완전히 다른 패키지 관리 시스템입니다. stackoverflow.com/questions/2626449/…
Kevin Bowen

@maggotbrain, 감사합니다! 나는 몰랐다. (작은 일에 사용하는 유일한 Perl은 OS와 함께 제공됩니다.)

답변:


5

좀 더 자세히 살펴보면 시스템의 디렉토리 또는 파일을 삭제 해야하거나 삭제 해야한다고 생각하지 않습니다 .

perl -MCPAN -e 'upgrade'명령 행에서 명령 을 실행하면 시스템에 추가 모듈이 설치 되지 않습니다 .

그것은 것입니다 CPAN 패키지 관리 시스템을 통해, 설치된 모듈을 업그레이드하려고 하지 시냅스를 통해 .

이는 'r'명령을 실행 한 다음 cpan[1]>프롬프트 에서 upgrade 명령을 실행하는 것과 유사 합니다. 여기를 참조 하십시오 .

CPAN과 Synaptic은 별개의 두 가지 패키지 관리 시스템입니다.

되지 않습니다 CPAN에서 가능한 모든 펄 모듈을 설치합니다. 기존 시스템 패키지 dB도 수정하지 않습니다. 따라서이를 안전하게 롤백 할 수 있습니다.

그러나 응용 프로그램 또는 시스템이 특정 버전의 Perl 모듈에 의존하는 경우 여전히 위험 할 수 있습니다.

업그레이드 프로세스를 중단 한 경우 시스템 손상을 피할 수 있습니다.

복구 옵션 :

명령 행에서 시작 cpan하고 r 명령을 실행하여 설치된 모듈 및 사용 가능한 업그레이드 목록을보십시오. 예를 들어 다음은 내 cpan의 약식 출력입니다.

cpan[7]> r

Package namespace         installed    latest  in CPAN file
App::Cpan                    1.5701      1.61  BDFOY/App-Cpan-1.61.tar.gz
DBD::mysql                    4.020     4.022  CAPTTOFU/DBD-mysql-4.022.tar.gz
DBI                           1.616     1.623  TIMB/DBI-1.623.tar.gz
DB_File                       1.821     1.827  PMQS/DB_File-1.827.tar.gz
Error                       0.17010   0.17019  SHLOMIF/Error-0.17019.tar.gz
Eval::Closure                  0.06      0.08  DOY/Eval-Closure-0.08.tar.gz
....

Eval::Closure이 예제 에서는 모듈을 사용하십시오. perl -MCPAN -e 'upgrade'명령을 완료하고 버전 0.08이 설치 되었다고 가정 해 봅시다 .

Synaptic을 보면이 경우 저장소의 최신 버전이 여전히 0.06 (0.06-1, 특히 내 경우)임을 알 수 있습니다.

다음 명령을 실행하여 시스템 버전으로 롤백 할 수 있습니다.

sudo apt-get install --reinstall libeval-closure-perl

Perl 모듈을 수동으로 설치하고 이전 버전으로 롤백하려는 경우 source.cpan.org 또는 다른 곳에서 다시 다운로드 한 후 수동으로 다시 설치해야합니다.

요약 : CPAN 내에서 Perl 모듈을 업그레이드 하면 시스템 저장소에 영향을 미치지 않아야 합니다.

행운을 빌어 요. 당황하지 마십시오.


훌륭하고 철저한 답변! 여기서 "공황하지 마십시오"가 핵심 문구입니다. 나는 많은 출력을 보았고 인수를 사용하여 모듈을 지정하는 것에 대해 읽었으므로 너무 빨리 결론에 도달했습니다. 나는 거의 모든 HD 공간을 사용한다는 사실 놀랐지 만 여전히 인식하지 못하는 일부 모듈을 보았습니다 (아마 의존성 때문에). 알아두면 좋은 일이 아닙니다!
paulrehkugler

0

다음을 수행하는 것이 좋습니다. apt-get remove <installed-packages> && apt-get autoremove(종속성을 제거하려면) && apt-get purge <installed-packages>(구성 파일 재생을 제거하려면) 필요하지 않은 폴더를 제거 할 수 있지만 이미 완료되어 있어야합니다 :)


2
OP는 CPAN을 통해이를 수행했습니다. 이러한 모듈은 패키지 관리 대상이 아니므로 제거 기능이 도움이되지 않습니다.
케빈 보 웬
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.