Slashdot Mirror


GoboLinux Compile -- A Scalable Portage?

LodeRunner writes "The GoboLinux team, featured about a year ago for creating a distro that does away with Unix paths such as /usr/bin and /lib and uses things like /System/Settings/X11 instead, just released a new release where they introduce their own alternative to Portage and similar systems: Compile. But is yet another source-based compilation system needed?" Read a bit more below on why the GoboLinux folks think so.

LodeRunner continues "We already have ebuilds, RPM .spec files, and whatnot. The argument for reinventing the wheel yet again was the observation that while developing apps to handle these files is easy, the task of maintaining the ever-growing database of compilation scripts is the real problem -- the huge package collection of Debian comes to mind. Compile took the extreme minimalistic approach, and its scripts ("recipes") are as small as can be: the script for a typical autoconf-based program takes two lines.

Knowledge for handling common situations is usually added to Compile itself instead of being coded in the script (for example, apps that need a separate build directory just add a needs_build_dir=yes line). The plan is to make Compile as smart as it can and the recipes as small as possible.

It remains to be seen whether this experiment of gauging differently the tradeoff between flexibility and simplicity will prove itself to be limiting or enlightening, but in the ~six months Compile has been in beta test by the people from the GoboLinux mailing list, over 500 recipes were written, ranging from Glibc and GCC up to KDE and the Linux kernel itself."

