InfoGrab Docs

패키지 레지스트리의 Debian 패키지

요약

GitLab의 Debian 패키지 레지스트리는 개발 중이며 프로덕션 사용에는 준비되지 않았습니다. 프로젝트의 패키지 레지스트리에 Debian 패키지를 게시합니다. 프로젝트 및 그룹 패키지가 지원됩니다. Debian 패키지 관리자 클라이언트가 사용하는 특정 API 엔드포인트 문서는 Debian API 문서를 참조하세요.

히스토리
Warning

GitLab의 Debian 패키지 레지스트리는 개발 중이며 프로덕션 사용에는 준비되지 않았습니다. 이 에픽은 프로덕션 준비를 위한 남은 작업과 일정을 설명합니다. Debian 패키지 지원은 실험이며 알려진 보안 취약점이 있습니다.

프로젝트의 패키지 레지스트리에 Debian 패키지를 게시합니다. 그런 다음 의존성으로 사용해야 할 때 패키지를 설치합니다.

프로젝트 및 그룹 패키지가 지원됩니다.

Debian 패키지 관리자 클라이언트가 사용하는 특정 API 엔드포인트 문서는 Debian API 문서를 참조하세요.

사전 조건:

  • GitLab 인스턴스에 dpkg-deb 바이너리가 설치되어 있어야 합니다. 이 바이너리는 일반적으로 dpkg 패키지에서 제공되며 Debian 및 파생 배포판에 기본적으로 설치됩니다.
  • 권장. dpkg-deb 1.22.21 이상을 사용하세요. dpkg-deb 1.22.20 이하에서는 바이너리가 쓰기 불가능한 디렉토리가 포함된 아카이브에서 임시 파일을 삭제할 수 없습니다. 이러한 파일은 디스크 공간을 소비하고 서비스 거부 공격을 유발할 수 있습니다.
  • ZStandard 압축 알고리즘 지원을 위해서는 Debian 12 Bookworm의 dpkg >= 1.21.18 또는 Ubuntu 18.04 Bionic Beaver의 dpkg >= 1.19.0.5ubuntu2 버전이 필요합니다.

Debian API 활성화#

Debian 저장소 지원은 아직 진행 중입니다. 기본적으로 비활성화된 기능 플래그 뒤에 있습니다. GitLab Rails 콘솔에 액세스할 수 있는 GitLab 관리자 는 이를 활성화할 수 있습니다.

활성화하려면:

Feature.enable(:debian_packages)

비활성화하려면:

Feature.disable(:debian_packages)

Debian 그룹 API 활성화#

Debian 그룹 저장소도 기본적으로 비활성화된 두 번째 기능 플래그 뒤에 있습니다.

활성화하려면:

Feature.enable(:debian_group_packages)

비활성화하려면:

Feature.disable(:debian_group_packages)

Debian 패키지 빌드#

Debian 패키지 생성은 Debian Wiki에 문서화되어 있습니다.

Debian 엔드포인트 인증#

인증 방법은 배포 API패키지 저장소 간에 다릅니다.

Debian 배포 API 인증#

배포를 생성, 읽기, 업데이트 또는 삭제하려면 다음 중 하나가 필요합니다:

Debian 패키지 저장소 인증#

패키지를 게시하거나 비공개 패키지를 설치하려면 다음 중 하나와 함께 기본 인증을 사용해야 합니다:

배포 생성#

프로젝트 수준에서 Debian 패키지는 Debian 배포와 함께 게시됩니다. 그룹 수준에서는 다음 조건이 충족된 경우 그룹의 프로젝트에서 Debian 패키지가 집계됩니다:

  • 프로젝트 가시성이 public으로 설정되어 있습니다.
  • 그룹의 Debian codename이 프로젝트의 Debian codename과 일치합니다.

개인 액세스 토큰을 사용하여 프로젝트 수준 배포를 생성하려면:

curl --fail-with-body --request POST --header "PRIVATE-TOKEN: <personal_access_token>" \
  "https://gitlab.example.com/api/v4/projects/<project_id>/debian_distributions?codename=<codename>"

codename=sid로 응답 예시:

{
  "id": 1,
  "codename": "sid",
  "suite": null,
  "origin": null,
  "label": null,
  "version": null,
  "description": null,
  "valid_time_duration_seconds": null,
  "components": [
    "main"
  ],
  "architectures": [
    "all",
    "amd64"
  ]
}

Debian 배포 API에 대한 자세한 내용:

패키지 게시#

