본문 바로가기
리눅스

Creating local Debian apt repo

by 다움위키 2023. 11. 27.

개인 지역 데비안 저장소 만들기

공식적으로 배포를 위한 저장소는 Creating and hosting my own Debian apt repo에서 설명이 되었습니다.

그런데, 개인적으로 패키지를 업데이트해서 사용하지만, 패포용 저장소로 올리기 전에 테스트가 필요한 패키지들이 존재할 수 있습니다.

이런 패키지 중에, 예를 들어, pipewire 같은 프로그램은 15개의 deb 패키지로 구성되고, 시스템에 설치된 패키지를 찾아서 새로운 버전으로 덮어쓰기를 진행해야 합니다. 다음 과정을 보십시오:

  • dpkg -l | grep pipewire
  • dpkg -l | grep 0.3.19-4
  • sudo dpkg -i gstreamer1.0-pipewire_0.3.51-1_amd64.deb ...

첫 줄은 pipewire의 버전을 찾기 위해서, 두 번째 줄은 그 버전으로 설치된 모든 패키지를 찾고, 마지막으로 로컬에 빌드된 패키지를 일일이 하나씩 타이핑해야 한다는 귀찮은 과정을 거쳐야 합니다.

그러나, 이 파일들을 저장소로 올리면, 시스템에 설치된 정보로부터 업데이트에 필요한 모든 파일을 자동으로 찾아서 업데이트를 할 것인지를 확인받으려고 합니다. 너무나 간편합니다!!

그래서, 로컬에서 나에게 필요한 저장소를 만들 필요가 있습니다.

이런 방법은 다음과 같이 구성될 수도 있습니다.

  • 배포용 저장소에 암호를 기반으로 접근되도록 만드는 방법
  • 파일로 접근하도록 저장소를 구성하는 방법

이 저장소는 테스트의 목적이므로 아래의 방법으로 구성될 것인데, 왜냐하면 자유와 오픈-소스 프로그램을 암호를 걸어서 배포하는 것은 결코 바람직하지 않기 때문입니다.

지역 저장소 만들기 : 저장소라는 용어를 사용하지만, 지역 deb 파일을 한 곳에 모아서 apt에서 읽도록 만듭니다.

문제는 파일을 스캔할 때, deb 파일만 스캔하는 것이 아니라, 하위 디렉토리 전체와 모든 파일(?)을 스캔하기 때문에, 필요한 deb 파일을 별도의 디렉토리 아래로 옮겨야 합니다.

  • mkdir ~/mydebs

해당 디렉토리 아래에 각 프로그램마다 디렉토리를 만들고, 해당 디렉토리에 deb 파일만 복사합니다:

  • mkdir -p ~/mydebs/pipewire
  • cp any_directory/pipewir/*.deb ~/mydebs/pipewire

패키지 목록 생성하기 : 다음으로 목록, Packages, Release을 만들고, apt에 해당 위치를 읽도록 만들어야 합니다.

이전 기사에서 만들어 놓은 스크립트를 이용하는 새로운 스크립트를 만듭니다.

  • cd ~/mydebs/
  • nano update-mydebs
#! /bin/bash

cd ~/mydebs
dpkg-scanpackages . > Packages
cat Packages | gzip -9c > Packages.gz

~/generate-release.sh > Release
cat Release | gpg --default-key key_id -abs > Release.gpg
cat Release | gpg --default-key key_id -abs --clearsign > InRelease
  • chmod +x update-mydebs
  • ./update-mydebs

여기서 key_id는 자신의 것으로 수정하셔야 합니다.

이제 목록이 준비되었습니다. Apt에서 읽도록 저장소를 등록합니다:

  • sudo nano /etc/apt/sources.list.d/local.list
deb file:///home/$USER/mydebs ./

위에서 $USER는 사용자 id로 바꾸십시오.

그런-다음 키를 이전 기사에서 처럼, GnuPG 키를 만들고, 정해진 위치로 옮겨야 합니다.

그 과정이 힘들면, 위의 스크립트에서 마지막 2줄을 제거하고 사용할 수 있습니다. 단지, 귀찮은 메시지를 계속 받을 것입니다:

  • sudo apt update
  • sudo apt upgrade

서명을 하지 않았을 때,

  • sudo apt-get --allow-unauthenticated update
  • sudo apt upgrade

Qemu guest

공식 저장소로 옮기기 전에, 가상 기계에 있는 시스템에서 테스트가 필요할 수 있습니다. 그러기 위해, 호스트의 파일 시스템을 게스트에서 마운트할 수 있어야 합니다.

QEMU/Installation#Linux_host_linux_guest를 읽고 마운트를 합니다.

공개 키가 수입하지 않았으면, Debian/Dawoum bullseye repository에서와 같이 공개 키를 가져옵니다.

그런-다음 게스트에서 마운트된 디렉토리, 예를 들어, /home/$USER/mydebs를 /etc/apt/sources.list.d/local.list에 해당 디렉토리를 설정해 줍니다:

deb file:///home/$USER/mydebs ./

이제, 해당 저장소를 읽을 수 있습니다:

  • sudo apt update
  • sudo apt upgrade