Jak tworzyć i administrować wieloma architekturami PPA?

13

Mam program, który należy ponownie skompilować dla każdej wersji Ubuntu.

Obecnie pakuję go za pomocą PPA Ubuntu tylko dla bieżącej dystrybucji.

W końcu muszę dostarczyć pakiety dla poprzedniej wersji ubuntu.

Nie jestem pewien, jak to osiągnąć.

Jak działa serwer kompilacji Ubuntu PPA - czy po prostu patrzy na pole dystrybucji w najnowszym wpisie dziennika zmian (w pliku debian / changelog), aby określić, dla jakiej dystrybucji pakiet powinien zostać zbudowany?

Specyfikacja debian pozwala dodawać wiele dystrybucji do pola dystrybucji. Ale to nie pomaga mi.

Niektóre dokumenty ubuntu mówią o zakodowaniu nazwy dystrybucji w numerze wersji (w pliku dziennika zmian Debiana).

Ale jak to działa w praktyce? Dostępna jest nowa wersja programu, co wtedy? Czy dodam dla każdej dystrybucji nowy wpis dziennika zmian, a serwer budujący PPA buduje automatycznie dla każdej dystrybucji nowe pakiety po zapisaniu go? A może serwer konstruktorów PPA patrzy tylko na pierwszy wpis dziennika zmian?

maxschlepzig
źródło
1
Bardzo mnie też interesuje ten proces!
Marco Ceppi

Odpowiedzi:

7

Najlepszym sposobem jest przesłanie raz dla każdej wersji Ubuntu .

Launchpad nie zbuduje pakietów dla wersji Ubuntu, które nie są już obsługiwane, i zbuduje pakiet tylko dla jednej konkretnej wersji Ubuntu. Wersja docelowa jest (jak już wiesz) określona w changelogpliku przez najnowszy wpis!

Pamiętaj, aby pamiętać, że pakiety, od których zależy Twój program, mogą nie być dostępne w tej samej wersji we wszystkich wersjach Ubuntu.

Mówisz również o „multi-architekturze” (architektura = typ CUP, np. X86, LPIA, AMD64), to nie ma znaczenia, ponieważ każdy przesyłany pakiet jest budowany dla wszystkich dostępnych architektur, o ile masz go Architecture: anyw debian/controlpliku definicji pakietu ( ), pozwala to również na uzależnienie pakietu od różnych pakietów dla różnych architektur (definiowanie pakietu więcej niż raz)

LassePoulsen
źródło
10

Launchpad ma nową funkcję obecnie w fazie beta, która pozwala zbudować pakiet dla wielu wersji ubuntu jednocześnie, bez dodatkowej pracy. Możesz nawet automatycznie budować swoje paczki każdego dnia. https://help.launchpad.net/Packaging/SourceBuilds/GettingStarted alternatywny tekst

Izajasza
źródło
1
Które brzmi interesująco. Nie mogę tego bezpośrednio użyć, ponieważ nie używam bzr ani startera do hostowania repozytoriów (używam Mercurial). Ale! Być może jest możliwe utworzenie repozytorium bzr na starterze i zrzucenie najnowszych zestawów zmian z mojego głównego repozytorium tam, za każdym razem, gdy chcę uruchomić nową kompilację pakietu.
maxschlepzig
Nie koduję niczego tak często i jestem podekscytowany.
aperson
@maxschlepzig Zadaj osobne pytanie, jak zaimportować swoje pliki Hg do Launchpad, a ja odpowiem.
Jorge Castro,
6

Jeśli chodzi o konwencje nazewnictwa, standardem jest zrobienie czegoś takiego:

  • 1.0-0ubuntu1 dla pakietu, który kończy się w oficjalnym archiwum Ubuntu
  • 1.0-0ubuntu1 ~ lucidppa1 dla wersji tego pakietu, którą umieściłeś w PPA dla lucid
  • 1.0-0ubuntu1 ~ karmicppa1 dla wersji tego pakietu dla Karmic

Powodem jest to, że ~ w polu wersji oznacza „mniej niż nic” dla numeru wersji. Więc jeśli ktoś doda twoje PPA w Karmic, dostanie pakiet ~ karmicppa1. Kiedy następnie zaktualizują do Lucid (i przeczytają PPA), zostanie on zastąpiony pakietem Lucid PPA. Jeśli następnie Twoja paczka przejdzie do oficjalnego archiwum, przejście z PPA przebiegnie bezproblemowo.

Inną zaletą jest to, że umieszczenie wydania w polu wersji wyjaśnia, do którego wydania odnoszą się pliki (i subtelnie przypomina o przesłaniu jednego wydania na wydanie). Możesz także potrzebować różnych gałęzi dla każdej wersji Ubuntu, na przykład w przypadku różnych zależności.

Scott Ritchie
źródło
Scott - czy jest na to jakaś dokumentacja?
Bartosz Radaczyński
~ I inne rzeczy są prawdopodobnie oznaczone w jakiś sposób niejasne. Reszta to tylko konwencje, które zaobserwowałem wśród innych programistów, a nie oficjalna udokumentowana praktyka.
Scott Ritchie
Ok, dzięki, sugerowana konwencja nazewnictwa działa dobrze.
Bartosz Radaczyński
Powinienem dodać, że czasami jest to dalej rozszerzane, aby umieścić dodatkowe ~ przed ppa: 1.0-0ubuntu1 ~ karmic1 ~ ppa1 Powodem tego jest to, że oficjalna aktualizacja stabilnego wydania Karmic może zostać wydana jako 1.0-0ubuntu1 ~ karmic1, a my chcę, aby wersja PPA była mniejsza niż ta.
Scott Ritchie
Musiałem zapytać w #launchpad na Freenode, i najwyraźniej jest to częściowo udokumentowane na LaunchPad Wiki w sekcji Budowanie pakietu źródłowego . Dzięki za informacje o tej konwencji, jest to bardzo pomocne ^ _ ^
TrinitronX