빌드되면 다음과 같은 여러 파일이 생성됩니다:

  • .deb 파일: 바이너리 패키지
  • .udeb 파일: 가벼운 .deb 파일, Debian-Installer에 사용 (필요한 경우)
  • .ddeb 파일: Ubuntu 디버그 .deb 파일 (필요한 경우)
  • .tar.{gz,bz2,xz,...} 파일: 소스 파일
  • .dsc 파일: 소스 메타데이터 및 소스 파일 목록 (해시 포함)
  • .buildinfo 파일: 재현 가능한 빌드에 사용 (선택 사항)
  • .changes 파일: 업로드 메타데이터 및 업로드된 파일 목록 (위의 모든 파일)

이 파일들을 업로드하려면 dput-ng >= 1.32 (Debian bullseye)를 사용할 수 있습니다. <username><password>Debian 패키지 저장소에서와 같이 정의됩니다:

cat < dput.cf
[gitlab]
method = https
fqdn = <username>:<password>@gitlab.example.com
incoming = /api/v4/projects/<project_id>/packages/debian
EOF

dput --config=dput.cf --unchecked --no-upload-log gitlab <your_package>.changes

명시적 배포 및 구성 요소로 패키지 업로드#

히스토리
  • 명시적 배포 및 구성 요소로 업로드 기능이 GitLab 15.9에서 도입되었습니다.

.changes 파일에 액세스할 수 없는 경우 자격 증명과 함께 매개변수로 배포 codename 및 대상 component를 전달하여 .deb를 직접 업로드할 수 있습니다. 예를 들어 개인 액세스 토큰을 사용하여 배포 sid의 구성 요소 main에 업로드하려면:

curl --fail-with-body --request PUT --user "<username>:<personal_access_token>" \
  "https://gitlab.example.com/api/v4/projects/<project_id>/packages/debian/your.deb?distribution=sid&component=main" \
  --upload-file  /path/to/your.deb

패키지 설치#

패키지를 설치하려면:

  1. 저장소를 구성합니다:

    비공개 프로젝트를 사용하는 경우 자격 증명을 apt 구성에 추가합니다:

    echo 'machine gitlab.example.com login <username> password <password>' \
      | sudo tee /etc/apt/auth.conf.d/gitlab_project.conf
    

    자격 증명을 사용하여 배포 키를 다운로드합니다:

    sudo mkdir -p /etc/apt/keyrings
    sudo curl --fail --silent --show-error --header "PRIVATE-TOKEN: <your_access_token>" \
         --output /etc/apt/keyrings/<codename>-archive-keyring.asc \
         --url "https://gitlab.example.com/api/v4/projects/<project_id>/debian_distributions/<codename>/key.asc"
    

    프로젝트를 소스로 추가합니다:

    echo 'deb [ signed-by=/etc/apt/keyrings/<codename>-archive-keyring.asc ] https://gitlab.example.com/api/v4/projects/<project_id>/packages/debian <codename> <component1> <component2>' |
        sudo tee /etc/apt/sources.list.d/gitlab_project.list
    sudo apt-get update
    
  2. 패키지를 설치합니다:

    sudo apt-get -y install -t <codename> <package-name>
    

소스 패키지 다운로드#

소스 패키지를 다운로드하려면:

  1. 저장소를 구성합니다:

    비공개 프로젝트를 사용하는 경우 자격 증명을 apt 구성에 추가합니다:

    echo 'machine gitlab.example.com login <username> password <password>' \
      | sudo tee /etc/apt/auth.conf.d/gitlab_project.conf
    

    자격 증명을 사용하여 배포 키를 다운로드합니다:

    sudo mkdir -p /etc/apt/keyrings
    sudo curl --fail --silent --show-error --header "PRIVATE-TOKEN: <your_access_token>" \
         --output /etc/apt/keyrings/<codename>-archive-keyring.asc \
         --url "https://gitlab.example.com/api/v4/projects/<project_id>/debian_distributions/<codename>/key.asc"
    

    프로젝트를 소스로 추가합니다:

    echo 'deb-src [ signed-by=/etc/apt/keyrings/<codename>-archive-keyring.asc ] https://gitlab.example.com/api/v4/projects/<project_id>/packages/debian <codename> <component1> <component2>' |
        sudo tee /etc/apt/sources.list.d/gitlab_project-sources.list
    sudo apt-get update
    
  2. 소스 패키지를 다운로드합니다:

    sudo apt-get source -t <codename> <package-name>
    

Debian 패키지 삭제#

사전 조건:

  • Maintainer 또는 Owner 역할이 있어야 합니다.

패키지를 삭제하기 전에 관련 보안 위험을 이해하고 있는지 확인하세요.

패키지를 삭제하려면 다음 중 하나를 사용합니다:

패키지 레지스트리의 Debian 패키지

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기
요약

GitLab의 Debian 패키지 레지스트리는 개발 중이며 프로덕션 사용에는 준비되지 않았습니다. 프로젝트의 패키지 레지스트리에 Debian 패키지를 게시합니다. 프로젝트 및 그룹 패키지가 지원됩니다. Debian 패키지 관리자 클라이언트가 사용하는 특정 API 엔드포인트 문서는 Debian API 문서를 참조하세요.

히스토리
Warning

GitLab의 Debian 패키지 레지스트리는 개발 중이며 프로덕션 사용에는 준비되지 않았습니다. 이 에픽은 프로덕션 준비를 위한 남은 작업과 일정을 설명합니다. Debian 패키지 지원은 실험이며 알려진 보안 취약점이 있습니다.

프로젝트의 패키지 레지스트리에 Debian 패키지를 게시합니다. 그런 다음 의존성으로 사용해야 할 때 패키지를 설치합니다.

프로젝트 및 그룹 패키지가 지원됩니다.

Debian 패키지 관리자 클라이언트가 사용하는 특정 API 엔드포인트 문서는 Debian API 문서를 참조하세요.

사전 조건:

  • GitLab 인스턴스에 dpkg-deb 바이너리가 설치되어 있어야 합니다. 이 바이너리는 일반적으로 dpkg 패키지에서 제공되며 Debian 및 파생 배포판에 기본적으로 설치됩니다.
  • 권장. dpkg-deb 1.22.21 이상을 사용하세요. dpkg-deb 1.22.20 이하에서는 바이너리가 쓰기 불가능한 디렉토리가 포함된 아카이브에서 임시 파일을 삭제할 수 없습니다. 이러한 파일은 디스크 공간을 소비하고 서비스 거부 공격을 유발할 수 있습니다.
  • ZStandard 압축 알고리즘 지원을 위해서는 Debian 12 Bookworm의 dpkg >= 1.21.18 또는 Ubuntu 18.04 Bionic Beaver의 dpkg >= 1.19.0.5ubuntu2 버전이 필요합니다.

Debian API 활성화#

Debian 저장소 지원은 아직 진행 중입니다. 기본적으로 비활성화된 기능 플래그 뒤에 있습니다. GitLab Rails 콘솔에 액세스할 수 있는 GitLab 관리자 는 이를 활성화할 수 있습니다.

활성화하려면:

Feature.enable(:debian_packages)

비활성화하려면:

Feature.disable(:debian_packages)

Debian 그룹 API 활성화#

Debian 그룹 저장소도 기본적으로 비활성화된 두 번째 기능 플래그 뒤에 있습니다.

활성화하려면:

Feature.enable(:debian_group_packages)

비활성화하려면:

Feature.disable(:debian_group_packages)

Debian 패키지 빌드#

Debian 패키지 생성은 Debian Wiki에 문서화되어 있습니다.

Debian 엔드포인트 인증#

인증 방법은 배포 API패키지 저장소 간에 다릅니다.

Debian 배포 API 인증#

배포를 생성, 읽기, 업데이트 또는 삭제하려면 다음 중 하나가 필요합니다:

Debian 패키지 저장소 인증#

패키지를 게시하거나 비공개 패키지를 설치하려면 다음 중 하나와 함께 기본 인증을 사용해야 합니다:

배포 생성#

프로젝트 수준에서 Debian 패키지는 Debian 배포와 함께 게시됩니다. 그룹 수준에서는 다음 조건이 충족된 경우 그룹의 프로젝트에서 Debian 패키지가 집계됩니다:

  • 프로젝트 가시성이 public으로 설정되어 있습니다.
  • 그룹의 Debian codename이 프로젝트의 Debian codename과 일치합니다.

개인 액세스 토큰을 사용하여 프로젝트 수준 배포를 생성하려면:

curl --fail-with-body --request POST --header "PRIVATE-TOKEN: <personal_access_token>" \
  "https://gitlab.example.com/api/v4/projects/<project_id>/debian_distributions?codename=<codename>"

codename=sid로 응답 예시:

{
  "id": 1,
  "codename": "sid",
  "suite": null,
  "origin": null,
  "label": null,
  "version": null,
  "description": null,
  "valid_time_duration_seconds": null,
  "components": [
    "main"
  ],
  "architectures": [
    "all",
    "amd64"
  ]
}

Debian 배포 API에 대한 자세한 내용:

패키지 게시#

