Çalışan bir program için nasıl bir PPA oluşturabilirim?


36

C, C ++ veya Python ile yazılmış bir çalışma uygulamam olduğunu varsayalım. Bir Launchpad PPA oluşturmak istiyorum, böylece başkaları onu bir paketten kolayca yükleyebilir. Lütfen bunu baştan sona yapmak için adım adım talimatlar verin. (Veya aynı şeyi yapan bir bağlantı sağlayın;)

  • Programlama dili önemli mi? (Bir bash betiği olabilir mi?)
  • Yapım için bir şey eklememe gerek var mı?
  • Yapı kendini nereye kurmalı?
  • Bağımlılıkları nasıl tanımlarım?
  • Bağımlılıkları nasıl kullanırım?
  • Nasıl bir .deb oluşturabilirim?
  • Launchpad'e yüklemeden önce ne yapmam gerekiyor?

1
Bu soruyu soruyorum çünkü zaman zaman FLOSS'un bir PPA oluşturmasını önermekteyim (bu yüzden onları kolayca yükleyebilirim :) - Onları ayrıntılı bir kaynağa yönlendirebilmek veya kendim yapabilmek istiyorum.
david.libremone

Yanıtlar:


32

Bu çok geniş bir soru. Ben mümkün olduğunca koruyacağım olarak cevaplamaya çalışırız, ama kesinlikle OLMAYACAKTIR bir adım-adım talimat olacak. Bunun nedeni, paket oluşturmak için adım adım bir algoritma bulunmamasıdır. Bunu yapma şekliniz, çoğunlukla paketin türüne (uygulama, kütüphane), kaynağın yapısına ve birçok ayrıntıya bağlı olarak birçok faktöre bağlıdır.

Neyse ki, http://packaging.ubuntu.com adresinde kapsamlı bir rehber var.

Size tüm süreci anlamanız için biraz yardım etmeye çalışacağım, bu yüzden biraz daha aşina olduğunuzda. Paketleme Kılavuzu ek yardım için kaynaklar içerir.


