Jak utworzyć umowę PPA dla działającego programu?

36

Załóżmy, że mam działającą aplikację napisaną w C, C ++ lub Python. Chcę utworzyć PPA Launchpad, aby inni mogli łatwo zainstalować go z pakietu. Podaj instrukcje krok po kroku, jak to zrobić od początku do końca. (Lub podaj link, który robi to samo;)

  • Czy język programowania ma znaczenie? (Czy to może być skrypt bash?)
  • Czy muszę coś dodać do mojej kompilacji?
  • Gdzie powinna się zainstalować kompilacja?
  • Jak zdefiniować zależności?
  • Jak korzystać z zależności?
  • Jak mogę utworzyć .deb?
  • Co muszę zrobić przed przesłaniem na Launchpad?
david.libremone
źródło
1
Zadaję to pytanie, ponieważ czasami zalecam projektom FLOSS utworzenie PPA (aby móc je łatwo zainstalować :) - Chciałbym móc wskazać im dokładny zasób lub sam.
david.libremone

Odpowiedzi:

33

To bardzo szerokie pytanie. Postaram się odpowiedzieć tak dużo, jak potrafię, ale na pewno NIE będzie to instrukcja krok po kroku. Wynika to z faktu, że nie ma algorytmu tworzenia pakietu krok po kroku. Sposób, w jaki to zrobisz, zależy od wielu czynników, głównie od rodzaju pakietu (aplikacji, biblioteki), struktury źródła i wielu szczegółów.

Na szczęście dokładny przewodnik znajduje się na stronie http://packaging.ubuntu.com

Spróbuję ci pomóc w zrozumieniu całego procesu, więc kiedy będziesz z nim bardziej zaznajomiony. Przewodnik po opakowaniach zawiera zasoby do dodatkowej pomocy.


Przede wszystkim powinieneś zdawać sobie sprawę, że utworzenie pakietu (pliku .deb) jest procesem odrębnym od tworzenia PPA. Utworzenie PPA polega na przejściu do profilu Launchpad i kliknięciu linku „Utwórz nowy PPA”. To wszystko. Jest stworzony, działa, ale jest pusty. Aby przesłać pakiet, musisz go najpierw utworzyć. Ale pozwól mi najpierw odpowiedzieć na niektóre z twoich drobnych pytań.

  • Język programowania wcale nie ma znaczenia. Może to być aplikacja C ++, skrypt Bash, Brainfuck Hello World, pojedynczy plik README lub zestaw fajnych zdjęć. Pakiety mogą zawierać dowolny plik. Podczas instalacji pakiet jest wypakowywany do katalogu głównego („/”) twojego systemu plików. W ten sposób mogą umieścić niektóre pliki w folderze binarnym, dodać tapety do domyślnego zestawu GNOME lub dostarczyć użytkownikowi skrypt Bash.
  • Ty NIE trzeba dodać coś do źródła. Musi to być katalog najwyższego poziomu o nazwie „debian”. Będą pewne pliki ze szczegółami pakietu - zostaną one użyte do zdefiniowania typu pakietu itp.
  • Zależności są wymienione w jednym z tych plików (między innymi szczegółami). Skąd je wziąć? Są to po prostu inne pakiety używane przez twoją aplikację. Twórca aplikacji BĘDZIE wiedział, jakich bibliotek i zasobów potrzebuje jego program, więc nie powinien mieć większych problemów z ich umieszczeniem na liście.
    • Niektóre narzędzia użyte do zbudowania pakietu (pbuilder) mogą automatycznie uzupełniać zależności, prawdopodobnie poprzez określenie wymagań aplikacji podczas kompilacji.
  • Jest również wysoce zaleca się stosowanie Autotools . To kolejna rzecz, którą możesz potrzebować dodać, ale prawdopodobnie prawie każde oprogramowanie już z nich korzysta. AutoTools to zestaw niezwykle pomocnych programów - na przykład automake, autoconf i autoscan. Podczas kompilacji i instalacji programu ze znanym ./configure && make && make install następnie narzędzia automatyczne są używane do automatycznego radzenia sobie ze źródłem, do przygotowania innych zasobów dołączonych do źródła do instalacji oraz do wyodrębnienia wyniku kompilacji w odpowiednie miejsce (w celu odpowiedzi na pytanie: kompilacja wyodrębni WIELU oddzielnych miejscach. pliki binarne przejdą do / usr / local / bin, dokumenty do / usr / local / share / docs itp. Co więcej, pliki binarne z pakietu pójdą nawet w inne miejsca, np. pliki binarne do / usr / bin. z tym skomplikowanym układem katalogów? Użyj AutoTools - zajmie się nim automatycznie i dlatego są tak przydatne).

