请输入您要查询的百科知识:

 

词条 GoboLinux
释义

  1. Overview

  2. File hierarchy

  3. "Compile" program

  4. Differences from traditional distributions

      File hierarchy   Symlinks    Boot system  

  5. Releases

  6. Ports

  7. Reception

  8. References

  9. External links

{{Infobox OS
| name = GoboLinux
| logo =
| screenshot =
| caption = GoboLinux desktop
| website = {{URL|https://gobolinux.org/}}
| developer =
| family = Unix-like
| source_model = Open source
| released = {{Start date and age|2003}}
| latest_release_version = 016.01
| latest_release_date = {{release date|2017|04|04}}
| latest_preview_version = 016-beta
| latest_preview_date = {{release date|2016|11|08}}
| marketing_target =
| language = German, English, Hungarian, Portuguese, Spanish
| kernel_type = Monolithic (Linux)
| ui = Awesome
| license = GNU General Public License
| working_state = Current[1]
| supported_platforms = x86-64
| updatemodel =
| package_manager =
}}

GoboLinux is an open source operating system whose most prominent feature is a reorganization of the traditional Linux file system. Rather than following the Filesystem Hierarchy Standard like most Unix-like systems, each program in a GoboLinux system has its own subdirectory tree, where all of its files (including settings specific for that program) may be found. Thus, a program "Foo" has all of its specific files and libraries in /Programs/Foo, under the corresponding version of this program at hand. For example, the commonly known GCC compiler suite version 8.1.0, would reside under the directory /Programs/GCC/8.1.0.

According to the GoboLinux developers, this results in a cleaner system.[2]

Overview

The GoboLinux hierarchy represents a radical departure from the filesystem hierarchy traditionally employed by most UNIX-like operating systems where specific types of files are stored together in common standard subdirectories (such as /bin for executables and /etc for configuration files) and where package managers are used to keep track of what file belongs to which program. In GoboLinux, files from each program are placed under their respective program's own dedicated subdirectory. The makers of GoboLinux have said that "the filesystem is the package manager", and the GoboLinux package system uses the filesystem itself as a package database.[3] This is said to produce a more straightforward, less cluttered directory tree. GoboLinux uses symlinks and an optional kernel module called GoboHide to achieve all this while maintaining full compatibility with the traditional Linux filesystem hierarchy.

The creators of GoboLinux have stated that their design has other "modernisms", such as the removal of some distinctions between similar traditional directories (such as the locations of executables /bin, /usr/bin, and /usr/local/bin). GoboLinux designers have claimed that this results in shell scripts breaking less often than with other Linux distributions. This change, introduced by GoboLinux in 2003, has only been adopted by other distributions much later: Fedora merged /bin and /usr/bin in 2012;[4] Debian enabled the /usr merge by default in 2016.[5]

GoboLinux also allows the user to have different versions of the same program installed concurrently (and even run them concurrently). Furthermore, it has been claimed that the package management index could never become unsynchronized with the filesystem, because references to nonexistent files simply become broken links, and thus become inactive. GoboLinux's filesystem changes also allow other innovations, such as an entirely new boot system that does not use System V or BSD style init systems.

File hierarchy

The design of GoboLinux was influenced by earlier systems such as NeXTSTEP, AtheOS, and BeOS, all of which adopted original filesystem structures while still maintaining a considerable degree of compatibility with Unix. At the root of the GoboLinux tree, there are six directories: Programs, Users, System, Files, Mount, and Depot. The contents of each are described below.

  • /Programs/ - This directory contains one directory for each program installed in the system. Each program's directory, in turn, contains one or more version directories, and, optionally, Settings and Variable subdirectories. Examples of paths under programs are /Programs/Bash/3.0/bin/bash and /Programs/Xorg-Server/Settings/X11/xorg.conf.
  • /Users/ - This directory contains each user's home directory; a user "harley" has /Users/harley as a home directory.
  • /System/ - Crucial system files. Most are managed by system applications (for example, /System/Settings/passwd) and GoboLinux scripts (for example, /System/Index).
    • /Index/ - The filesystem index: contains directories with symbolic links to files from /Programs entries, such as:
    • bin/ - Contains links to files from each program's bin directories.
    • include/ - This directory contains links to files from each program's include directory.
    • lib/ - Links to files from each program's lib directory.
    • share/ - Links to files from each program's share directory.
    • Environment/ - Links to environment files. These are compiled into a Cache file and loaded by the shell, allowing each program to register its own environment variables.
    • Tasks/ - Links to each program's boot tasks from its Resources/Tasks directory.
    • Settings/ - Configuration files and links to files from each program's Settings directory.
    • BootScripts/ - Scripts used during system boot. This is a symlink to the directory Settings/BootScripts under /Programs/BootScripts.
    • Variable/ - Multi-purpose log, temporary, transient and spool files.
    • tmp/ - Temporary files.
    • Kernel/ - Kernel-related directories.
    • Boot/ - Programs and configuration files used during operating system bootstrap. This is where the kernel image and bootloader configuration files are located.
    • Devices/ - Device files (managed by Udev).
    • Modules/ - Contains the various kernel modules, organized by the kernel release.
    • Objects/ - Provides a view of the kernel's device tree (introduced with the sysfs filesystem in the kernel 2.6 series).
    • Status/ - Kernel status files (managed by the proc filesystem ).
  • /Files/ - Files hold structured data that are used by programs but that are not part of the programs themselves. Those files are usually stand-alone entities like fonts, codecs, and plugins (and as such, supposedly do not require package management). Additionally, each program may define subdirectories of its own to store site-specific data; for instance, Compile (the GoboLinux package compilation front-end tool) does this.
  • /Mount/ - mounting point for additional local or remote filesystems. Common subdirectories are CD-ROM and Phone.

"Compile" program

Compile is a program that downloads, unpacks, compiles source code tarballs, and installs the resulting executable code, all with a single command (such as Compile foo) using simple compilation scripts known as "recipes".[6]

The Compile system is somewhat similar to Gentoo's Portage system,[7] which is based on the FreeBSD Ports collection. However, Portage is made for a traditional filesystem hierarchy, compatible with the Filesystem Hierarchy Standard, while Compile extends the capability of GoboLinux's distinctive filesystem hierarchy into the area of package management. Thus, in GoboLinux, the filesystem itself serves naturally as a kind of package manager database.[8]

The Compile program was introduced in GoboLinux version 011. Before that, there were discussions about porting Gentoo's Portage system to GoboLinux and developing the port as a SourceForge.net project under the name GoboPortage.[9][10]

Compile's other features included:

The use of each program's own download site
The distribution's repository (or one of its mirrors) is only used for downloading recipes. Recipes may be downloaded on-the-fly or in batch.
Minimalistic and declarative-oriented compilation scripts
Typical "configure; make; make install" software may be scripted in two lines, greatly easing maintenance.
Support of GoboLinux-style dependencies
Software compiled "by hand" by the user is taken into account by a detection mechanism.
Path-agnosticism
It also works in a rootless GoboLinux installation (that is, inside a home directory of any other distribution).[11]

Differences from traditional distributions

File hierarchy

In the GoboLinux hierarchy, files are grouped into functional categories in an index-like structure using symbolic links, rooted at /System/Index: All executables are accessible under /System/Index/bin, all libraries are accessible under /System/Index/lib, and so on.

This eliminates many traditional distinctions in the Filesystem Hierarchy Standard, such as the distinction made between non-essential files stored in /usr and essential, emergency files stored directly in subdirectories of the root directory. The GoboLinux developers have maintained that, although these distinctions were once very useful, they are no longer necessary under GoboLinux's schema.

Symlinks

There are symbolic links relating most of the usual Unix directories to the GoboLinux tree. Therefore, one can find directories such as /etc, /var/log, and /usr/bin in the expected places. These symbolic links point to the functional equivalent in the /System/Index tree; thus, traditionally crucial path names (such as /bin/sh and /etc/passwd) are resolved correctly. These compatibility directories are concealed from view using a custom kernel modification called GoboHide, which implements support for hidden files in Linux; it is used for aesthetic reasons only and is thus an optional feature.

Boot system

GoboLinux uses its own initialization procedure, unlike most Linux distributions which use a BSD or a System V procedure. At /System/Settings/BootScripts are a few files that command the entire boot procedure: BootUp and Shutdown run at system boot and shutdown, respectively; additionally, it is possible to define "runlevel" scripts to specify different ways the system may be initialized (for example, Single for single-user, Multi for multi-user, Graphical for boot into graphic mode, and so on); this can be controlled from the boot loader menu. The /System/Settings/BootOptions file separates site-specific settings from the rest of the scripts. Application-specific tasks can be found at /System/Tasks; they can be called by the boot scripts.

Releases

Releases have been numbered using the octal base system. According to the authors, this scheme was chosen because it keeps the typical leading zero that is present in many free software version numbers (since a leading zero often indicates that a number is octal), and it is a play on the "version numbers race" that happened among Linux distributions around 1999. When read as decimal numbers, using octal numbers causes a deterministic "version bump" each eight releases. Up to version 013, GoboLinux made no "point releases", in order to avoid the implication that some releases were more stable than others. This tradition was broken with version 014.01, an update of 014 focused on bug fixes.

  • 016 - December 15, 2016: Introduces Runner, a new tool for container-free filesystem virtualization. Linux kernel version 4.8.2, Awesome WM desktop.
  • 015 - May 7, 2014: Introduces the /System/Index hierarchy. Linux kernel version 3.14.2, Enlightenment 18 desktop.
  • 015-beta - March 4, 2014
  • 015-alpha - January 21, 2014
  • 014.01[12] - March 30, 2008: Updates of 014, featuring bug fixes and some package updates.
  • 014 - December 31, 2007: Features package updates, bug fixes and new versions of the GoboLinux management tools.
  • 013 - November 2, 2006: Introduces Listener, a tool for listening on filesystem events and assigning actions to be performed automatically.
  • 012 - June 6, 2005: Introduces [https://web.archive.org/web/20160404214132/http://www.gobolinux.org/index.php?page=manager Manager], a graphical system management tool.
  • 011 - June 7, 2004: Introduces [https://gobolinux.org/index.php?page=compile Compile], the GoboLinux package compilation tool.
  • 010 - January 7, 2004: Adds a graphical installer accessible through the live CD desktop environment.
  • 007 - October 22, 2003: Adds a per-package metadata directory called Resources.
  • 006 - May 9, 2003: Introduces [https://web.archive.org/web/20170313130456/http://www.gobolinux.org/?page=doc%2Farticles%2Fgobohide GoboHide], and adopts a sandboxed installation of programs.
  • 005 - 2003: Introduces GoboLinux to the world.
  • Releases prior to version 005 were used by the initial group of developers only.

Ports

GoboLinux is currently developed for x86-64. It was officially made for the i686 only until release 015, but at one point an incomplete port to the i386 was made. Ports have also been made to embedded architectures, such as ARM and SuperH; these tasks were achieved with Bootstrap,[13] a tool developed especially to automate making ports.

Reception

LWN.net reviewed GoboLinux 010 in 2004:[14]{{quote|It turns out that the GoboLinux project has been doing exactly that - reorganizing the directories and files into a new structure. It all started with one of the developers working on a system where he did not have superuser privileges, but still needed to compile programs. To avoid difficulties when upgrading, he placed individual programs into their own directories and named them according to the relevant program names, e.g. ~/Programs/AfterStep. Other parts of the programs went into similarly identified directories, such as ~/Libraries, ~/Headers, etc. Custom scripts for automated compilation of these programs and correct placing of individual components were also developed.}}

Linux.com wrote review about GoboLinux 013:[15]

{{quote|Needless to say, this type of hierarchy aids in package management. Users can install and use multiple versions of the same program or system libraries. In fact, when GoboLinux switched over to the GNU Compiler Collection (GCC) version 3, they still kept older programs running since the filesystem allows for multiple libraries to exist together in peace. Also, uninstallation is just a matter of removing the program directory.}}

Jesse Smith from DistroWatch Weekly reviewed the GoboLinux 015:[16]

{{quote|Booting from the GoboLinux media brings up a screen with text-based menus. Using these menus we are asked to select our preferred language from a list and choose our keyboard's layout. We are then presented with a text console where we are logged in as the user "gobo". Instructions on the screen tell us how to bring up a graphical user interface and how to launch the system installer. The graphical environment turns out to be the Enlightenment window manager. On the desktop are icons for running the GParted partition manager and the system installer. At the bottom of the screen we find an application menu, task switcher and system tray.}}

Smith also reviewed GoboLinux 016.[17]

References

1. ^{{cite web|url = http://www.distrowatch.com/table.php?distribution=gobo |title = Project status listed as Active as of Wednesday 5 March 2014 06:13 GMT |author = Distrowatch |date = 2014-03-05 |accessdate = 2014-03-10}}
2. ^{{cite web | title = The Unix tree rethought: an introduction to GoboLinux | url = http://www.kuro5hin.org/story/2003/5/9/05015/62649 | author = Hisham Muhammad | date = May 9, 2003 | accessdate = 2008-03-17}}
3. ^{{cite web|title= Simplified package management on GoboLinux - an interview with Lucas Villa Real |url= http://www.netbsd.org/gallery/pkgsrc-interviews.html#gobo-linux |author= Marc Weinem |date= 2008-03-13 |accessdate= 2008-03-31}}
4. ^{{cite web|title=/Usr Move|url=https://fedoraproject.org/wiki/Features/UsrMove|author=Fedora Project|date=2012-03-29|accessdate=2016-12-30}}
5. ^{{cite web|title=debootstrap 1.0.85 changelog|url=http://metadata.ftp-master.debian.org/changelogs/main/d/debootstrap/|author=Debian|date=2016-10-21|accessdate=2016-12-30}}
6. ^{{cite web|title= GoboLinux's recipe for delicious package management |url= http://www.linux.com/articles/60133 |author= Mayank Sharma |date= 2007-02-14 |publisher= Linux.com |accessdate= 2009-07-19}}
7. ^{{cite web|title= GoboLinux Compile -- A Scalable Portage ? |url= http://developers.slashdot.org/article.pl?sid=04/06/05/1949213 |date= 2004-06-05 |publisher= Slashdot |accessdate= 2009-07-19}}
8. ^{{cite web |title= The Ideas Behind Compile |url= https://gobolinux.org/index.php?page=doc/articles/compile |publisher= GoboLinux |accessdate= 2009-07-19 |archive-url= https://web.archive.org/web/20100613074440/http://gobolinux.org/index.php?page=doc%2Farticles%2Fcompile |archive-date= 2010-06-13 |dead-url= yes |df= }}
9. ^Gentoo Forums : View topic - GoboGentoo
10. ^SourceForge.net: GoboPortage
11. ^{{cite web|title= GoboLinux: An Interview with Lucas Villa Real |url= http://www.packtpub.com/article/GoboLinux-An-Interview-with-Lucas-Villa |author= Mayank Sharma |date= 2007-08-21 |accessdate= 2008-03-31}}
12. ^{{cite web | title = GoboLinux 014.01 Released | url = http://osnews.com/story/19578/GoboLinux_014.01_Released | author = Thom Holwerda | date = April 4, 2008 | accessdate = 2008-04-04}}
13. ^GoboLinux Embedded{{dead link|date=October 2017 |bot=InternetArchiveBot |fix-attempted=yes }}
14. ^[https://lwn.net/Articles/67196/ GoboLinux - Fun with File System Hierarchy [LWN.net]]
15. ^[https://www.linux.com/news/gobolinuxs-recipe-delicious-package-management GoboLinux's recipe for delicious package management | Linux.com | The source of Linux information]
16. ^[https://distrowatch.com/weekly.php?issue=20140609#feature DistroWatch Weekly, Issue 562, 9 June 2014]
17. ^[https://distrowatch.com/weekly.php?issue=20170123#gobo DistroWatch Weekly, Issue 696, 23 January 2017]

External links

  • {{Official website|https://gobolinux.org/}}
  • {{DistroWatch|gobolinux| NAME =GoboLinux}}
  • {{github|gobolinux}}
{{Linux distributions}}{{DEFAULTSORT:Gobolinux}}

2 : Source-based Linux distributions|Linux distributions without systemd

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/12 2:55:17