개인 지역 데비안 저장소 만들기
공식적으로 배포를 위한 저장소는 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