Myślę, że pytania, które musimy zadać, aby odpowiedzieć na twoje pytanie, brzmią: „Co zyskują inne języki / ekosystemy dzięki swojemu scentralizowanemu repozytorium pakietów?” i „Czy dotyczy to C / C ++?”
Wydaje mi się, że odpowiedź na pierwsze pytanie ma coś wspólnego z początkową promocją nowego języka: pierwsi użytkownicy chcą, aby nowi przybysze mogli jak najłatwiej wejść do ekosystemu, uzyskać użyteczny, przetestowany kod i wnieść własny. Z oczywistych powodów „wykres użytkowania” ma zawsze jeden katalog główny - twórcę (-ów) języka. Zwykle istnieje jedna implementacja referencyjna (przynajmniej początkowo), dlatego każdy kod, który chcesz udostępnić, musi być z nim zgodny.
Ułatwia to tworzenie pakietów, które po prostu pobierają i kompilują. Oczywiście, gdyby C lub C ++ zostały wprowadzone w 2013 roku, ich społeczności mogłyby pójść podobną ścieżką ewolucyjną, ale nie zrobiły tego i nie ma jednego dominującego łańcucha narzędzi, do którego można by zastosować menedżera pakietów. To sprawia, że wdrożenie takiego programu jest zbyt kłopotliwe, aby było warte wysiłku. (powinieneś skłonić użytkowników do wyboru między libfoo-gcc i libfoo-vs? Czy pozostawiasz to programowi pakującemu do rozwiązania? Lub proces kompilacji? Jeśli tak, to w jaki sposób pakiet różni się od zwykłego tarballa?)
Podsumowując moją odpowiedź na pierwsze pytanie, myślę, że wzorzec tworzenia menedżerów pakietów służy głównie do przyspieszenia adopcji .
Mając to na uwadze, myślę, że dość łatwo jest zrozumieć, dlaczego żaden pojedynczy system nie powstał, aby zaspokoić tę potrzebę - ponieważ taka potrzeba nie istnieje dla programistów C i C ++. Problemem dla społeczności C i C ++ (lub jakiejkolwiek społeczności programistów) jest pierwotnie zasugerowana potrzeba: rozpowszechniania, aktualizowania i przekazywania kodu wstecznego. Zostało to rozwiązane wiele razy przez różne osoby o różnym stopniu sukcesu i rzeczywiście jeden system zyskuje znaczący udział w rynku: git (i niektóre inne systemy wcześniej).
Zasadniczo, gdy problemy się różnią, rozwiązania też wyglądają inaczej, ale IMHO różnica między pisaniem gem install
a pisaniem git clone
jest dyskusyjna.