우리는 DEB 패키지로 패키징될 애플리케이션을 구축하고 있습니다. 우리는 그것을 사용할 수 있기를 바랍니다 apt-get
.
이를 위해 우리는 조직 내에 자체 DEB 패키지 저장소를 배포할 계획입니다. (따라서 우리는 패키지만 호스팅하고 기존 외부 저장소를 미러링하지 않습니다.) 이 패키지 저장소는 조직 내의 모든 Linux 서버에서 단일 애플리케이션 패키지만 설치하는 데 사용해야 합니다.
이를 수행하는 방법(모범 사례 포함)을 설명할 수 있는 사람이 있습니까?
- 패키지에 대한 최소 DEB 패키지 저장소를 어떻게 설정하고 새 버전이 출시되면 처리할 수 있습니까?
- 조직 내의 사용자 정의 DEB 패키지 저장소 서버에서 이 단일 패키지를 얻으려면 Debian 서버를 설정하십시오.
답변1
수많은 문서 소스를 파헤친 후 나는 다음과 같은 해결책을 생각해 냈고 이를 공유합니다.
- 리포지토리를 호스팅하는 데 사용되는 머신에서 설명된 대로 개인 리포지토리를 설정합니다.우분투 문서, 하지만원하지 않는다해당 시스템에 source.list 항목을 추가하십시오.
DEB 파일을 사용하는 모든 컴퓨터에서 사용할 수 있도록 웹 서버(예: Nginx 사용)를 통해 DEB 파일과 Packages.gz 파일이 포함된 디렉터리를 노출합니다.
DEB 패키지를 가져올 머신에서
/etc/apt/sources.list
서버를 가리키는 파일에 항목을 추가합니다(foobar를 자신의 URL로 교체).deb [trusted=yes] http://foobar/ /
- 달리기
sudo apt update
- 자신만의 패키지를 설치 하려면 실행하세요
sudo apt install foobar
(foobar를 자신의 패키지 이름으로 바꾸세요).
노트:이 설정은 서명된 패키지/저장소에서 제공하는 보호 없이 DEB 패키지를 호스팅합니다. 회사 방화벽 뒤의 보호된 서브넷에 있는 Teams 서버보다 더 많은 대상이 리포지토리를 사용할 수 있는 경우 리포지토리 및 패키지 서명을 구현해야 할 수 있습니다.
답변2
답변에 설명된 대로 dpkg-scanpackages를 사용하여 이 작업을 수동으로 수행할 수 있습니다. 그러나 이를 처리할 수 있는 더 높은 수준의 도구가 있습니다. 리포지토리 및 기타 항목 마이그레이션 및 서명도 지원하는 간단한 도우미 도구입니다.레플리카. 첫째, 다음과 같이 작동할 수 있습니다.
$ mkdir ~/repo
$ cd ~/repo
$ mkdir incoming conf repository
$ cat > conf/options <<EOF
morguedir +o/old-versions
outdir +b/repository
EOF
$ cat > conf/distributions <<EOF
Codename: stretch
Origin: <you>
Label: <you>
Description: <description of this repository>
Architecture: source amd64 i386
Components: main
SignWith: <your gpg key ID>
EOF
$ cat > conf/incoming <<EOF
Name: incoming
IncomingDir: incoming
LogDir: logs
TempDir: /tmp
Multiple: yes
Permit: older_version unused_files
Allow: stretch
EOF
이제 리포지토리에 패키지를 추가할 때마다 패키지(및 해당 .changes
파일) 를 ~/repo/incoming
디렉터리에 추가한 후 다음을 수행할 수 있습니다.
cd ~/repo
reprepro processincoming incoming
GPG 키 비밀번호를 묻는 메시지가 표시됩니다(비밀번호가 없는 키가 아닌 경우). 일단 입력하면 저장소가 최신 상태가 되고 서명됩니다.
Reprepro는 잘 문서화되어 있습니다.매뉴얼 페이지;자세한 내용을 알고 싶으시면 확인해 보시길 권합니다.