====== Aktualizacja pliku spec w przykładach ====== Zakładam, że mamy już [[:pl:DevelopingPLD:PreparingWorkingEnvironment|przygotowane środowisko budowania]], dlatego przejdziemy od razu do rzeczy. W przykładach będziemy aktualizować fikcyjny pakiet **foo** z wersji 1.5 do 1.6. Zaczynamy od pobrania skryptem [[:pl:DevelopingPLD:BuilderScript|builder]] całej paczki z HEAD (ewentualnie z odpowiedniego brancha): $ builder -g foo aby było nam wygodniej pracować, możemy zmienić katalog: $ cd ~/rpm/packages/foo ===== Aktualizacja aplikacji w specu ===== Teraz za pomocą edytora tekstu otwieramy plik spec: $ vim ~/rpm/packages/foo/foo.spec i odszukujemy sekcje odpowiedzialne za wersję, które mogą wyglądać następująco: Version: 1.5 Release: 3 wartość **Version:** zmieniamy na **1.6** zaś **Release:** na **1**. Zmiana wersji wymaga, by Release ustawić na wartość 1. Wyjątkiem jest sytuacja gdy trzeba zasygnalizować, że spec nie jest skończony, wtedy nadajemy ułamkową wartość np.: 0.1. Teraz musimy sprawdzić czy pakiet się buduje. Musimy sprawdzić czy pakiet się buduje zanim wykonamy commit lub wyślemy łatkę do jakiegoś dewelopera. Zaczniemy od aktualizacji sum md5 źródeł w pakiecie: $ builder -5 foo teraz możemy budować, w poniższym przykładzie budujemy tylko binarne wersje (-bb) żeby oszczędzić na czasie. $ builder -bb foo Jeśli pakiet się zbudował możemy wykonać commit, dodaniem odpowiedniego komentarza (-m): $ cvs ci -m "- updated to 1.6" foo.spec Jeśli pakiet się nie buduje to czytaj o Rozwiązywaniu problemów poniżej. ===== Inne aktualizacje w specu ===== Każde zmiany nie dotyczące aktualizacji samej aplikacji np.: * nałożenie łatek * poprawienie zależności: **Requires** i **[[:BuildRequires|BuildRequires]]** * modyfikacje opisów wymagają podbicia tagu **Release**, tak by pakiet mógł być zbudowany i zaktualizowany. Podbicia dokonuje się także wtedy, gdy żadne zmiany nie są robione w specu, robi się tak by aplikacja została na nowo zbudowana, np. w celu zlinkowania z nowszą wersją bibliotek. Po każdej zmianie, a zwłaszcza po nałożeniu łatek musimy się przekonać czy pakiet się buduje, zatem: $ builder -bb foo Kiedy wszystko jest w porządku możemy dokonać commit speca (i ewentualnie łatek). ===== Rozwiązywanie problemów ===== Przy aktualizacji może pojawić się każdy możliwy problem jednak najczęściej pojawia się problem z łatami i/lub niespakietowanymi plikami. ==== Błąd przy nakładaniu łatek ==== Zdarza sie, że w nowszej wersji aplikacji autorzy nałożyli już taką łatkę i jedyne co pozostaje nam zrobić to usunąć ją ze speca. W gorszym przypadku kod źródłowy zmienił się na tyle, że łatka po prostu nie da się nałożyć. Musimy porównać źródło z łatką i podjąć odpowiednie kroki: usunąć łatkę lub ją zmodyfikować, tak by się nakładała. Przy okazji można sprawdzić czy łatka w ogóle jest potrzebna, trzeba sprawdzić w historii rewizji po co w ogóle została dodana. Aby wyłączyć łatkę usuwamy ze speca odpowiedni tag **Patch{NR}** z nagłówka speca i polecenie nakładające go z **%prep**. Teraz próbujemy budować (jak powyżej). Jeśli wszystko działa poprawnie usuwamy łatkę, w tym celu wchodzi my do katalogu ~/rpm/packages/foo/ i usuwamy plik o odpowiedniej nazwie np.: $ rm foo-special-fix.patch usuwamy łatkę ze CVS-u: $ cvs remove foo-special-fix.patch i teraz możemy zrobić commit wszystkich zmian z informacją o usunięciu łatki: $ cvs ci ==== Niespakietowane pliki/brak plików ==== Rozwój aplikacji powoduje czasami większe lub mniejsze zmiany w liście plików. Builder nas poinformuje, w takim wypadku musimy dokonać zmian w sekcjach **%files**. Musimy to pamiętać by używać makr zamiast konkretnych ścieżek. ==== Uwagi ==== Warto, nawet po najmniejszej zmianie w specu, uruchomić skrypt [[:pl:DevelopingPLD:AdapterScript|adapter]], w celu weryfikacji i dokonania automatycznych poprawek: $ ./adapter foo.spec