Öncelikle, bir paket (.deb dosyası) oluşturmanın bir PPA oluşturmanın ayrı bir işlem olduğunun farkında olmalısınız. Bir PPA oluşturmak, Launchpad'inizin profiline gidip "Yeni bir PPA oluştur" bağlantısını tıklamaktan ibarettir. Bu kadar. Oluşturuldu, çalışıyor, ama boş. Bir paketi yüklemek için önce bir tane oluşturmanız gerekir. Ama önce bazı küçük sorularınızı cevaplayayım.

  • Programlama dili hiç önemli değil . Bir C ++ uygulaması, Bash betiği, Brainfuck Hello World, tek bir README dosyası veya bir dizi harika fotoğraf olabilir. Paketler herhangi bir dosya içerebilir. Kurulum sırasında paket dosya sisteminizin kök dizinine ("/") alınır. Bu şekilde bazı dosyaları ikili dosya klasörüne koyabilir, GNOME varsayılan setine bazı duvar kağıtları ekleyebilir veya kullanıcıya Bash betiği sağlayabilir.
  • Sen DO kaynağına şey eklemek gerekir. "Debian" adında üst düzey bir dizin olmalı. Paket ayrıntılarını içeren bazı dosyalar olacak - paketin ne tür olduğunu tanımlamak için kullanılacaklar.
  • Bağımlılıklar bu dosyalardan birinde listelenmiştir (diğer ayrıntıların yanı sıra). Onları nereden almak için? Bunlar uygulamanızın kullandığı diğer paketlerdir. Uygulamanın geliştiricisi, programının hangi kitaplık ve kaynakları gerektirdiğini bildiğinden, onları listeleme konusunda fazla sorun yaşamamalıdır.
    • Bir paket oluşturmak için kullanılan bazı araçlar (üretici) bağımlılıkları otomatik olarak doldurabilir, muhtemelen derleme sırasında uygulamanızın neye ihtiyaç duyduğunu belirler.
  • Ayrıca edilir yüksek kullanım için tavsiye Autotools . Bu, eklemeniz gerekebilecek başka bir şey, ancak muhtemelen hemen hemen her yazılım parçası bunları zaten kullanıyor. AutoTools son derece yararlı bir program kümesidir - birkaç adlandırma yapmak için automake, autoconf ve autoscan. Ünlü bir programı derlerken ve kurarken ./configure && make && make install daha sonra otomatik aletler kaynakla otomatik olarak ilgilenmek, kaynakla birlikte verilen diğer kaynakları kurmak ve hazırlamak için derlemenin sonucunu uygun bir yere çıkarmak için kullanılır (sorunuzu cevaplamak için: derleme MANY ayrı yerlere çıkar. İkili dosyalar / usr / local / bin, docs / usr / local / share / docs vb. adreslerine gidecektir. Ayrıca, bir paketten gelen ikili dosyalar farklı yerlere bile gidecektir, ikili dosyaları / usr / bin 'e gönderiniz. Bu karmaşık dizinler düzeni ile? AutoTools kullanın - otomatik olarak ilgilenir, ve bu yüzden çok faydalıdır).

Bir .deb paketi oluşturmak gerçekten karmaşık bir işlem gibi görünebilir, ancak o kadar da zor değil. Resmi Ubuntu paketlerini oluştururken sizlere tavsiye ederim: http://packaging.ubuntu.com

BÜYÜK, ancak muhtemelen bu metnin çoğu bölümünü atlayabileceğinizi göreceksiniz (hangi paketi oluşturacağınıza bağlı olarak). Temel olarak, paketleme işlemi bu parçalardan oluşur (hepsi Kılavuzda açıkça belirtilmiştir) :

  1. Paketleri oluşturmak için kullanılan bazı araçları başlatın.
  2. Kaynak almak
  3. ./Debian dizinini oluşturun ve gerekli verilerle doldurun
  4. Paketi debuild ile derleyin [Bu, * .dsc, * _source.build, * _source.changes dahil, paket hakkındaki verilerden ve bunlarla nasıl başa çıkacağınızdan sorumlu olan bir dizi dosya oluşturmalıdır. bir kaynak .tar.gz)]
  5. Testi olmadığını (yukarıda belirtilen tüm bu dosyaları alıp otomatik Autotools yardımıyla kaynağını oluşturarak, bir .deb paketinin içine bunları birleştirmek için çalışacağız lokal pbuilder çalıştırarak her şey çalışıyor - onlar ambalaj için çok önemlidir yüzden açıkçası [konuşma - değil - onlarsız ya da bazı alternatiflerle başa çıkabilirsiniz, ancak bu en kolay yaklaşımdır ve üreticiye kaynağın nasıl oluşturulacağını öğretmeniz gerektiğinden (./debian/rules dosyasını kullanarak) bazı gelişmiş kurulumlar gerekebilir. ) - ama bu yeni başlayanlar için değil] ) - Sadece bir .deb paketi almak istiyorsanız, bitti.

Şimdi bu yardım sayfasında açıklanan PPA'nıza yüklemeniz gerekecek : https://help.launchpad.net/Packaging/PPA/Uploading

  1. Bu dosyaları Launchpad'e yüklemek için dput kullanın
  2. Başlatma üzerine pbuilder çalışacaktır onların bilgisayarlar ve temiz bir ortamda paketleri oluşturmak
  3. Son olarak, paketler PPA'da görünmelidir.

Gördüğünüz gibi bir PPA oluşturmak o kadar kolay değil . Ama korkma , o kadar da zor değil. Dahası, geliştiricileri bir PPA kullanmaya teşvik etmemenizi tavsiye ederim, çünkü muhtemelen sizi dinlemeyeceklerdir, çünkü bazı ek işler yapmaları gerekecekti (ve eğer isterlerse çoktan yapmışlardı), ancak Ubuntu geliştiricilerini ve tüm toplumu desteklemeyi ve hazırladığınız paketleri sağlamayı deneyin :)

Size paketler yaratmada iyi şanslar diliyorum , cevabımı faydalı bulacağınızı umuyorum :)

Arkadaşın Rafał Cieślak


Kendi altyapınızda barındırılan Launchpad olmayan bir PPA'yı nasıl oluşturabilirsiniz? Uygun dizin yapısına sahip basit bir web sunucusu mu?
Prof. Moriarty

brainf * ck örneği gerçekten gerekli miydi?
Camden

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.