Budowanie pakietu .deb może wydawać się naprawdę skomplikowanym procesem, ale nie jest takie trudne. Gorąco polecam oficjalny przewodnik Ubuntu na temat tworzenia pakietów: http://packaging.ubuntu.com

Jest OGROMNY, ale zobaczysz, że prawdopodobnie możesz pominąć większość części tego tekstu (w zależności od tego, jaki pakiet zbudujesz). Zasadniczo proces pakowania składa się z tych części (wszystkie są wyjaśnione w Przewodniku) :

  1. Inicjuj niektóre narzędzia używane do budowania pakietów.
  2. Uzyskaj źródło
  3. Utwórz katalog ./debian i wypełnij go wymaganymi danymi
  4. Zbuduj pakiet za pomocą debuild [To powinno stworzyć zestaw plików, w tym * .dsc, * _source.build, * _source.changes, które są odpowiedzialne za dane o pakiecie i jak sobie z tym poradzić (będziesz też miał źródło .tar.gz)]
  5. Sprawdź, czy wszystko działa, uruchamiając pbuilder lokalnie (zajmie wszystkie wyżej wymienione pliki i spróbuje połączyć je w pakiet .deb, automatycznie budując źródło za pomocą AutoTools - dlatego są one kluczowe dla pakowania [szczerze mówiąc - nie - możesz sobie bez nich poradzić lub z pewnymi alternatywami, ale jest to najłatwiejsze podejście, a inne mogą wymagać zaawansowanej konfiguracji, ponieważ musisz pouczyć konstruktora, jak zbudować źródło (używając pliku ./debian/rules ) - ale to nie jest dla początkujących] ) - jeśli chcesz tylko dostać pakiet .deb, to gotowe.

Teraz musisz przesłać go do PPA, co wyjaśniono na tej stronie pomocy: https://help.launchpad.net/Packaging/PPA/Uploading

  1. Użyj dput, aby przesłać te pliki do Launchpad
  2. Launchpad uruchomi pbuilder na swoich komputerach i wygeneruje pakiety w czystym środowisku
  3. Wreszcie, pakiety powinny pojawić się w PPA.

Jak widzisz, tworzenie PPA nie jest takie proste . Ale nie bój się , to też nie jest takie trudne. Ponadto zalecam, aby nie zachęcać programistów do korzystania z PPA, ponieważ prawdopodobnie nie będą cię słuchać, ponieważ będą musieli wykonać dodatkową pracę (a gdyby chcieli, już by to zrobili), ale możesz chcesz spróbować wesprzeć programistów Ubuntu i całą społeczność i dostarczyć im przygotowane pakiety :)

Życzę powodzenia w tworzeniu pakietów, mam nadzieję, że moja odpowiedź będzie pomocna :)

Twój przyjaciel Rafał Cieślak

Rafał Cieślak
źródło
Jak można utworzyć PPA bez Launchpada, hostowane we własnej infrastrukturze? Czy to tylko prosty serwer WWW z odpowiednią strukturą katalogów?
Prof. Moriarty
czy przykład brainf * ck był naprawdę potrzebny?
Camden,
5
  • Przed przesłaniem pakietu musisz skonfigurować go do .debpakowania, zobacz Ubuntu PackagingGuide .

  • Po zbudowaniu pakietu oprogramowania zapoznaj się z dokumentacją PPA Launchpad . Poprowadzi Cię od tworzenia PPA do przesyłania pakietu.

Izajasza
źródło