OS/Linux

Reprepro 를 이용한 APT 저장소 구축

LukeHan1128 2022. 4. 15. 20:00
반응형

 

환경 구성

OS : HamoniKR SUN (ubuntu 18.04)

Server : Apache2

설정 경로 : /srv/repos/apt

 

 

 

 

준비

APT 저장소 구축 및 패키지 배포를 위해 아래 문서를 참고하여 GPG 키를 생성한다.

https://blog.lukehan.kr/entry/gpg-key-생성

 

아래 문서를 참고하여 배포할 패키지(deb)를 사전 준비한다.

https://blog.lukehan.kr/entry/deb-패키지-기본-파일-하모니카-30

 

 

 

 

설치

sudo apt-get install reprepro

 

 

 

 

설정

폴더 생성

sudo mkdir -p /srv/repos/apt/debian

배포 관리할 repository 폴더를 생성한다.

 

 

sudo mkdir -p /srv/repos/apt/debian/conf
sudo mkdir -p /srv/repos/apt/debian/db

reprepro 설정을 위해 위와 같이 입력하여 conf 폴더를 생성한다.

 

 

 

 

apache 설정

sudo vi /etc/apache2/conf.available/repos.conf

위와 같이 입력하여 apache 설정을 진행합니다.

 

 

Alias /repos/apt/debian /srv/repos/apt/debian

<Directory /srv/repos/ >
        # We want the user to be able to browse the directory manually
        Options Indexes FollowSymLinks Multiviews
        Require all granted
</Directory>

# This syntax supports several repositories, e.g. one for Debian, one for Ubuntu.
# Replace * with debian, if you intend to support one distribution only.
<Directory "/srv/repos/apt/*/db/">
        Require all denied
</Directory>

<Directory "/srv/repos/apt/*/conf/">
        Require all denied
</Directory>

<Directory "/srv/repos/apt/*/incoming/">
        Require all denied
</Directory>

위와 같이 내용을 입력하여 설정 합니다.

해당 문서에서는 /srv/repos/apt 를 경로로 사용하겠습니다.

작성이 완료 후 저장합니다.

 

 

sudo a2enconf repos
sudo apache2ctl configtest
sudo service apache2 reload

위와 같이 입력하여 apache2 설정 파일을 적용합니다.

apache2ctl configtest 입력 시 "Syntax OK" 메지시가 나오는 것을 확인합니다.

 

 

 

 

Reprepro 설정

gpg --list-secret-key --with-subkey-fingerprint

reprepro 설정을 위해 위와 같이 입력합니다.

 

 

pub   rsa3072 2022-02-26 [SC] [expires: 2024-02-26]
      E123D55E623D56323D65E123655E623D563D5831
uid           [ultimate] lukehan <lukehan@example.com>
sub   rsa3072 2022-02-26 [E] [expires: 2024-02-26]
      F24957412415744F1495F149571F2495F2495714

명령어를 입력하면 위와 같이 OpenPGP 정보가 나옵니다.

설정을 위해 sub 에 있는 정보를 복사합니다.

 

 

sudo vi /srv/repos/apt/debian/conf/distributions

위와 같이 입력하여 distribution 설정 정보 입력을 진행합니다.

 

 

Origin: Your project name
Label: Your project name
Codename: bionic
Architectures: i386 amd64
Components: main
Description: Apt repository for project x
SignWith: F24957412415744F1495F149571F2495F2495714

위와 같이 입력하여 설정 적용 합니다.

Origin, Label 에 Repository 명을 입력하고 SigWith 에 앞에서 확인한 GPG 정보를 입력합니다.

 

 

sudo vi /srv/repos/apt/debian/conf/options

위와 같이 입력하여 option 설정 정보 입력을 진행합니다.

 

 

verbose
basedir /srv/repos/apt/debian
ask-passphrase

위와 같이 입력하여 설정 적용 합니다.

 

 

 

 

저장소에 패키지 추가하기

sudo reprepro -b $repository_path includedeb $os_code_name $package.deb

ex)
sudo reprepro -b /srv/repos/apt/debian/ includedeb bionic boot-select_1.0.2_all.deb

준비한 deb 파일이 있는 경로로 이동한 후 위와 같이 입력한 후 GPG 인증서 비밀번호를 입력하여 패키지를 추가합니다.

 

 

sudo reprepro -b $repository_path list $os_code_name

ex)
sudo reprepro -b /srv/repos/apt/debian/ list bionic

위와 같이 입력하여 추가한 패키지 목록을 확인합니다.

 

 

 

 

저장소에서 패키지 제거하기

sudo reprepro -b $repository_path remove $os_code_name $package_name

ex)
sudo reprepro -b /srv/repos/apt/debian/ remove bionic boot-select

위와 같이 입력하여 패키지를 제거합니다.

 

 

 

 

gpg.key 배포

생성한 저장소를 다른 사람들이 사용하기 위해선 public gpg key 가 필요합니다.

 

gpg --armor --output repository.gpg.key --export-options export-minimal --export F24957412415744F1495F149571F2495F2495714

위와 같이 입력하여 gpg key 를 생성합니다.

생성한 key 를 저장소(/srv/repos/apt/debian/)로 옮깁니다.

 

 

 

 

저장소 추가하기

sudo wget -O - http://www.example.com/repos/apt/debian/repository.gpg.key | sudo apt-key add -

저장소를 사용할 pc 에서 위의 명령어를 입력하여 GPG key 를 추가합니다.

도메인 연결이 되어 있지 않은 경우 ip로 진행 합니다.

 

명령어 입력 후 OK 메시지가 확인되었다면 저장소를 추가합니다.

 

 

sudo vi /etc/apt/sources.list.d/repository.list

위와 같이 입력하여 repository 를 추가 진행 합니다.

 

 

deb http://www.example.com/repos/apt/debian/ bionic main

위와 같이 작성한 후 저장합니다.

 

 

sudo apt-get update

위와 같이 입력하여 추가한 저장소를 시스템에 반영합니다.

 

 

 

 

 

 

참고

 

반응형