|
|
|
|
|
by onikolas
3241 days ago
|
|
So place your programs in a directory structure that makes sense and use symlinks to maintain compatibility. Simple and elegant. But... how do I go about actually installing those programs? Web search and then git-clone / manual download? How are dependencies resolved?
Admittedly I haven't read the documentation, just the overview. On a related note, I feel like Arch struck a nice balance with pacman and AUR. |
|
https://github.com/gobolinux/Scripts/tree/master/bin
https://github.com/gobolinux/Compile/tree/master/bin
A package in Gobolinux is basically a tar-ball of the versioned dir in /Programs.
So if a precompiled version is available in the Gobo repo (sadly fairly limited as there is not really any resources for a compile farm available), InstallPackage will fetch the latest from there, unpack it, and run SymlinkProgram to have /System/Index updated.
Inside each package or recipe there is a Resources directory, inside there are a few files that describe the program or recipe, and a list of dependencies. these are parsed before compile or install, and additional updates/installs suggested.
Compile is the recipe equivalent of InstallPackage. It will parse a recipe, check dependencies, and download the source from the included url. The compilation and install will then take place in a union mount overlaying /System/Index, redirecting writes to the target dir in /Programs. After that completes successfully, SymlinkProgram will again be run to update /System/Index.
If you want to make a new recipe, there is MakeRecipe. You give it a name, a version number and a url (though it can attempt to guess the first two from the tar-ball name if left blank), and it downloads the tar-ball, unpacks it, and sets up a basic recipe of the content is one of the tools it has built in support for. Mostly a recipe is a set of steps to make things compile, things like switches to pass to configure.
If you simply want to a newer version of an existing recipe, there is NewVersion. All you may need to feed it is the new version number, though it may need a url as well if the one from previous recipes are no longer valid.