web-development-kb-ko.site

APT 리포지토리를 설정하는 방법?

몇 가지 패키지를 제공 할 서버에 APT 리포지토리를 설정하고 싶습니다.

서버에 소프트웨어를 설치하는 방법이 있습니까? without

파일을 어떻게 구성해야합니까?


편집 : 내가 뭔가 잘못하고 있어야합니다 ... 누군가 도와주세요? http://quickmediasolutions.com/apt/dists 에 리포지토리가 있습니다.

어디서 또는 무엇을 잘 모르겠지만 무언가 잘못 구성되어 있습니다. 나는 현재 하나의 패키지 만 가지고 있으며 모든 아키텍처에 적용됩니다.

/etc/apt/sources.list에 추가 된 내용은 다음과 같습니다.

deb http://quickmediasolutions.com/apt stable main
52
Nathan Osman

Dpkg-scanpackages를 사용하면 간단한 저장소를 쉽게 설정할 수 있습니다. 이 페이지 사소한 저장소를 설정하는 방법을 설명하고 this one 사용 방법을 설명합니다 (예 4로 스크롤).

26
Michael Crenshaw

웹 서버에서 단순하지만 서명 된 저장소 를 설정하십시오. 대부분의 다른 자습서는 다소 날짜가 많거나 번거롭기 때문에 여기서 절차를 복제하려고 시도합니다. 초기 구성에는 약간의 노력이 필요하지만 간단한 빌드 스크립트를 사용하면 쉽게 관리 할 수 ​​있습니다. 그리고 새로운 *.deb 파일을 넣은 다음 업데이트하거나 cron 작업이 처리하도록 할 수 있습니다.

일부 서명 키 생성

먼저 패키지 및 저장소에 대한 gpg 서명 키를 작성해야합니다. 비밀번호가없는 (4) RSA 서명 키로 만들고 요청시 고유 한 $KEYNAME를 제공하십시오. 추가 예제는 "dpkg1"를 키 이름으로 가정합니다.

 gpg --gen-key
 gpg -a --export-secret-key dpkg1 > secret.gpg
 gpg -a --export dpkg1            > public.gpg

귀하의 웹 서버에는 반복적으로 입력 할 원숭이가 내장되어 있지 않기 때문에 비밀번호가 없습니다. 서명 된 패키지 및 리포지토리는 업데이트 관리자의 불만 사항을 만족시키기위한 것입니다. 두 키를 웹 서버의 새로운 /apt/ 저장소 디렉토리에 업로드하고 secret.gpgafter 초기화를 삭제하십시오.

CGI 스크립트 업데이트

다음은 간단한 업데이트 셸/CGI 스크립트입니다.

#!/bin/sh
echo Status: 200 Okay
echo Content-Type: text/plain
echo
echo Rebuilding APT repository:

{
  #-- settings
  export GNUPGHOME=/var/www/usr12345/files
  export KEYNAME=dpkg1
  #-- one-time setup
  if [ ! -e "$GNUPGHOME/secring.gpg" ] ; then
     gpg --import -v -v ./secret.gpg
     gpg --import -v -v ./public.gpg
     gpg --list-keys
  fi

  #-- symlink .deb files from adjacent sub-directories
  find .. -name '*.deb' -exec ln -s '{}' . \;

  #-- build Packages file
  apt-ftparchive packages . > Packages
  bzip2 -kf Packages

  #-- signed Release file
  apt-ftparchive release . > Release
  gpg --yes -abs -u $KEYNAME -o Release.gpg Release

} 2>&1

$GNUPGHOME 디렉토리 (문서 루트 위)에서 GPG 설정을 초기화하려면 세 개의 gpg 행을 한 번만 실행하면됩니다. 성공 후 secret.gpg 만 삭제하십시오.

이 작은 셸 스크립트의 고유 한 기능 중 하나는 삽입 한 모든 *.deb 파일을 허용하지만 다른 사용자를 위해 재귀 적으로 검색하고 (한 수준에서 시작하여) 심볼릭 링크하는 것입니다 (결국 .htaccess Options FollowSymLinks)

이 스크립트를 CGI 또는 cron-job별로 수동으로 실행할 수 있습니다. 그러나 그것을 숨기거나 문서 루트에서 벗어나십시오.

"사소한"적절한 저장소이므로 다음 apt-sources.list 항목이 필요합니다.

deb http://example.org/deb/  ./    # Simple signed repo

단일 아키텍처 저장소에 적합하며 수백 개의 패키지를 기대하지 않는 경우에 적합합니다.

패키지 서명

Gpg 키를 설정하면 개별 패키지에 서명하는 것도 간단합니다.

dpkg-sig -k dpkg1 -s builder *.deb

(이것은 저장소 웹 서버가 아닌 패키지가 빌드 된 워크 스테이션에서 수행되어야합니다.)

서명되지 않은 저장소

서명 된 패키지가 필요하지 않은 경우 업데이트 스크립트를 다음과 같이 줄일 수 있습니다.

  dpkg-scanpackages . > Packages
  bzip2 -kf Packages

여전히 일반 사용자가 사용할 수 있지만 apt.sources에 대한 사용자 지정 플래그가 필요합니다.

deb [trusted=yes] http://apt.example.org/deb/ ./

그러나 모든 것을 위해 습관적으로 trusted=yes 플래그를 사용하거나 패키지 Origin에 대해 실제로 확실하지 않은 경우 사용하지 마십시오.

유용성을 위해

최종 사용자의 경우 HEADER.html를 저장소 디렉토리에 놓으십시오. 아파치 mod_auto_index는 그 메모 앞에 덧붙일 것입니다 :

<h1>http://example.org/apt/</h1>
<dl>
<dt>Add this repository to /etc/apt/sources.list as:
 <dd><kbd>deb http://example.org/apt/ ./  # example repo</kbd>
<dt>Import verification key with:
 <dd><kbd>wget -q http://http://example.org/apt/public.gpg -O- | Sudo apt-key add -</kbd>
</dl>

대안

요즘 저장소 관리를 자동화하는 몇 가지 도구가 있습니다. 그리고 저장소 온라인 호스팅 업체 및 패키지 빌드 서비스도 있습니다 ( gemfury , packagecloud , bintray 등).

  • 보다 편리한 대안은 prm 입니다. 복잡한 Ruby 및 YUM 저장소를 빌드하는 APT 스크립트입니다. (하지만 RPM이 곧 언젠가는 소멸되기를 바랍니다.)-gem install prm에 따라 설치하는 것이 가장 좋습니다.

  • 그리고 나는 이것을 비슷하게 자동화하는 작은 스크립트를 작성했습니다. http://apt.include-once.org/apt-phparchive -지나치게 강력하고 PHP (한 번의 우연의 일치)이며 원래 DEB, RPM-over-APT 및 Phar 번들을위한 것입니다.

이것은 원래의 질문과 밀접한 관련이 있기 때문에 데비안 패키지를보다 쉽게 ​​구축 할 수있는 도구도 있습니다. 다소 오래된 것 : EPM . 훨씬 더 동시대 : FPM . 그리고 내 개인적인 포크 : XPM (스크립트 언어 앱 패키징을위한 더 게으른 접근법)

40
mario

예. 당신은 이것을 할 수 있습니다. 파일을 올바른 방식으로 구성하고 색인 파일을 작성하면됩니다. 웹 서버의 문서 루트에 디렉토리 구조를 넣으면 웹 서버를 통해 패키지에 액세스 할 수 있습니다.

Here 는 파일을 구성하는 방법과 색인 파일을 만드는 방법에 대한 자세한 설명입니다.

하나의 패키지를 기꺼이 설치하려는 경우 reprepro 라는 도구를 사용할 수도 있습니다. 이렇게하면 관리가 좀 더 편리해집니다.

7
txwikinger
2
ups

Mario의 답변을 따른 후이 오류가 발생하는 모든 사람 :

Unable to find expected entry 'Packages' in Release file (Wrong sources.list entry or malformed file)

다음을 수행하십시오.

dpkg-scanpackages debs /dev/null > Packages
gzip -k Packages
apt-ftparchive release . > Release
gpg --default-key $KEYID -abs -o Release.gpg Release

*.deb 파일을 debs 폴더에 넣었습니다.

0
theeminence