빌드되면 다음과 같은 여러 파일이 생성됩니다:

  • .deb 파일: 바이너리 패키지
  • .udeb 파일: 가벼운 .deb 파일, Debian-Installer에 사용 (필요한 경우)
  • .ddeb 파일: Ubuntu 디버그 .deb 파일 (필요한 경우)
  • .tar.{gz,bz2,xz,...} 파일: 소스 파일
  • .dsc 파일: 소스 메타데이터 및 소스 파일 목록 (해시 포함)
  • .buildinfo 파일: 재현 가능한 빌드에 사용 (선택 사항)
  • .changes 파일: 업로드 메타데이터 및 업로드된 파일 목록 (위의 모든 파일)

이 파일들을 업로드하려면 dput-ng >= 1.32 (Debian bullseye)를 사용할 수 있습니다. <username><password>Debian 패키지 저장소에서와 같이 정의됩니다:

cat < dput.cf
[gitlab]
method = https
fqdn = <username>:<password>@gitlab.example.com
incoming = /api/v4/projects/<project_id>/packages/debian
EOF

dput --config=dput.cf --unchecked --no-upload-log gitlab <your_package>.changes

명시적 배포 및 구성 요소로 패키지 업로드#

히스토리
  • 명시적 배포 및 구성 요소로 업로드 기능이 GitLab 15.9에서 도입되었습니다.

.changes 파일에 액세스할 수 없는 경우 자격 증명과 함께 매개변수로 배포 codename 및 대상 component를 전달하여 .deb를 직접 업로드할 수 있습니다. 예를 들어 개인 액세스 토큰을 사용하여 배포 sid의 구성 요소 main에 업로드하려면:

curl --fail-with-body --request PUT --user "<username>:<personal_access_token>" \
  "https://gitlab.example.com/api/v4/projects/<project_id>/packages/debian/your.deb?distribution=sid&component=main" \
  --upload-file  /path/to/your.deb

패키지 설치#

패키지를 설치하려면:

  1. 저장소를 구성합니다:

    비공개 프로젝트를 사용하는 경우 자격 증명을 apt 구성에 추가합니다:

    echo 'machine gitlab.example.com login <username> password <password>' \
      | sudo tee /etc/apt/auth.conf.d/gitlab_project.conf
    

    자격 증명을 사용하여 배포 키를 다운로드합니다:

    sudo mkdir -p /etc/apt/keyrings
    sudo curl --fail --silent --show-error --header "PRIVATE-TOKEN: <your_access_token>" \
         --output /etc/apt/keyrings/<codename>-archive-keyring.asc \
         --url "https://gitlab.example.com/api/v4/projects/<project_id>/debian_distributions/<codename>/key.asc"
    

    프로젝트를 소스로 추가합니다:

    echo 'deb [ signed-by=/etc/apt/keyrings/<codename>-archive-keyring.asc ] https://gitlab.example.com/api/v4/projects/<project_id>/packages/debian <codename> <component1> <component2>' |
        sudo tee /etc/apt/sources.list.d/gitlab_project.list
    sudo apt-get update
    
  2. 패키지를 설치합니다:

    sudo apt-get -y install -t <codename> <package-name>
    

소스 패키지 다운로드#

소스 패키지를 다운로드하려면:

  1. 저장소를 구성합니다:

    비공개 프로젝트를 사용하는 경우 자격 증명을 apt 구성에 추가합니다:

    echo 'machine gitlab.example.com login <username> password <password>' \
      | sudo tee /etc/apt/auth.conf.d/gitlab_project.conf
    

    자격 증명을 사용하여 배포 키를 다운로드합니다:

    sudo mkdir -p /etc/apt/keyrings
    sudo curl --fail --silent --show-error --header "PRIVATE-TOKEN: <your_access_token>" \
         --output /etc/apt/keyrings/<codename>-archive-keyring.asc \
         --url "https://gitlab.example.com/api/v4/projects/<project_id>/debian_distributions/<codename>/key.asc"
    

    프로젝트를 소스로 추가합니다:

    echo 'deb-src [ signed-by=/etc/apt/keyrings/<codename>-archive-keyring.asc ] https://gitlab.example.com/api/v4/projects/<project_id>/packages/debian <codename> <component1> <component2>' |
        sudo tee /etc/apt/sources.list.d/gitlab_project-sources.list
    sudo apt-get update
    
  2. 소스 패키지를 다운로드합니다:

    sudo apt-get source -t <codename> <package-name>
    

Debian 패키지 삭제#

사전 조건:

  • Maintainer 또는 Owner 역할이 있어야 합니다.

패키지를 삭제하기 전에 관련 보안 위험을 이해하고 있는지 확인하세요.

패키지를 삭제하려면 다음 중 하나를 사용합니다: