Re: just a friendly request
"Lucas C. Villa Real" <[email protected]>
| Newsgroups | gmane.linux.distributions.gobo.general |
|---|---|
| Message-ID | <CAAvzgtaQYdix6T6ZsC_ybcqRmzejMO88_B+o9sTud4jhRuznQg@mail.gmail.com> |
On Tue, Feb 16, 2016 at 4:44 PM, kenneth marken <[email protected]> wrote: > On 16. feb. 2016 12:10, Lucas C. Villa Real wrote: > >> Greetings, >> >> I have been wanting for a while to make an announcement that directly >> relates to your question, but didn't do it yet because first I wanted to >> release a new version of the kernel recipe so that users could test this >> new feature. Anyhow, let me explain to you how it works. >> >> In GoboLinux, each program's dependencies are listed under >> /Programs/AppName/AppVersion/Resources/Dependencies. That file has a >> syntax >> that looks like this: >> >> DepName1 >> DepName2 Version >> DepName3 >= Version >> DepName4 >= Version1, <= Version2 >> >> In the first line, we're simply stating that DepName1 must be present in >> the system. In the second, we know for sure that the program will work if >> the system has that particular Version of DepName2 installed. The third >> and >> fourth lines state that as long as a particular range of dependencies are >> installed, the program will do all right. We have a parser for the >> Dependencies file that identifies which version of installed >> libraries/programs match the requirements. >> >> Having this background in mind, there's a new GoboLinux tool called >> Runner. >> Runner uses that Dependencies parser to figure out which packages are >> needed for a specific program. It then creates a private namespace for >> that >> program (cloning the current namespace) and creates an overlay mount on >> top >> of that namespace containing links to all returned dependencies' entries >> at >> /Programs. Using the same example as above, when you invoke 'Runner >> program_name', you will end up with a virtual /System/Index/lib that looks >> like this: >> >> /System/Index/lib (usual contents) >> + /Programs/DepName/Current/lib >> + /Programs/DepName2/Version/lib >> + /Programs/DepName3/Version >> + /Programs/DepName4/Some_version_between_1_and_2 >> >> Of course, /lib, /usr/lib, and /usr/local/lib are all symlinks to >> /System/Index/lib, so the private namespace will be reflected on these >> paths too. >> >> The way I see it, the approach used by Runner is more elegant than >> modulefiles and LD_LIBRARY_PATH tweaks, as the shell environment of the >> caller does not need to be changed. It is also possible to run programs >> whose dependencies are completely detached (or disabled) from >> /System/Index/lib. >> >> Runner needs at least Linux 4.0.0 to run, as it depends on the overlay >> filesystem. I should release a new recipe for that kernel in the coming >> days so that users can try it out and report their findings. The source >> code for the tool is on github at https://github.com/gobolinux/Scripts. >> >> Lucas >> >> > Inspired by Nix i take it? > > I actually got inspiration from the Limba project and from Hisham's ViewFS. Lucas _______________________________________________ gobolinux-users mailing list [email protected] http://lists.gobolinux.org/mailman/listinfo/gobolinux-users