2014-10-17 19 views
1

사용자 컴퓨터에 몇 개의 파일을 설치하기 위해 데비안 패키지 소스로 작업 중입니다. debconf/config 스크립트와 postinst 스크립트가 사용하는 일반적인 로직이 있습니다. 그래서 공통 로직을 별도의 파일에 넣고 패키지의 일부로/usr/share/pkg-name/아래에 추가했습니다.debconf 프롬프트가 표시되기 전에 먼저 debain 패키지를 압축 해제하는 방법은 무엇입니까?

이제 dpkg를 사용하여 패키지를 설치하면 모든 것이 잘 동작합니다. 먼저 패키지가 압축 해제되고 공통 코드 기반을 포함하는 파일이 상기 경로에 배치됩니다. 다음으로 debconf/config 스크립트는 파일을 읽고 그에 따라 사용자에게 프롬프트합니다.

파일을 APT 저장소에 넣으면 apt-get를 사용하여 설치할 때 동일한 절차가 취소됩니다. 패키지가 먼저 압축 해제되지 않고 debconf 프롬프트가 표시되고 config 스크립트가 공통 코드 기반을 포함하는 스크립트를 찾을 수 없습니다.

설치 절차가 다른 이유는 무엇입니까? apt-get를 통해 설치할 때 동일한 순서를 얻을 수있는 방법이 있습니까? 세 파일은 모두 쉘 스크립트입니다.

다양한 메인테이너 스크립트에서 사용되는 공통 코드베이스를 처리하는 더 좋은 방법이 있습니까?

답변

1

퀘스트가 종료되었습니다.

이제 debconf 맨 페이지에 설명 된 전체 과정을 이해합니다. 당신이 무엇이라고 부르는간에 다른 단계 나 단계가 있습니다. 그들은 :

이 모든 단계는 사용자와의 어떤 debconf 통신을 시작 -i

  • 때 dpkg-재구성을 때 dpkg 때 dpkg-사전. 누군가가 dpkg -i를 사용하여 패키지를 설치하면 동일한 명령 행 옵션으로 postinst 스크립트를 실행하기 전에 config 스크립트가 실행됩니다. debconf 통신이 시작될 때까지 패키지는 이미 압축이 풀려 있습니다.

    누군가가 apt-get을 사용하여 패키지를 설치하면 config 스크립트를 실행 한 다음 dpkg -i 명령을 실행하여 dpkg-preconfigure를 실행하여 동일한 config 스크립트를 다시 실행하는 패키지를 실제로 설치합니다.

    두 번째 경우 apt-get의 경우 config 스크립트가 dpkg-preconfigure의 일부로 실행될 때 패키지가 아직 풀리지 않은 상태이므로이 문제에 직면했습니다. 파일을 압축 해제하거나 다른 출구

    if [ ! -f /usr/share/pkg-name/common-codebase ]; 
    then 
        exit 0 
    fi 
    /usr/share/pkg/common-codebase 
    

    건너, apt-get을 사용하여 설정 스크립트를 실행 할 때 dpkg-를 사전 시도를 패키지를 설치하는이 방법이 있다면 상태가 계속 경우

    나는 단지를 추가 한 두 번째 시도하면서 dpkg -i는 존중 받는다. 이 질문은 사용자에게 묻는 debconf 질문이 다른 패키지에 영향을 미치지 않기 때문에 유용합니다.

    템플릿을 공유하고 선택 사항이 패키지 외부에 영향을 미칠 수있는 경우에는 프롬프트를 지연해도 apt-get에 의해 설치된 다른 관련/종속 패키지가 여전히 dpkg-preconfigure 단계에서 사용자에게 메시지를 표시합니다. 이 솔루션을 시도하기 전에 문제가 없는지 확인하십시오.