2015-01-12 3 views
10

필자는 내 회사 용 스크립트를 작성했으며 CPAN에서 얻은 라이브러리를 사용하고 있습니다. 저의 관리자는 제가 여분의 라이브러리를 통합하고 제거하기를 원했습니다. 스크립트가 작동하도록하기 때문에 약간 재미 있습니다.Perl 모듈에 대한 크레딧 제공

몇 가지 참고 사항 :

  • 내가이 서버에 root 권한이없는도 루트 O를 내가 그들을 내 사용자 디렉토리에 설치 한 승/내가 CPAN 모듈을 사용하려면 액세스를
  • 을 요청할 수 있습니다
  • 다른 사용자가 내 스크립트를 실행하도록 허용하기 위해 일반적으로 'libs'라는 폴더를 포함하고 내 스크립트 디렉토리 안에 스크립트가 있습니다. use 'libs';이 내 use CPAN 모듈 앞에 있습니다.

제가 지금 가지고있는 유일한 해결책은 말 그대로 펄 모듈의 내용을 내 펄 스크립트 안에 넣는 것입니다. 그러나 나는 그것이 만기가 된 신용을주고 싶다 또한 그것의 저자 및 조직에게 적당한 신용을 가진 opensource 부호를 포함을위한 말썽에서 얻지 않으며.

따라서 어떻게해야합니까? 나는 무엇이든 도망 치려고하지 않고 있습니다. 솔직히이 일을 올바르게하고 싶습니다.

세 모듈 모두 "Perl 자체와 동일한 용어로 사용 허가되었습니다."라고 말하지만, 그렇게 쉬운 것은 아닐 것입니다.

나는 또한 다른 아이디어를 탐구하고 싶습니다!

모듈은 다음과 같습니다

  • 텍스트 :: 표
  • 텍스트 :: 얼 라이너
  • 기간 : ANSIColor
+4

마지막으로 루트 액세스 권한이 없기 때문에 CPAN을 포기하지 않은 사람. 선생님, – ThisSuitIsBlackNot

+0

하하, 고마워. 그 당시에는 어려운 일 이었지만 그만한 가치가있었습니다. – rusty

+0

루트 액세스 권한을 가진 사람이 스크립트를 실행해야하는 시스템에 필요한 라이브러리를 설치하는 것이 더 합리적이라고 생각합니다. 모듈의 코드를 스크립트에 복사하여 붙여 넣는 것보다 훨씬 간단하고 신뢰할 수 있습니다. (당신의 매니저에게 설득하는 것은 장애가 될 수도 있습니다.) –

답변

1

모듈이 순수한 Perl 모듈 인 경우 코드 (예 : package 문 포함)를 프로그램에 간단하게 추가 할 수 있습니다. 나는 또한 저작권 진술과 저자의 이름도 포함 할 포드를 포함시킬 것이다. 이는 예술적 사용권 요구 사항을 충족해야합니다 (그러나 GNU 사용권 요구 사항을 충족하지 못할 수 있음).

Perlbrew을 사용하면 시스템에 Perl의 사용자 버전을 설치할 수 있습니다. 이렇게하면 관리 권한이 필요없이 CPAN 모듈을 설치할 수 있으며 다른 사용자에게 Perlbrew도 사용할 수 있음을 알릴 수 있습니다.

여러 버전의 Perl을 설치하고 전환 할 수 있기 때문에 필자는 Perl의 다양한 버전에서 Perl 스크립트를 테스트 할 수 있기 때문에이 스크립트를 사용합니다. 필자는 표준 버전에 포함되지 않은 최신 버전의 Perl이나 모듈이 필요한 곳에서도 서버를 사용했습니다.

Perlbrew를 설치하기 전에 IT 승인을 받아야하지만 더 이상 안심하고 사용할 수 있도록 CPAN 모듈을 유지 관리하고 설치해야하는 번거 로움이 없습니다.

+0

문제점을 추가하고 첨부하여 답변으로 선택했습니다. 나는 다른 사람이 제안한대로 패키지 관리자를 사용하는 것을 선호하지만 여러 컴퓨터에서 컴파일러 문제로 인해 PAR : Packer를 설치할 수 없었습니다 (여전히 당혹 스럽습니다). @Edward가 제안한대로 Staticperl을 사용하지는 않았지만 그것을 탐구 할 생각입니다. – rusty

+0

이것을 '팻 패킹'이라고합니다. CPAN에는 의존성에 대한 코드를 분석하고 Perl 인터프리터 만 필요한 대규모 Perl 프로그램을 빌드하는 앱이 있습니다. 컴파일되지 않은 C 코드와 플랫폼에 종속적 인 XS 모듈이 작동하지 않습니다. –