35 of 366 comments (clear)

  1. Emerge by Anonymous Coward · · Score: 3, Insightful

    When i first changed to gentoo I was gladly surprised by the power and flexability of portage. If this is half as good it is worthy a place in the linux community, no doubt about it!

  2. Re:It works for Gentoo by XO · · Score: 4, Insightful

    Just because you have a Unixish kernel does not mean you have to have a Unixish operating system.

    Surprisingly, not everything in the world has to be Unix!

    --
    "Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
  3. The shorter the better by Moth7 · · Score: 5, Insightful

    It's much more difficult to make a typo in /etc than /System/Config. That's one of the godsends of the POSIX structure over that of Windows - /lib is easier to remember/type than C:\Windows\System32. And there are none of those annoying spaces in /usr/bin that exist in C:\Program Files.

    1. Re:The shorter the better by Com2Kid · · Score: 1, Insightful
      • It's much more difficult to make a typo in /etc than /System/Config. That's one of the godsends of the POSIX structure over that of Windows - /lib is easier to remember/type than C:\Windows\System32. And there are none of those annoying spaces in /usr/bin that exist in C:\Program Files.

      Tab auto complete....

      annnyways, that aside;

      One thing that has always irritated me about the *nixs in general is the tendency to have everything spread across the entire hard drive. Binaries for X alone can reside in any of a number of directories, properly configured path statements have to be half a mile long, and good luck remembering where any one specific file is at!

      I used to think that willy-nilly file structures were OK, after all, just use an OS's built in Search or Find feature right? This was until I actually organized my HD and got things working right, hey, look, files are were they SHOULD be!

      TLA(brev)sare a pain in the butt from multiple perspectives. You end up with directories like /etc (oh yah, THAT is thinking ahead. . . . ) or crud like /usr/sbin, which I assume is either Special Binaries or System Binaries, but what the hell, people bitched about 8.3 file names, just call the directory System Programs and get over it.

      Oh and I just love how there is usr/local/sbin, OR usr/sbin, and WHY usr? If 'local' can have 5 letters, would it be so deadly to spell out 'user'?

      Oddly enough, with the modern incarnations (Windows 2000+), Windows is laid out in a rather straightforward matter, with the exception of the Windows directory itself, which has (finally!) been abstracted far enough away from the users that only the 'system32' directory (which is in the path by default) is actually ever accessed.

      Local settings and non-local (roaming, or whatever MS is calling them these days) settings are handled by the OS, so most users need not care about anything outside of the MyDocuments and Desktop folder in their profile directory, (albeit local settings is fun to play around with).

      To the end user, you have a nice SIMPLE directory structure:

      %systemroot%\System32\ {--- System tools and what not

      %programfiles% {---- programs!

      %userprofile%\desktop\ {---- desktop

      %userprofile%\My Documents\ {---- documents!

      now isn't that nice and simple? Want to run something, you have ONE place to look around in,
      %programfiles%, not 4 different \bin\ directories. Some programs need to be run by some users but not by others? Not a program, there are a fair number of ways to accomplish this, NONE of which involve creating (to the end user!) a multitude of extra directory structures.

      The programmer has it even better. They can either shove all their DLL files in %systemroot%\system32\ and be done with it (not too polite), store a copy in their own program folder (not done much anymore *sigh*), or use %commonprogramfiles%

      For locally maintained settings only (very cool, Nvidia takes advantage of this in their Nview system application, so my monitor settings, including color correction, are maintained on each terminal separately!), %userprofile%\local settings\application data should be used.

      This is the equivalent of *nix's usr/local/whateverRandomThreeLetterAbbreviationGoe sHere, with one exception;

      it is blatantly self obvious what the directory is there for, and the existence of other directories removes the programmer's urge to shove binaries in weird places!

      Actually, the entire local/remote binary thing is left more towards the administrators, they can choose to either have programs be run remotely (which granted not all programs support, but if they are written correctly and do not feel the need to shove random files all over the client machine's hard drive. . .

    2. Re:The shorter the better by MyHair · · Score: 2, Insightful
      I moslty use and support Windows but am a Linux/unix fan.

      Tab auto complete....

      Nice, but annoying to have to rely on it. I use Cygwin periodically and use tab completion. Under cmd.exe I do stuff like this:
      cd prog*
      cd comm*
      or
      cd docu*
      cd [username, probably abbreviated]


      I know tab completion is enable-able in XP, but I don't think it is in 2k without a 3rd party shell.

      The annoying part about the unix filesystem is that you have to learn it. But you have to learn Windows, too. Sure, your temp files are under C:\documents and settings\username\local settings\temp, but there is a c:\winnt\temp and for some odd reason c:\documents and settings\default user\local settings\temp gets used by some apps (although this last one may be because of a distributed installer I use that runs as the SYSTEM user). Furthermore, if you're having a problem with app conflicts where do you look? For example, Netscape 4.x likes to replace MAPIDLL32.DLL which makes Outlook 97 not work. That file is under \winnt\system32, and it took me a while to figure that out. McAfee has parts of its program files under \program files\mcafee (or NAI, I forget which) and some under \program files\common files\vshield or similar.

      I absolutely hate that \winnt\system32 is the general dumping ground for all dlls, especially now that spyware/adware keeps adding to it.

      Anyway, the /usr/bin and /usr/local bin were a bit odd to figure out at first, but it's great now. /usr/bin is where all the distribution's program files go, and /usr/local/bin is where apps I download install myself go. When I need to update or remove them, the process is different so it's helpful to have them in different places.

      This isn't the best organized rebuttal ever, but I'm getting sleepy and am a bad debater to begin with.

      The unix filesystem is sweet, too:

      /etc : systemwide config files
      /home/user : user config files and data
      /usr/sbin : system tools
      /usr/bin : programs that were tested and configured for my distribution
      /usr/local/bin : programs that I downloaded, configured, compiled and installed


      Okay, I'm out of steam. Let me summarize by saying there are advantages and disadvantages to both the Windows filesystem and the unix filesystem. I prefer the unix filesystem because once you learn the basics it makes sense and is easy to maintain. Windows looks easier on the surface but has some serious maintainability problems; sure some is caused by vendors but at least in unix the structure generally keeps annoying vendor structures under /usr/local or /opt instead of having them reside in your \winnt, \winnt\system32 and \program files\common files folders all willy nilly.

    3. Re:The shorter the better by ameoba · · Score: 2, Insightful
      To the end user, you have a nice SIMPLE directory structure:

      %systemroot%\System32\ {--- System tools and what not

      %programfiles% {---- programs!

      %userprofile%\desktop\ {---- desktop

      %userprofile%\My Documents\ {---- documents!


      %programfiles% is -not- a simple lay out. Not only do you have every application in its own folder (that's not in your path), sometimes the application directories are hung off an intermediate directory for the vendor (such as %programfiles$\Adobe). This is assuming we're talking about a well-behaved program.

      Actually, an excellent system I've run across for managing packages is pkglink.
      It lets you install stuff to /usr/local/$PROGRAM/$VERSION and it sets symlinks to /usr/local/bin, /usr/local/etc and wherever else you might need things put. If you wanted to, you could use this for /usr as well.
      --
      my sig's at the bottom of the page.
  4. Easier to Write Build Scripts, Please? by Badam · · Score: 3, Insightful

    Having created build scripts in FreeBSD, Gentoo, Sourcemage, and Arch Linux, I think the most important goal is to use/develop a script language that newbies find easy to use.

    If you're developing a new distro, and you're concerned about giving users a reason to move, focus on making it easy for us to add to the distro!

    --

    Check out my blog: My Galaxy is Milky Way Adjacent
  5. Screenshots by Stevyn · · Score: 2, Insightful

    I like how they post lost of screenshots running window managers. They could have just said "it runs KDE." It's not like their KDE is anything special, it's the underlying structure that's different. Then again, every distro does this. However, this distro is targetting people who most likely understand this concept already.

  6. Re:WHAT? by gspr · · Score: 2, Insightful

    Me, I like my three letter unpronounceable paths all the same :)

    I don't mean to nitpick, but /usr/bin and /lib are both easy to pronounce: "user-bin" and, well, "lib". /etc is really the only hard one.

  7. Screw that by brunes69 · · Score: 5, Insightful

    Blasphemy my ass. i have been using Linux, BSD, nd other UNIX derivatives for over 10 years now, and all I can say is THANK GOD.

    The /usr/bin, /etc, /usr/local concept is totally outdated. Having apps in their own directories eases maitenence, eases administration, and eases uninstallation. Think about it, if apps were in their own self contained directories, who even *needs* a package manger? To install, you extract the tar, to uninstall, delete the directory. Boom snap, done and done.

    Other than core system configuration and core libraries the whole system uses, I ideally think *any app should be totally confined to one directory level. IMO this is one thing Windows does right.

    1. Re:Screw that by McDutchie · · Score: 5, Insightful
      Other than core system configuration and core libraries the whole system uses, I ideally think *any app should be totally confined to one directory level. IMO this is one thing Windows does right.

      Except that many applications install their own DLL cruft under C:\WINDOWS anyway (Microsoft itself being one of the worst offenders), and that the program stops working if you move the application dir around, thus eliminating completely the usefulness of this concept.

      No, the OS that does this right is Mac OS X. Installing an app is as simple as copying the application package (basically just a directory), and you can put and move it anywhere.

    2. Re:Screw that by justMichael · · Score: 2, Insightful
      I ideally think *any app should be totally confined to one directory level. IMO this is one thing Windows does right.
      You don't honestly believe that Windows apps confine themselves to \Program Files\App do you?

      If you do how do you explain the "Shared file, confirm deletion" during an uninstall?

      If you had said that OS X has it right, you would have been closer, but even some apps in OS X scatter things around during an install.
    3. Re:Screw that by Too+Much+Noise · · Score: 3, Insightful

      so what prevents your having the app in its own directory (under /usr/bin/local, for instance) and symlink the binaries to /usr/local/bin, the lib subdirectory to /usr/local/lib and so on? then uninstalling only adds the step of removing invalid symlinks after deleting the app directory - you could even make it a script (say, /usr/bin/uninstall).

    4. Re:Screw that by dindi · · Score: 2, Insightful

      naah ....
      what prevents you to install your apps with a different prefix if you think it is the good thing ? ./configure --prefix=/whatever/programname

      keeping the /usr or /usr/local does not make a sense maybe on a home linux box ...

      but when you have remote mounted filesystems, and you are organised enough to care about what belongs to the system and what is an application you installed and what belongs to the system ...

      making backups/reinstalls/upgrades is a lot better when you know what belongs to eg system, and what might be better just to reinstall and dump the backed up /usr/local/etc on it ...

      i just started working with BSD, and I see how organised it is compared to my previous experiences (mostly linux (deb/rh) and solaris) .. and while getting used to moslty edit stuff in /usr/local/etc/ broke my balls at the beginning, with a little bit of thinking now it absolutely makes sense to me .... (though i like system V rc stuff a lot better - but that's an other story)

    5. Re:Screw that by gregmac · · Score: 2, Insightful

      An interesting thing I've noticed is this shift in some places to installing shared libraries such as mfc42.dll to the program's installation directory, eliminating the need to touch C:\Windows at all and avoiding DLL hell at the expense of file space.

      The big problem here is that if you have a vulnerability or bug in a shared library, you now have to wait for the vendors/maintainers of every package to upgrade everything. With shared libraries, you can just upgrade the library and all is well (obviously this would be a problem on windows..).

      Personally, I like the way apt handles this. You can apt-get install firefox, and it downloads all the libraries and such it needs. If a library gets upgraded, every package using it gets upgraded. Of course, this doesn't solve the problem of breaking BC, but this is less of a problem in the OSS world, where certain companies change their API's with no notice to most people, breaking many (competing) apps that rely on something...

      --
      Speak before you think
  8. Re: A job for ln? by mercan01 · · Score: 5, Insightful

    They're trying to replace an arcane directory structure, not mask it.

  9. Descriptive path and OS X by mroch · · Score: 3, Insightful

    The descriptive path thing sounds a lot like what OS X does, except that it goes all the way where OS X still has /usr, /etc, etc. although hidden. I wonder if Apple can patent or has patented that?

  10. "Recipes" are a bad idea by RovingSlug · · Score: 5, Insightful
    Knowledge for handling common situations is usually added to Compile itself instead of being coded in the script ... It remains to be seen whether this experiment of gauging differently the tradeoff between flexibility and simplicity

    Yes, simplicity is good, but only in the context of the whole system. Here, you're just shifting complexity from the per-package scripts to the overall Compile package itself -- creating a large, central, monolithic service.

    Because it's centralized, over time, this is going to accumulate a lot crap and become opaque, obfuscated, and unmaintainable. Changes and maintenance to Compile will more significantly impact the contemporary set of recipes than, say, changes to Portage and ebuilds.

    It's easy to apply a good idea, like "simplicity", in too narrow of a scope -- to the detrement of the overall design. Better to think about it as balance of "package maintainability", "system maintainability", "barrier of entry", etc.

  11. My shift key!! by vijaya_chandra · · Score: 2, Insightful

    When the poster mentioned
    /System/Settings/X11

    I had thought, he/she was trying to be funny

    But the distro does seem to go this way : /System/Links/Tasks ,as the article mentions

    Despite the intuitiveness, having capitals at the beginning of all the directories, particularly the ones that you are going to replace all the / dirs with, would be a major pain atleast in a case-sensitive *nix world

    The current 'X11R6' in /usr itself pains lazy idiots like me with the capital X; I shudder to think as to what'd happen if this, in case, becomes the standard (or the fad)

    (Karma be damned; I am no better than an AC anyway)

  12. Re:WHAT? by Anne+Thwacks · · Score: 4, Insightful
    Many years ago, in the olden days I thought about this, and was quickly redirected to the "one true path" - it may be marginally more helpful TO ENGLISH SPEAKERS to have meaningful commands, directory names, etc - but unix is multi-user, and supports multiple locales, and the traditional commands, paths may not be meaningful, but can easily be aliased - each user can provide his own names, in his/her own language, but at least the standard ones are standard.

    You are welcome to alias them to whatever you want, but it wont help you understand your next door neighbour's Unix system, or your next employer's either.

    --
    Sent from my ASR33 using ASCII
  13. Re:WHAT? by gorre · · Score: 3, Insightful

    /etc is really the only hard one.

    Pronounce it the same as you would if you saw it in a normal sentence, "et cetera".

    --
    "Madness is something rare in individuals - but in groups, parties, peoples, ages it is the rule." -- Nietzsche
  14. Re:Non-issue by Jameth · · Score: 5, Insightful

    Yeah, but who the hell starts them with capital letters?!?!?!

    Even with tab-completion, I just got my time quadrupled! Frickin' shift keys.

  15. UNIX filesystem has *always* eveolved by darkonc · · Score: 1, Insightful
    The filesystems for the UNIX family of OSs has always been in evoloution. Originally the /usr filesystem stood for /user. All user directories were in /usr and /usr/bin was for user contributed binaries.
    Then many of the binaries in /usr/bin became 'standard' parts of distributions, and we started using /usr/local/bin for user contributed binaries -- and we started putting user home directories in places like /home.
    Now /usr/local is becomming the standard place for 'standard-nonstandard' binaries and we're really starting to need a new place for real user contributed stuff (rinse, repeat).

    I don't see anything intrinsically wrong with a complete bottom-up rewrite of the current system. The whole point of Free Software and Open Source is that, if you don't like it the way it is, you can change it. Clearly the current GoboLinux system isn't for the faint of heart, but something really good may come out of it that would increase the usability of Linux by an order of magnitude -- but magic like that doesn't happen if people are constrained to the old way of doing things.
    It may be that, in 10 years, most Linux users will be going "/etc? What's that for?". (hmmm. Some may already be doing that!).

    --
    Sometimes boldness is in fashion. Sometimes only the brave will be bold.
    1. Re:UNIX filesystem has *always* eveolved by Mr+Smidge · · Score: 2, Insightful

      Then many of the binaries in /usr/bin became 'standard' parts of distributions, and we started using /usr/local/bin for user contributed binaries ... Now /usr/local is becomming the standard place for 'standard-nonstandard' binaries

      You know what they're really for?

      * /bin is for binaries that you need to use the system in single user mode (i.e. no 'user' involved).
      * /usr/bin is for binaries that a user might want to use, like those of your average set of applications.
      * /usr/local/bin is for binaries that are local to the machine.

      Why the separation? Imagine you run a lab full of computers.. chances are that they'll have the same main applications. Well, you can have /usr mounted via NFS then. Say you have a few graphically-oriented machines in your lab.. Perhaps they would have their graphical applications in their /usr/local/bin, since they only apply to the local machine.

      I imagine that many people won't need that degree of separation, but it's there should you need it. If you don't need it and desire simplicity, just mask it with some symlinks.

      On the subject of the main article, I could imagine, with perhaps some filesystem tweaks with regards to symlinks, that a filesystem along the lines of GoboLinux's could be very useful indeed. I'm not quite so sure about *replacing* the current hierarchy rather than just *masking* it, but perhaps some two-way strategy can be used...

      I mean, if I have some apps in /usr/bin, and some local ones in /usr/local/bin, it would be great if they all transparently appeared in /Applications/$AppName..

      That would be cool.

  16. Same as Portage ebuilds by vslavik · · Score: 1, Insightful

    The authors apparently don't have a clue about ebuilds, otherwise they would try to use simplicity as this system's selling point - ebuilds are already there, they are about as simple as they can get if you want it to be useful for a real distro. Looks more like a manifestation of Not Invented Here syndrome than anything else to me.

  17. Re:It works for Gentoo by Doctor+Crumb · · Score: 3, Insightful
    Why not just install everything in /usr/bin?
    Anything I compile myself goes in /usr/local. This means that when I upgrade my system from scratch, I can easily copy all of those installed things to the new system without having to go through /usr/bin by hand. Even easier if you put /usr/local on its own partition.

    Believe it or not, most things in unix are they way they are for a reason. That reason may not be immediately obvious to you, but it still exists.

  18. I'm all for ditching the paths by Mustang+Matt · · Score: 3, Insightful

    While I'm used to the current paths, I have no hard feelings at all about ditching them.

    I don't know if there's a linux standard for what kinds of files go in each directory but everyone I ask has a different answer.

    I think switching to an updated naming scheme for directories and getting a common installation/uninstallation routine for applications that actually sticks items on the menus in the guis, etc. would be a huge move forward.

    Not that I need either feature. I don't even use a linux gui. But someday maybe I will.

    --
    The man who trades freedom for security does not deserve nor will he ever receive either. - Benjamin Franklin
  19. Re:Non-issue by vadim_t · · Score: 4, Insightful

    There is plenty.

    There are several languages where lowercase -> uppercase -> lowercase can't be done without losing data, for example. Then there is the problem of how many languages you can support. Say, English is easy, but what happens when you find a disk with filenames in an encoding the filesystem doesn't know about?

    In Linux, it's just all bytes, it doesn't care if it's english, cyrillic or whatever. With case insensitivity it suddenly has to know what to do with cyrillic letters as well.

  20. Comment removed by account_deleted · · Score: 2, Insightful

    Comment removed based on user account deletion

  21. Re:Non-issue by rgmoore · · Score: 2, Insightful

    The simplest and most obvious reason to make the computer case sensitive is because it's much, much easier to program that way. Any time you want to know if two filenames are the same you can just compare them bit by bit and see if they're exactly equal. Making the computer understand which characters are upper or lower case versions of which other ones adds some complication in a coding system as simple as ASCII. If you want to use something more complex, like Unicode, the problems multiply tremendously. Including a full Unicode library in the kernel- which you'd need to do in order to make things case insensitive at the filesystem level- would be a source of innumerable bugs and performance problems.

    --

    There's no point in questioning authority if you aren't going to listen to the answers.

  22. I want a single software portage system. by Anonymous Coward · · Score: 1, Insightful

    That works on any Unix based system.

    If need be then a distribution could be packaged up from the portage system, so that you could generate rpm's, deb's or gentoo files from the higher level.

  23. Mac OS X by boola-boola · · Score: 1, Insightful
    a distro that does away with Unix paths such as /usr/bin and /lib and uses things like /System/Settings/X11 instead

    I generally don't think it's a good idea. It's additional clout that is pretty much unnecessary, seeing as how everybody is already used to /usr/bin, /lib, etc. If there were an advantage, I'd go for it, but there isn't: It's longer to write, you're mixing upper- & lower-case letters, and it's confusing sometimes. No real advantage.

    Take OS X for instance. Here's a sample of what's in my root directory on my Powerbook:

    /Applications
    /Desktop DB
    /Desktop DF
    /Developer
    /Library
    /Network
    /System
    ...
    etc.

    It's confusing and convoluted as hell. There's not necessarily only one type of file in each directory. Not to mention the structuring: there are applications left and right, many of which are actually directories containing more varied data. Madness, I tell you.

    Stick with tried and true. It's been proven to work, and there is no major advantage over the new method.

    1. Re:Mac OS X by TheInternet · · Score: 2, Insightful

      It's confusing and convoluted as hell.

      In what way? What are you going to find in Applications other than applications?

      there are applications left and right

      Unless you're actively moving things around, all of your applications will end up in one place -- Applications.

      - Scott

      --
      Scott Stevenson
      Tree House Ideas
  24. Re:WHAT? by Anonymous Coward · · Score: 1, Insightful

    This is however ignoring the fact that many things computer related are already English centric since many of these items have their origins in English speaking countries.

    Languages like C, BASIC, Pascal, FORTRAN, etc all use terminology and syntax that's English derived, one way or another.

    Even the UNIX commands like "cp" or "mv" etc are tied to English verbs such as copy or move.

    How often do you find yourself using a computer system where the language is set to something you don't speak? If you couldn't read/write Chinese, would you be, for example, altering source code written by a Chinese person (and understanding their comments which you can't read) on THEIR Linux machine?

    To continue to use an archaic and cumbersome system because it would require modifications for other countries seems like a weak argument. We use products designed in other countries and we're able to do so because someone translates instructions and text...the same could be done here.

  25. The user can never escape awkward directory trees by ReyTFox · · Score: 2, Insightful

    At least, so long as the system uses shared libraries.

    MS-DOS was the only OS(that needed an install, Atari DOS wouldn't count there) where I really had a "clean" install the whole way through. Programs went in x, drivers in y. Everything using DOS4GW had a copy of it included with the binary, no harm done. Needless to say, configs also went alongside the binary.

    Of course, this falls apart as soon as you have a more complex OS that needs things like scripting languages and windowing systems. There's just no way around shared libraries. And with shared libraries comes other kinds of shared access - to data and devices. So you have to reorganize, create new structures to hold certain kinds of files. Version conflicts, missing depends - all result from this necessity.

    Of course, these structures just won't make any sense to the end user, except as a programmer. It won't matter how much you try to polish it up. A project like this might help, but putting an end to it all would probably need something along the lines of an FS and binary format revision, to include more data like the version number and purpose for each file. Good luck doing that.... :P