기본 Alpine Linux Docker 이미지 패키지를 빌드하는 데 사용되는 소스 코드를 얻는 방법은 무엇입니까?

기본 Alpine Linux Docker 이미지 패키지를 빌드하는 데 사용되는 소스 코드를 얻는 방법은 무엇입니까?

내가 이것을 알고 싶은 이유:

현재는 도커 이미지 배포 시 GPL을 준수할 수 있도록 apt-get source를 사용하여 Debian 기반 도커 이미지의 모든 패키지에 대한 소스 코드를 가져옵니다.

이제 여러 개의 도커 이미지가 있고 알파인 기반 도커 이미지를 사용하고 싶지만 이러한 도커 이미지에서 패키지를 빌드하기 위한 소스 코드를 얻는 방법을 모르겠습니다.

지금까지 내가 찾은 것 :

알파인 리눅스에 동등한 apt-get 소스 코드가 있다면 이는 문제가 되지 않습니다(문서APK 소스 옵션에 대한 언급이 없습니다)

이것Github 페이지스크립트와 패치만 포함되어 있고 정확한 소스 코드는 없지만 빌드 스크립트는 그냥 업스트림에서 소스 코드를 가져오는 것 같습니다.

도커 이미지에 일부 GPL 라이센스 바이너리를 배포할 것이기 때문에 소스 코드를 어딘가에 제공해야 합니다.

알파인 도커 이미지 패키지를 빌드하는 데 사용되는 소스 코드를 (정확하게) 얻는 방법은 무엇입니까?

답변1

Alpines 패키지 관리자에는 소스 명령( ) APK과 동일한 기능이 없습니다.dpkgapt-get source <PACKAGE_NAME>

apkAlpine Linux에 설치된 패키지와 일치하는 정확한 소스 코드를 얻으려면 alpine-sdk및 명령을 조합하여 사용할 수 있습니다.

알파인 리눅스에 설치된 패키지의 정확한 소스 코드를 얻는 단계:

  1. 설치된 모든 패키지 목록을 가져옵니다.

    apk info
    
  2. alpine-sdk 설치(자세히 알아보기알파인 위키 읽기):

    apk --update add alpine-sdk
    
  3. aports에서 현재 알파인 버전을 복제합니다.

    git clone --depth 1 --branch v3.13.1 git://git.alpinelinux.org/aports
    
  4. 설치된 패키지를 반복하여 aports 폴더에서 올바른 폴더를 찾으세요(패키지 버전이 apk version <PACKAGE_NAME>와 동일 할 수 있음에 유의하세요 <PACKAGE_NAME>-<PACKAGE_BUILD_VERSION>-<PACKGAE_RELEASE_VERSION>).

  5. 패키지 소스 코드 받기(Alpine 관련 패치 파일 및 구성 파일 포함)

    1. (선택 사항) 소스 파일에 대한 사용자 정의 대상을 설정할 수 있습니다. export SRCDEST="/path/to/my/custom/src/destination"그렇지 않으면 현재 패키지 폴더에 src 폴더가 생성됩니다.

    2. 패키지 이름과 일치하는 폴더(예: 패키지 aports/main/git의 경우 )에서 루트 또는 일반 사용자로 실행합니다 (이렇게 하면 스크립트에서 참조되는 소스 파일을 가져옵니다 ).gitabuild -F fetch verifyabuild fetch verifyAPKBUILD

    3. GPL 라이센스 코드가 포함된 패키지: 이를 준수하려면 GPL얻은 소스 파일과 APKBUILD스크립트 자체를 제공해야 합니다. 또한 스크립트 변수에 나열된 패키지에 대한 소스 파일과 스크립트를 제공해야 합니다 APKBUILD(대부분의 경우 이러한 패키지는 런타임 종속성의 하위 패키지입니다(예: 6번 참조)).makedependsAPKBUILDopenssl-devopenssl이 문제종속성 정보 GPL및 빌드.

  6. 모든 패키지가 aports에 자체 폴더를 갖고 있는 것은 아닙니다. 때로는 나열된 패키지가 apk info다른 패키지의 하위 패키지일 수 있기 때문입니다.

    이 경우, 명령을 사용하여 얻을 .PKGINFO수 있는 파일의 원본 변수가 참조하는 패키지의 소스 코드를 얻어야 합니다 .apk fetch <sub-packagename>

관련 정보