Alpine에서 .deb 빌드

Alpine에서 .deb 빌드

저는 일반적으로 Linux를 처음 접했고 Alpine 도커 이미지에서 데비안 패키지를 빌드하는 방법을 찾으려고 노력하고 있습니다. 이것은 지금까지 파이프라인을 실행할 수 있는 가장 빠른 속도이지만 불행히도 실행하려고 하면 dpkg-deb --build다음 오류가 발생합니다.

03:22:44 dpkg-deb: building package 'x-sync' in 'x-sync_1.0.2.deb'.
03:22:44 tar: unrecognized option: format=gnu
03:22:44 BusyBox v1.27.2 (2018-01-29 15:48:57 GMT) multi-call binary.
03:22:44 
03:22:44 Usage: tar -[cxtZzJjahmvO] [-X FILE] [-T FILE] [-f TARFILE] [-C DIR] [FILE]...
03:22:44 
03:22:44 Create, extract, or list files from a tar file
03:22:44 
03:22:44 Operation:
03:22:44    c   Create
03:22:44    x   Extract
03:22:44    t   List
03:22:44    f   Name of TARFILE ('-' for stdin/out)
03:22:44    C   Change to DIR before operation
03:22:44    v   Verbose
03:22:44    Z   (De)compress using compress
03:22:44    z   (De)compress using gzip
03:22:44    J   (De)compress using xz
03:22:44    j   (De)compress using bzip2
03:22:44    a   (De)compress using lzma
03:22:44    O   Extract to stdout
03:22:44    h   Follow symlinks
03:22:44    m   Don't restore mtime
03:22:44    exclude File to exclude
03:22:44    X   File with names to exclude
03:22:44    T   File with names to include
03:22:44 dpkg-deb: error: subprocess tar -cf returned error exit status 1

다음 Dockerfile을 패키징하려고 합니다.

FROM alpine
RUN apk add --no-cache dpkg openjdk8

다른 배포판(예: Ubuntu 개발 환경)과 상호 호환되는 Debian 패키지를 이 배포판에 빌드할 수 있는 방법이 있나요?

답변1

Debian 패키지를 빌드하는 데 가장 적합한 환경은 항상 Debian 기반 환경입니다. Alpine 기반 컨테이너는 작은 크기와 빠른 설정 시간에 적합하지만 여러 가지 문제도 제시하며 그 중 두 가지는 특히 골치 아픈 문제입니다.

  • 그들은 데비안 패키지가 대부분의 도구의 GNU 변형에 의존하는 Busybox를 사용합니다(예를 들어 tar당신이 발견한 대로);
  • 가장 중요한 것은 musl을 사용하는 반면 데비안은 기본적으로 glibc를 사용한다는 것입니다.

이 둘할 수 있는해결될 수 있지만 그렇게 하면 최소 데비안 컨테이너(예: 언급한 것)에 bitnami/minideb비해 작은 Alpine 컨테이너의 이점을 잃게 됩니다 .

개발 및/또는 빌드 시스템에서 Debian 파생 제품을 실행하는 경우 다음을 사용하여 포함된 빌드 환경을 계속 사용하면서 컨테이너 단계를 완전히 건너뛸 수 있습니다.pbuilder. 최대 속도를 얻으려면 tmpfs를 설치한 /var/cache/pbuilder/build다음 다음을 사용하여 빌드를 실행하세요.eatmydata.sbuild그리고cowbuilder특히 정기적으로 유사한 패키지를 빌드하는 경우에는 살펴볼 가치가 있습니다.

그런데 dpkg-deb -b저는 다음을 사용하여 바이너리 패키지를 빌드하지 않습니다.높은Vincent Bernat로 시작하여 소스 패키지를 빌드하는 방법을 배우는 것이 좋습니다.실용적인 데비안 패키징, 아름답고 간단합니다.

관련 정보