On možná problém vůbec není v balíčkovačích, ale v make (a ./configure). Protože tam jsou schované deklarace závislostí a také co se kam má nainstalovat. Gentoo popisuje postup instalace pomocí ebuild skriptů, ale pořád je to kód a ne popis. Otázka je, zda by se podařilo navrhnout takový popis sestavení aplikace, který by fungoval pro dostatečné množství aplikací a zároveň byl dost jednoduchý. Je jasné, že KDE by takhle asi nainstalovat nešlo, ale třeba IDE, přehrávač médií, kancelářský balík by takhle instalovat snad šly.
No ale to jste se právě dostal k tomu, co říkám já: hlavní problém za tím vším je, jak říct "tato moje aplikace ke své funkci potřebuje knihovnu libfoo přeloženou s volbou --bar a k překladu překladač gcc-brm ve verzi minimálně x.z" - což je přesně typ informací, které už dnešní balíčkovače umít spravovat.
Hlavní problémy jsou dva:
1. jednotná ontologie - nejen názvy balíků v závislostech, ale i označení verzí, revizí, architektur atd.
2. jednotný balíčkovač
Bez té 2ky by se dalo jakžtakž obejít (viz alien pro převody dpkg, rpm,...), ale bez 1čky ani ránu.
Mimochodem, takový systém deklarace závislostí mají třeba i některé programovací jazyky - v Elixiru třeba závislosti můžou vypadat takhle:
[ { :cowboy, github: "extend/cowboy" },
{ :dynamo, "0.1.0-dev", github: "elixir-lang/dynamo", tag: "master" },
{ :mochijson2, "0.1", github: "bjnortier/mochijson2" },
{ :ibrowse, "4.0.2", github: "cmullaparthi/ibrowse" },
{ :exn, "0.0.1", github: "yrashk/exn" },
{ :procket, "0.4.3", github: "msantos/procket" },
{ :amnesia, "0.1.1", github: "meh/amnesia" },
{ :errd, "0.1", github: "archaelus/errd" },
]
- říká se tam, že se má kód stáhnout z githubu, pod jakým tagem a jaká je verze. Funguje to bezvadně. Kromě githubu podporuje i různé jiné způsoby.
- tohle by cesta byla, ale klíč je ujednotit se na té ontologii, k čemuž prostě nedojde. Jinak to technicky problém není.