[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gobolinux-users
Subject:    Re: [gobolinux-users] just a friendly request
From:       "Lucas C. Villa Real" <lucasvr () gobolinux ! org>
Date:       2016-02-17 11:10:16
Message-ID: CAAvzgta_xAWsdP2cdL1se9-20VkbdVTAKiTLGivnCP_5GxBd4w () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


On Wed, Feb 17, 2016 at 6:48 AM, Sergio Tortosa Benedito <sertorbe@gmail.com
> wrote:

> Excuse me, but I'm amazed, really! This awesome. Yet, let me ask how this
> differentiates from Limba, and why not take something already made and
> something which gobo can share?
>
Hi, Sergio!

Thank you. In fact, it was your post from a while ago that made me look
into Limba -- I appreciate that.

Having said that, there are many differences in the way Limba manages
packages and the way GoboLinux does. For instance, while Limba uses
AppStream metadata to get information about a certain package (which is
described in an XML document), GoboLinux uses its own package structure
along with its Resources directory to achieve that. Also, we have several
scripts that were already implemented on Gobo (such as the Dependencies
file parser and the GuessLatest utility). Besides, I personally didn't like
much the fact that Limba's original code depended on GLib, which prompted
me to create a minimal implementation based on some of Limba core routines
that fitted Gobo well.

Regards,
Lucas



> El 17/2/2016 2:25, "Lucas C. Villa Real" <lucasvr@gobolinux.org> escribió:
>
>> On Tue, Feb 16, 2016 at 4:44 PM, kenneth marken <k-marken@online.no>
>> 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
>> gobolinux-users@lists.gobolinux.org
>> http://lists.gobolinux.org/mailman/listinfo/gobolinux-users
>>
>>
> _______________________________________________
> gobolinux-users mailing list
> gobolinux-users@lists.gobolinux.org
> http://lists.gobolinux.org/mailman/listinfo/gobolinux-users
>
>


-- 
Lucas
"If you're looking for a reason I've a reason to give: pleasure, little
treasure"

[Attachment #5 (text/html)]

<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Feb 17, 2016 \
at 6:48 AM, Sergio Tortosa Benedito <span dir="ltr">&lt;<a \
href="mailto:sertorbe@gmail.com" target="_blank">sertorbe@gmail.com</a>&gt;</span> \
wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px \
#ccc solid;padding-left:1ex"><p dir="ltr">Excuse me, but I&#39;m amazed, really! This \
awesome. Yet, let me ask how this differentiates from Limba, and why not take \
something already made and something which gobo can share?</p> <div \
class="gmail_quote"><div><div class="h5"></div></div></div></blockquote><div>Hi, \
Sergio!<br><br></div><div>Thank you. In fact, it was your post from a while ago that \
made me look into Limba -- I appreciate that.<br><br></div><div>Having said that, \
there are many differences in the way Limba manages packages and the way GoboLinux \
does. For instance, while Limba uses AppStream metadata to get information about a \
certain package (which is described in an XML document), GoboLinux uses its own \
package structure along with its Resources directory to achieve that. Also, we have \
several scripts that were already implemented on Gobo (such as the Dependencies file \
parser and the GuessLatest utility). Besides, I  personally didn&#39;t like much the \
fact that Limba&#39;s original code depended on GLib, which prompted me to create a \
minimal implementation based on some of Limba core routines that fitted Gobo \
well.<br><br></div><div>Regards,<br></div><div>Lucas<br></div><div><br></div><div>  \
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div class="gmail_quote"><div><div class="h5">El 17/2/2016 \
2:25, &quot;Lucas C. Villa Real&quot; &lt;<a href="mailto:lucasvr@gobolinux.org" \
target="_blank">lucasvr@gobolinux.org</a>&gt; escribió:<br \
type="attribution"></div></div><blockquote class="gmail_quote" style="margin:0 0 0 \
.8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div \
dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Feb 16, 2016 at \
4:44 PM, kenneth marken <span dir="ltr">&lt;<a href="mailto:k-marken@online.no" \
target="_blank">k-marken@online.no</a>&gt;</span> wrote:<br><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div><div>On 16. feb. 2016 12:10, Lucas C. Villa Real \
wrote:<br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px \
#ccc solid;padding-left:1ex"> Greetings,<br>
<br>
I have been wanting for a while to make an announcement that directly<br>
relates to your question, but didn&#39;t do it yet because first I wanted to<br>
release a new version of the kernel recipe so that users could test this<br>
new feature. Anyhow, let me explain to you how it works.<br>
<br>
In GoboLinux, each program&#39;s dependencies are listed under<br>
/Programs/AppName/AppVersion/Resources/Dependencies. That file has a syntax<br>
that looks like this:<br>
<br>
     DepName1<br>
     DepName2 Version<br>
     DepName3 &gt;= Version<br>
     DepName4 &gt;= Version1, &lt;= Version2<br>
<br>
In the first line, we&#39;re simply stating that DepName1 must be present in<br>
the system. In the second, we know for sure that the program will work if<br>
the system has that particular Version of DepName2 installed. The third and<br>
fourth lines state that as long as a particular range of dependencies are<br>
installed, the program will do all right. We have a parser for the<br>
Dependencies file that identifies which version of installed<br>
libraries/programs match the requirements.<br>
<br>
Having this background in mind, there&#39;s a new GoboLinux tool called Runner.<br>
Runner uses that Dependencies parser to figure out which packages are<br>
needed for a specific program. It then creates a private namespace for that<br>
program (cloning the current namespace) and creates an overlay mount on top<br>
of that namespace containing links to all returned dependencies&#39; entries at<br>
/Programs. Using the same example as above, when you invoke &#39;Runner<br>
program_name&#39;, you will end up with a virtual /System/Index/lib that looks<br>
like this:<br>
<br>
/System/Index/lib (usual contents)<br>
+ /Programs/DepName/Current/lib<br>
+ /Programs/DepName2/Version/lib<br>
+ /Programs/DepName3/Version<br>
+ /Programs/DepName4/Some_version_between_1_and_2<br>
<br>
Of course, /lib, /usr/lib, and /usr/local/lib are all symlinks to<br>
/System/Index/lib, so the private namespace will be reflected on these<br>
paths too.<br>
<br>
The way I see it, the approach used by Runner is more elegant than<br>
modulefiles and LD_LIBRARY_PATH tweaks, as the shell environment of the<br>
caller does not need to be changed. It is also possible to run programs<br>
whose dependencies are completely detached (or disabled) from<br>
/System/Index/lib.<br>
<br>
Runner needs at least Linux 4.0.0 to run, as it depends on the overlay<br>
filesystem. I should release a new recipe for that kernel in the coming<br>
days so that users can try it out and report their findings. The source<br>
code for the tool is on github at <a href="https://github.com/gobolinux/Scripts" \
rel="noreferrer" target="_blank">https://github.com/gobolinux/Scripts</a>.<br> <br>
Lucas<br>
<br>
</blockquote>
<br></div></div>
Inspired by Nix i take \
it?<div><div><br></div></div></blockquote><div><br></div><div>I actually got \
inspiration from the Limba project and from Hisham&#39;s  ViewFS.<br></div><div>  \
<br></div><div>Lucas<br></div></div></div></div> <br></div></div><span \
class="">_______________________________________________<br> gobolinux-users mailing \
list<br> <a href="mailto:gobolinux-users@lists.gobolinux.org" \
target="_blank">gobolinux-users@lists.gobolinux.org</a><br> <a \
href="http://lists.gobolinux.org/mailman/listinfo/gobolinux-users" rel="noreferrer" \
target="_blank">http://lists.gobolinux.org/mailman/listinfo/gobolinux-users</a><br> \
<br></span></blockquote></div> \
<br>_______________________________________________<br> gobolinux-users mailing \
list<br> <a href="mailto:gobolinux-users@lists.gobolinux.org">gobolinux-users@lists.gobolinux.org</a><br>
 <a href="http://lists.gobolinux.org/mailman/listinfo/gobolinux-users" \
rel="noreferrer" target="_blank">http://lists.gobolinux.org/mailman/listinfo/gobolinux-users</a><br>
 <br></blockquote></div><br><br clear="all"><br>-- <br><div \
class="gmail_signature">Lucas<br>&quot;If you&#39;re looking for a reason I&#39;ve a \
reason to give: pleasure, little treasure&quot;</div> </div></div>



_______________________________________________
gobolinux-users mailing list
gobolinux-users@lists.gobolinux.org
http://lists.gobolinux.org/mailman/listinfo/gobolinux-users


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic