원문 보기: https://dawoum.duckdns.org/wiki/Creating_local_Debian_apt_repo/DEB822#Troubleshootings
Creating local Debian apt repo의 방법은 deb822 형식으로 바뀌면서 더 이상 사용할 수 없습니다.
지역 패키지도 Creating and hosting my own Debian apt repo와 같은 방법으로 설정할 수 있습니다.
먼저, 디렉토리 구조를 만듭니다:
- mkdir -p ~/Projects/repo/pool/main
- mkdir -p ~/Projects/repo/dists/trixie-local/main/binary-amd64
이제 테스트를 위해, 적당한 deb 파일을 저장소에 복사합니다:
- mkdir -p ~/Projects/repo/pool/main/nala
- cp nala_0.15.4-6_all.deb ~/Projects/repo/pool/main/nala
두 개의 파일을 만듭니다:
- vi ~/Projects/generate-release.sh
#!/bin/sh
set -e
do_hash() {
HASH_NAME=$1
HASH_CMD=$2
echo "${HASH_NAME}:"
for f in $(find -type f); do
f=$(echo $f | cut -c3-) # remove ./ prefix
if [ "$f" = "Release" ]; then
continue
fi
echo " $(${HASH_CMD} ${f} | cut -d" " -f1) $(wc -c $f)"
done
}
cat << EOF
Origin: Trixie-local Repository
Label: Trixie-local
Suite: trixie-local
Codename: tixie-local
Version: 1.0
Architectures: amd64
Components: main
Description: Trixie-local debian repository
Date: $(date -Ru)
EOF
do_hash "MD5Sum" "md5sum"
do_hash "SHA1" "sha1sum"
do_hash "SHA256" "sha256sum"
여기서 Trixie-local은 자신의 것으로 바꾸십시오. 그리고 Suite: Components: 는 저장소를 구성하는 이름이므로 적절히 정해야 하고, 아래 local.sources 파일을 참조하십시오.
- vi ~/Projects/update-mydebs
#! /bin/bash
cd ~/Projects/repo/
dpkg-scanpackages -m pool > Packages
cat Packages | gzip -9c > Packages.gz
mv Packages Packages.gz ~/Projects/repo/dists/trixie-local/main/binary-amd64/
cd ~/Projects/repo/dists/trixie-local/
~/Projects/generate-release.sh > Release
cat Release | gpg --default-key user_id -abs > Release.gpg
cat Release | gpg --default-key user_id -abs --clearsign > InRelease
저장소에 amd64, i386, all 등과 같이 패키지가 존재할 것이므로, dpkg-scanpackages -m 으로 목록화해야 합니다.
여기서 user_id는 패키지를 제작하는 사용자 ID로 바꾸십시오.
저장소 목록을 갱신합니다:
- bash ~/Projects/update-mydebs
이제 저장소는 준비되었으니, apt에서 목록을 읽어드리도록 설정합니다:
- vi /etc/apt/sources.list.d/local.sources
Types: deb
URIs: file:/home/user_id/Projects/repo
Suites: trixie-local
Components: main
Enabled: yes
Signed-By: /usr/share/keyrings/user_id_sign.gpg
여기서 user_id는 패키지에 사인한 사용자 ID를 적고, user_id_sign.gpg는 사용자의 공개 키 파일로 바꾸십시오.
저장소에서 데이터를 읽고 업데이트가 되었는지 확인하십시오:
- sudo apt update
- apt policy nala
Troubleshootings
아키텍처별 목록화
스캔할 때, --arch amd64, --arch i386, --arch all과 같이 각각을 목록화할 수 있지만, amd64, i386 목록화도 all이 함께 들어 있어서 3개의 파일에 같은 deb 파일이 목록화됩니다.