it-swarm-tr.com

APT depo nasıl kurulur?

Birkaç paket sağlayacak bir sunucuda bir APT depo kurmak istiyorum.

Sunucuya herhangi bir yazılım yüklemenin bir olmadan bir yolu var mı?

Dosyalar nasıl organize edilmelidir?


Düzenleme: Yanlış bir şey yapmalıyım ... Birisi bana yardım edebilir mi? Bende depo var http://quickmediasolutions.com/apt/dists

Nerede veya ne olduğundan emin değilim ama bir şey yanlış yapılandırılmış. Şu anda sadece bir paketim var ve tüm mimariler için.

İşte /etc/apt/sources.list:

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

Önemsiz bir depo kurmak dpkg-scanpackages kullanarak çok kolaydır. Bu sayfa önemsiz bir reponun nasıl kurulacağını açıklıyor ve b bunun nasıl kullanılacağını açıklıyor (örnek 4'e ilerleyin).

26
Michael Crenshaw

Bir web sunucusunda basit basit ama imzalı bir depo kurmanız yeterlidir. Diğer eğiticilerin çoğu biraz tarihli veya hantal olduğu için, prosedürü burada tekrarlamaya çalışacağım. İlk yapılandırma biraz çaba gerektirir, ancak basit oluşturma betiği yönetmeyi kolaylaştırır. Ve yeni *.deb dosyalarını açın, güncelleyin veya bir cron işinin bunu yapmasına izin verin.

Bazı imzalama anahtarları oluşturun

Öncelikle paketler ve deponuz için bir gpg imzalama anahtarı oluşturmanız gerekir. (4) RSA imzalama anahtarı yapın, şifre yok ve benzersiz bir $KEYNAME istendiğinde. (Diğer örnekler "dpkg1 "anahtar adı olarak.)

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

Parola demedim, çünkü web sunucunuzda tekrar tekrar yazmak için yerleşik maymun yok. İmzalı paketler ve depo sadece güncelleme yöneticilerinin bu konudaki şikayetlerini karşılamak içindir. Her iki anahtarı da yeni /apt/ web sunucunuzda depo dizini, ancak secret.gpg key sonra başlatma.

CGI betiğini güncelleme

Bunun için basit güncelleme Shell/CGI betiği:

#!/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

gpg satırının, bir dizindeki GPG kurulumunu başlatmak için yalnızca bir kez yürütülmesi yeterlidir $GNUPGHOME (belge kökünün üstünde). Yalnızca secret.gpg başarıdan sonra.

Bu küçük Shell betiğinin benzersiz bir özelliği, herhangi bir *.deb bıraktığınız dosyaları, ancak başkaları için özyinelemeli olarak (bir düzeyden başlayarak) arar ve bunları işaretler. (.htaccess Options FollowSymLinks Sonuçta.)

Bu komut dosyasını el ile CGI olarak veya cron işi başına çalıştırabilirsiniz. Ancak gizleyin veya daha iyisi belge kökünden çıkarın.

"Önemsiz" uygun bir havuz olduğu için aşağıdakilere ihtiyacı vardır apt-sources.list girişi:

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

Tek mimarili depolar için uygundur ve yüzlerce paket beklemiyorsanız.

Paket imzalama

Gpg anahtarlarınızı ayarladıktan sonra, bireysel paketlerinizi imzalamak da önemsizdir:

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

(Bu, depo web sunucusunda değil, paketlerin oluşturulduğu iş istasyonunda yapılmalıdır.)

İmzasız depo

İmzalı paketlere ihtiyacınız yoksa, güncelleme komut dosyasını aşağıdakilere indirgeyebilirsiniz:

  dpkg-scanpackages . > Packages
  bzip2 -kf Packages

Yine de ortalama kullanıcılar tarafından kullanılabilir, ancak apt.sources:

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

Ama lütfen trusted=yes her şey için alışkanlık olarak bayrak veya aslında Paket kökeni hakkında emin değilseniz.

Kullanılabilirlik için

Son kullanıcılar için bir HEADER.html depo dizinine. Apaçi mod_auto_index bu notun başına:

<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>

Alternatifler

Günümüzde depo yönetimini otomatikleştirmek için birkaç araç vardır. Ve hatta çevrimiçi depo barındırıcılar ve paket oluşturma hizmetleri ( gemfury , packagecloud , bintray vb.)

  • Oldukça uygun bir alternatif prm . Bu bir Ruby komut dosyasıdır, bu karmaşık APT ve YUM depolarını oluşturur. (Ama diyelim ki RPM sonunda bir süre sonra ölecek ..) - gem install prm.

  • Ve ben de benzer şekilde otomatikleştirmek için küçük bir senaryo yazdım: http://apt.include-once.org/apt-phparchive - Lütfen aşırı sağlam ve PHP (bir kez, bu tesadüf) ve başlangıçta DEB ve APT üzerinden RPM ve Phar paketleri için tasarlandı.

Bu orijinal soru ile yakından ilgili olduğundan, Debian paketlerini daha kolay oluşturmak için araçlar da vardır. Biraz eskimiş: EPM . Çok daha çağdaş: FPM . Ve benim kişisel çatalım: XPM (komut dosyası dil uygulamalarını paketleme için daha tembel bir yaklaşım.)

40
mario

Evet. Bunu yapabilirsiniz. Dosyaları doğru şekilde organize etmeniz ve dizin dosyalarını oluşturmanız yeterlidir. Dizin yapısını web sunucunuzun belge köküne koyarsanız, paketlere yalnızca web sunucusu üzerinden erişilebilir.

Here dosyaların nasıl düzenlenmesi gerektiği ve dizin dosyalarının nasıl oluşturulduğu ile ilgili ayrıntılı bir açıklamadır.

Bu paketi yüklemek istiyorsanız reprepro adlı bir araç da kullanabilirsiniz. Bu, yönetimi biraz daha uygun hale getirecektir.

7
txwikinger

Belki de Launchpad PPA

2
ups

Mario'nun cevabını takip ettikten sonra bu hatayla karşılaşan herkes için:

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

aşağıdakileri yapın:

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

Ben koyuyorum *.deb dosyaları debs klasöründe.

0
theeminence