Mam źródło programu (pobrane z cvs / svn / git / ...) i chciałbym zbudować dla niego pakiet Debian / Ubuntu. Pakiet jest obecny w repozytoriach, ale:
- To jest starsza wersja (brakuje potrzebnych funkcji)
- Potrzebuję nieco innych opcji kompilacji niż domyślne.
Jak to zrobić najłatwiej? Martwię się o kilka rzeczy
- Jak mogę sprawdzić, czy poprawnie wypisałem wszystkie zależności? (Mogę uzyskać wskazówki, patrząc na to, od czego zależała starsza wersja, ale mogły zostać dodane nowe zależności).
- Jak mogę zapobiec instalowaniu przez system aktualizacji starszej wersji w repozytorium podczas aktualizacji?
- Jak mogę zapobiec instalowaniu przez system nowszej wersji (gdy jest niedostępna), nadpisaniu mojego pakietu niestandardowego?
Odpowiedzi:
możesz użyć specjalnego pakietu "checkinstall" dla wszystkich pakietów, których jeszcze nie ma w debianie / ubuntu.
Możesz użyć "uupdate" (
apt-get install devscripts
), aby zbudować pakiet ze źródeł z istniejącymi źródłami Debiana:Przykład dla libdrm2:
źródło
libdrm-2.3.1
dokładnie? Również skąd sięlibdrm-2.4.1.tar.gz
wzięło (moje początkowe założenie jest takie, że jest to skompilowany plik binarny aplikacji, którą chcemy spakować w pliku deb, ale zastępując istniejącą wersję, czy to prawda?)You must put some 'source' URIs in your sources.list
, odkomentuj wiersze deb-src w/etc/apt/sources.list
Najpierw pytanie tytułowe: Zakładając, że katalog debian już tam jest, bądź w katalogu źródłowym (katalog zawierający katalog debian) i wywołaj dpkg-buildpackage. Lubię go uruchamiać z tymi opcjami:
co oznacza, że nie podpisuj wyniku i nie czyść.
Zdobywanie zależności to czarna sztuka. „Oficjalnym” sposobem jest sprawdzenie, czy kompilacja zależy od tego, czy pakiet buduje się tylko z systemem podstawowym, pakietami „niezbędnymi do budowania” i określonymi zależnościami budowania. Nie znam ogólnej odpowiedzi na zwykłe zależności, po prostu zajrzyj :)
Moja wiedza na ten temat może być nieaktualna, ale aby zająć się obydwoma: Użyj dpkg --set-selections. Zakładając, że nullidentd jest pakietem, który chcesz pozostać na miejscu, uruchom jako root
Alternatywnie, ponieważ tworzysz ze źródła, możesz użyć epoki, aby ustawić sztucznie wysoki numer wersji i nigdy więcej się nie przejmować. Aby użyć epoki, dodaj nowy wpis do pliku debian / changelog i umieść 99: przed numerem wersji. Biorąc pod uwagę mój przykład nullidentd, pierwsza linia zaktualizowanego dziennika zmian brzmiałaby:
Odnośnik Bernarda jest dobry, zwłaszcza jeśli musisz sam stworzyć katalog debian - pomocne są również odniesienia dla programistów i strona z ogólnymi zasobami . Link Adama również wygląda dobrze, ale nie znam go.
źródło
Do tego, co chcesz zrobić, prawdopodobnie będziesz chciał użyć różnicy źródeł Debiana, więc Twój pakiet jest podobny do oficjalnego, poza używaną wersją autorską. Możesz pobrać różnicę źródłową z packages.debian.org lub możesz ją pobrać razem z .dsc i oryginalnym archiwum źródłowym za pomocą "apt-get source".
Następnie rozpakowujesz nową wersję zewnętrznego źródła, przechodzisz do tego katalogu i stosujesz pobrany plik diff
Następnie wprowadź zmiany, które chcesz skompilować opcje i zbuduj pakiet, wykonując
źródło
Przykładowa kompilacja dla ccache oparta na Ubuntu :
Więcej szczegółów: http://blog.aplikacja.info/2011/11/building-packages-from-sources-in-debianubuntu/
źródło
źródło
Wierzę, że to jest pakiet Debiana „biblia”.
Cóż, jest to przewodnik nowego opiekuna Debiana, więc wiele z nich nie będzie miało zastosowania, ale obejmują one, co jest gdzie i gdzie jest.
źródło
Jeśli używasz Ubuntu, sprawdź projekt pkgcreator: http://code.google.com/p/pkgcreator
źródło
Oto samouczek dotyczący budowania pakietu Debiana.
Zasadniczo musisz:
Zwykle robię to wszystko w moim Makefile, więc mogę po prostu wpisać make, aby wypluć plik binarny i spakować go za jednym razem.
źródło
pbuilder
Jest doskonałym narzędziem do sprawdzania zarówno zależności kompilacji i zależności poprzez utworzenie czystego systemu bazowego w środowisku chroot. Kompilując pakiet w pbuilder, możesz łatwo sprawdzić zależności kompilacji, a testując go w środowisku pbuilder, możesz sprawdzić zależności.źródło
Jeśli chcesz szybko i łatwo zainstalować zależności kompilacji, użyj:
Spowoduje to zainstalowanie zależności. W tym celu potrzebujesz linii sources w pliku sources.list:
Jeśli przenosisz pakiety z wersji testing do stabilnej, pamiętaj, że zależności mogły ulec zmianie. Polecenie apt-get build-deb instaluje zależności dla pakietów źródłowych w bieżącym repozytorium.
Ale oczywiście dpkg-buildpackage -us -uc pokaże wszystkie odinstalowane zależności.
Jeśli chcesz częściej kompilować, użyj cowbuilder.
Następnie utwórz obszar kompilacji:
sudo DIST = squeeze ARCH = amd64 cowbuilder --create
Następnie skompiluj pakiet źródłowy:
Zobacz, gdzie cowbuilder umieszcza wynikowy pakiet.
Powodzenia!
źródło