2010-10-08 8 views
7

Ludzie, którzy naprawdę znają odpowiedź na to pytanie, to ci, którzy opracowują programy lub biblioteki, które są zawarte w dystrybucjach Linuksa i które zależą od innych bibliotek, które są zawarte w dystrybucjach Linuksa. Po prostu mówienie mi, co robią w kontekście środowiska programistycznego, które opisuję, byłoby pomocne.Jakie są dobre dystrybucje Linuksa (i metody) do rozwijania najnowszych pakietów Linux upstream (jądro, Gnome itp.)?

Problem w zasadzie jest tak:

dystrybucje Linuksa pakiet jądra Linux z typowym kanalizacji - glib, dbus, udev i tym podobne. Większość obejmuje także środowiska graficzne, takie jak KDE lub Gnome.

Podczas gdy dystrybucja może mieć kilka pakietowych pakietów programowych, większość programów i bibliotek pochodzi z wcześniejszych źródeł, co oznacza źródła inne niż ona sama. Pakiety takie jak dbus są "upstream" i przepływają w dół do dystrybucji takich jak Debian, Fedora, Ubuntu i tym podobne.

Czasami używam tych programów i uważam, że można je poprawić. Niektóre z ulepszeń to poprawki, których naprawdę nie można dyskutować - powiedzmy małą poprawkę, która zapobiega błędowi segmentacji spowodowanemu niepotrzebnym naruszeniem pamięci.

Podczas budowania tych pakietów dystrybucja jednej rzeczy obejmuje listy "zależne", ponieważ wiele z nich opiera się na określonych bibliotekach (i niektórych wersjach tych bibliotek), a niektóre z tych bibliotek korzystają z innych bibliotek. Prowadzi to do niektórych komplikacji, które napotykam.

Jeśli napotkam błąd w programie lub bibliotece i zgłoszę go wcześniej, często zadawane jest pytanie "czy używasz najnowszej wersji w kontroli źródła lub starszej wersji". Zrozumiałe jest, że programiści chcą, żebym użył kodu z ostatniego zatwierdzenia, ponieważ nie chcą tracić czasu na przeglądanie terenu, który już omówili, szczególnie jeśli błąd został naprawiony.

Więc idę, aby uzyskać najnowszy commit. Ale potem pojawia się problem, ponieważ ostatnie zatwierdzenie zależy teraz od biblioteki, która jest nowsza niż mój system operacyjny.

Przykładem może być przeglądanie pliku PDF z domyślnym czytnikiem w systemie Ubuntu. Nie wyświetla się prawidłowo ze względu na to, co wydaje się być wadą w bibliotece popplera, od której zależy wynik. Więc opublikuję błąd, ale oni chcą wiedzieć, czy mam najnowszą wersję poppera. Pobieram więc ostatnie zatwierdzenie poppler, ale biblioteka popplera zależy od biblioteki cairo, a mój system operacyjny nie ma najnowszej biblioteki cairo. Muszę to zdobyć - ale potem Kairo skarży się, że nie mam najnowszych bibliotek Pixmana i X11.

Jest to jeden z przykładów tego, ale dotyczy to praktycznie każdej paczki.

Moje pytanie brzmi: jaka jest dobra dystrybucja Linuksa do użycia w tego typu sprawach? Który jest znany z posiadania najbardziej aktualnych pakietów, lub przynajmniej możliwość ich łatwego uzyskania?

A może dystrybucja Linuksa, która łatwiej pozwala mi robić takie rzeczy. Słyszałem o tym, jak Gentoo buduje ze źródła za pośrednictwem emerge i widziałem, jak rozwiązuje to wiele problemów.

Istnieje również opcja posiadania podsystemu najnowszych pakietów w chrootowanym środowisku w innym systemie przy użyciu narzędzi takich jak pbuilder i debootstrap.

Wreszcie, mógłbym po prostu pobrać najnowsze zatwierdzenia wszystkich bibliotek, zbudować ten, który nie jest zależny od moich potrzeb, a następnie przejść do następnego i zbudować go, wskazując programowi, aby korzystał z mojej skompilowanej biblioteki lokalnej , a nie bibliotekę systemową, a następnie wykonaj to ponownie i tak dalej. To jest to, czego staram się uniknąć z wielu powodów (o wiele za dużo ręcznego miażdżenia, może brak mi ważnej zależności itp.).

+0

