Re: just a friendly request
kenneth marken <[email protected]>
| Newsgroups | gmane.linux.distributions.gobo.general |
|---|---|
| Message-ID | <[email protected]> |
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?