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.).
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. –