0

당신이 불필요한 코드를 줄일 수 있습니다 (만족시키기 위해 관리자의 우려). 제공된 파일에 필요한 코드를 그대로두고 해당 모듈/패키지 내에 작성자의 신용을 부여하십시오.

예 : Joe E Perl에서 영감을 얻어 (도난당한)

+0

나는 그것을 할 수는 있지만 명시 적으로 스크립트는 자신의 독립적 인 'libs'폴더에서 실행되기를 원합니다. 코드를 제거하면 크기가 도움이되지만 목표는 도움이되지 않습니다. 내가 사용하는 유일한 모듈 (내가 포함하는 2 가지 종속성이 있음)은 Text :: Table입니다. 정보가 도움이되는지 확신 할 수 없습니다. – rusty

2

PAR Packager 옵션을 사용하고 있습니까? 그러면 독립형 실행 파일이 생성됩니다.

+0

설치를 시도했지만 make 중에 오류가 발생했습니다. 나는 심지어 내 홈 서버에 설치하려고 ... 같은 오류가 발생했습니다. 정말 혼란스럽고 불행합니다. 어쩌면 나는 그걸 가지고 계속 놀 것이다. – rusty

+1

make에서 255 번째 오류는 이전 오류가 있음을 나타냅니다. 첫 번째 오류 메시지를보고 무엇이 잘못되었는지 확인해야합니다. – ysth

+2

이것은 실제로 상황에 가장 적합한 솔루션입니다. 스크립트에서 모듈에서 물건을 꺼내면 파손의 위험이 있으며 문제의 코드에 대한 최신 버그 수정을 포기하십시오. – ysth

1

흥미로운 질문 & perspective. 도서관이나 모듈을 사용하지 않는 것에 대해 이해할 수는 없지만 귀하의 관리자가 생각하도록하겠습니다.

저작권에 관해서는 확실하게 알고 싶으면 변호사와상의하는 것이 가장 좋습니다. 내가 이해하는 한, 귀하는 저작권 고지를 보유하고있는 다른 사람들의 작업을 결합 할 수 있습니다. 결합 된 작업 may not be covered by copyleft이므로 상업적으로 사용할 수 있습니다 (예 : 소스를 공개하지 않고 배포). 그러나 변호사와 확인하십시오.

다른 아이디어를 탐색하고 싶다고 말했기 때문에 App::Staticperl이 해결책 일 수 있습니까? 나는 그것에 대한 경험이 없지만 간단한 예제로 시도해 보았고 실행 가능한 실행 파일을 얻었다.

App :: Staticperl은 CPAN 모듈이 내장 된 Perl 인터프리터에서 독립 실행 형 실행 파일을 빌드합니다.

    앱 :: Staticperl의
  1. 최신 버전은 1.43이다 : https://cpan.metacpan.org/authors/id/M/ML/MLEHMANN/App-Staticperl-1.43.tar.gz
  2. 중 모듈을 설치 내가 다음 단계는 (분명히 내가 당신의 스크립트를 테스트 할 수 있기 때문에 당신이 적응해야합니다) 대략했다 CPAN을 통해, 또는 단순히 타르에서 빈/staticperl를 추출 -
  3. 편집 staticperl이 EMAILCPAN (선택,하지만 당신은 CPAN 미러를 변경할 수 있습니다) 변경 펄을
  4. ./staticperl install 다운로드 및 빌드 독립형 스크립트입니다; 그것은 내 상자에 오류 메시지로 끝났지 만 제대로 작동하는 Perl을 만들었습니다.
  5. ./staticperl cpan 대화식 CPAN 프롬프트로 들어갑니다. install Text::Table, install Term::ANSIColor, 당신은 응용 프로그램 시도
  6. ./staticperl mkapp my_app --boot path/to/your/script -MText::Table -MText::Aligner -MTerm::ANSIColor
  7. 필요 어떤 다른 : ./my_app를 - 그것은 가장 가능성이 모듈 누락에 대한 오류 메시지와 함께 실패합니다; 이전 단계를 반복하고 빠진 모듈을 플래그에 포함하십시오.

행운을 비네!

+0

라이센스가 적용되지 않는 것은 귀하의 권리에 추가 *되지 않습니다! 다른 사람의 저작물에 대한 권리는 라이센스에 명시되어 있거나 공정한 사용으로 명시되어 있으며, 상업적 사용은 공정 사용권 주장에 좋은 시작이 아닙니다. – tjd

+0

Thanks Edward! 불행히도'Staticperl'을 사용해 볼 시간이 없었습니다.하지만 앞으로는 그렇게 할 생각입니다. 도움에 감사드립니다! – rusty

관련 문제