Jeśli chodzi o moje pytanie powyżej, odkryłem, że Gnome ma system kompilacji o nazwie "jhbuild" (http://live.gnome.org/Jhbuild), w którym można uzyskać najnowsze wersje git commit całego projektu Gnome . To byłoby rozwiązanie powyższego przykładu. Zgadzam się, że KVM to dobre środowisko do zabawy bez obawy o zbyt duże obrażenia, zacząłem robić to jeszcze więcej po przeczytaniu odpowiedzi. Dzięki za odpowiedzi. –

Odpowiedz

0

Jeśli chodzi o moje pytanie powyżej, odkryłem, że Gnome ma system kompilacji o nazwie "jhbuild" (live.gnome.org/Jhbuild), w którym można uzyskać najnowsze wersje git commit całego projektu Gnome. To byłoby rozwiązanie powyższego przykładu. Zgadzam się, że KVM to dobre środowisko do zabawy bez obawy o zbyt duże obrażenia, zacząłem robić to jeszcze więcej po przeczytaniu odpowiedzi. Dzięki za odpowiedzi.

1

Gentoo jest całkiem niezłe jeśli chodzi o pakiety z krwawiącymi krawędziami, o ile zdemaskujesz " ~ x86 "(lub ~ amd64 lub ~ arch dla dowolnego twojego łuku).

ebuildy mogą integrować się z kontrolą wersji, więc nie jest to zbyt trudne, aby zmodyfikowany ebuild ściągnął najnowszą wersję svn lub git, a następnie skompilował i zainstalował ją tak, jakby był pakietem rozproszonym.

+0

Ponadto, ponieważ Gentoo buduje rzeczy ze źródła, jeśli aktualizujesz niektóre pakiety lub całą masę pakietów, możesz z łatwością odbudować wszystkie swoje podopieczne (i automatycznie, używając 'revdep-rebuild'). Dystrybucja binarna wymaga uaktualnienia pakietów w lock-step. –

4

Zaangażuj się w dystrybucji, koncentrują się na opakowaniach, które mają na celu poprawę
z dystrybucji zapewniają wersje pakietów działają dobrze razem. Jest to pierwsza praca w budowaniu systemu Linux i już to zrobili. Zapewniają, że wszystko "pasuje". Jeśli chcesz ulepszyć pakiet, wykonaj poprawki w wersji dla dystrybucji. Jeśli łata zawiera wartość, może zostać zastosowana do najnowszej wersji.

Nie wszystkie pakiety cierpią na problemy z deprawacją, więc można je zbudować z repozytorium i w ten sposób wesprzeć. Przede wszystkim dystrybucja jest środowiskiem, z pakietami upstream często otrzymującymi wkład od deweloperów dystrybucji.

Nie ma sensu budowanie całej dystrybucji tylko po to, by rozwinąć rdzeń Gnome naprawdę. Po prostu popraw układ Gnome Gentoo i spróbuj zastosować odpowiednie poprawki.

Skoncentruj się na tym, gdzie możesz wpisać wartość, a nie spędzić 1/4 swojego życia czekając na kompilacje i pracując nad tym, dlaczego pakiet X nie skompiluje się z biblioteką Y, gdy tylko chcesz pracować na Z!

pracuję z Fedora Rawhide robiąc żadnej dev-rzeczy, to nie jest tak jak niektórzy krwawienie krawędzi, ale oferuje dobrą stabilność i zmienność IMVHO

Albo zawsze:

Linux From Scratch, jeśli chcesz ból.

+0

Świetna rada! +1 – slezica

2

To naprawdę nie powinno mieć znaczenia. Dystrybucja powinna dać ci podstawowy szkielet i pewną stabilność - użyj więc tej dystrybucji, która "działa" dla ciebie. I niezależnie od tego, nad czym pracujesz, może to i tak pochodzić z systemu kontroli wersji.

To powiedziawszy, zacząłem od Debiana w 1994 roku i nadal używam go, a także Ubuntu (i utrzymywałem pakiety dla Debiana także od 1995 roku). Kiedy rozwijam się na Ubuntu, czasami biorę pakiet źródłowy z dystrybucji Debian unstable i buduję go lokalnie - co jest naprawdę całkiem proste, ale naprawdę przydatne. W ten sposób mam to, co najlepsze z obu światów: "rozsądnie aktualny" zestaw wszystkiego dzięki dwuletnim aktualizacjom Ubuntu oraz selektywne wstawianie wszystkiego, czego potrzebuję, co jest krwawieniem. Bardzo dobrą alternatywą są testy Debiana, które mam na innych systemach.

Innym wyborem jest wirtualizacja: wystarczy dodać kvm, lub xen, lub instancję wirtualnej skrzynki do dystrybucji bezgłowych "krwawiących krawędzi" (jak na przykład testowanie systemu Debian unstable) do testowania.

0

Gentoo przyda się, jeśli potrzebujesz lub chcesz edytować kod źródłowy pakietu.Jeśli jednak potrzebujesz tylko plików binarnych, dobrym wyborem jest archiwum Linuksa i jest ono dobrze udokumentowane. Jeśli chcesz mieć większą kontrolę, zawsze możesz pobrać i skompilować pakiety, ale widzę, że potrzebujesz tylko aktualnych pakietów, więc Arch będzie lepszy. To zależy od Ciebie.

1

Wybór dystrybucji nie powinien mieć większego znaczenia. Dowolna wersja Debiana niestabilna, Fedora rawide lub Mandriva Cooker powinna być dobra dla środowiska programistycznego pakietów Linux.

Powiązane problemy