<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Chapter 2: Concepts &amp; Philosophy | GoboLinux Documentation</title><link>https://wiki.gobolinux.org/Concepts/index.html</link><description>This is an important chapter in your GoboLinux journey. Before you begin fiddling around with the GoboLinux operating system, we highly advice thoroughly studying the following chapters.
Once you have familiarized yousrelf with the GoboLinux theory and concept, you may commence onto the the Usage chapter.
The GoboLinux Way GoboLinux Filesystem Hierarchy System Index Understanding system indices Alien Packaging Subsystem Runner</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://wiki.gobolinux.org/Concepts/index.xml" rel="self" type="application/rss+xml"/><item><title>The GoboLinux Way</title><link>https://wiki.gobolinux.org/Concepts/The-GoboLinux-Way/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://wiki.gobolinux.org/Concepts/The-GoboLinux-Way/index.html</guid><description>Welcome to the world of GoboLinux The main task of a Linux distribution is to keep track of and organize the programs in your computer, so that they work properly. GoboLinux is no different from the others in this goal, but it adopts a fundamentally different approach in solving this problem.
Instead of scattering the files of programs around, following the decades-old conventions of ancient UNIX systems, and then adding a layer of control (a “package manager”) to try to give order to chaos, in GoboLinux we organize the files that comprise the programs in an ordered way in the first place.</description></item><item><title>GoboLinux Filesystem Hierarchy</title><link>https://wiki.gobolinux.org/Concepts/GoboLinux-Filesystem-Hierarchy/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://wiki.gobolinux.org/Concepts/GoboLinux-Filesystem-Hierarchy/index.html</guid><description>Here is an overview of the GoboLinux filesystem tree. The legacy folders (on the “:” part of the tree) are links to the corresponding GoboLinux folders. The legacy folders are excluded from default directory view by GoboHide.
/ |-- Data - for resources belonging to the system and to individual programs | |-- Compile - sources, recipes and other files used by the Compile tool | | |-- Archives | | |-- LocalRecipes | | |-- PackedRecipes | | |-- Recipes | | `-- Sources | `-- Variable - for spool files, log files, temporary files, etc. | |-- cache | |-- empty | |-- lib | |-- lock | |-- log | |-- run | |-- spool | `-- tmp |-- Mount - mountpoints for filesystems |-- Programs - where programs (with all their files) are installed |-- System | |-- Aliens - files managed by programming language package managers | |-- Environment - links to program files declaring environment variables | |-- Index - links to files in each program's | | |-- bin + bin/ and sbin/ directories | | |-- include + include/ directory | | |-- lib + lib/ directory | | |-- libexec + libexec/ directory | | `-- share + share/ directory | | |-- consolefonts | | |-- fonts | | `-- man | | |-- info + info/ directory | | `-- man{1-9} + man{1-9}/ directories | |-- Kernel | | |-- Boot - kernel images, config files and programs needed to boot | | |-- Devices - device files (managed by Udev). | | |-- Modules - loadable kernel modules (device drivers) | | |-- Objects - a view of the kernel's device tree | | `-- Status - kernel status files (belonging to the /proc filesystem) | |-- Settings - system config files and links to files in program's Settings/ directories. | | `-- BootScripts - scripts used for boot, symlink to /Programs/BootScripts/Settings/BootScripts/ | `-- Tasks - links to programs' boot tasks (from their Resources/Tasks/ directory) |-- Users - contains users' home directories : : :-- etc -&gt; System/Settings :-- dev -&gt; System/Kernel/Devices :-- sys -&gt; System/Kernel/Objects :-- proc -&gt; System/Kernel/Status :-- var -&gt; System/Variable :-- tmp -&gt; System/Variable/tmp :-- sbin -&gt; System/Index/bin :-- bin -&gt; System/Index/bin :-- lib -&gt; System/Index/lib :-- lib64 -&gt; System/Index/lib `-- usr |-- X11R6 -&gt; . |-- local -&gt; . |-- bin -&gt; ../System/Index/bin |-- sbin -&gt; ../System/Index/bin |-- include -&gt; ../System/Index/include |-- lib -&gt; ../System/Index/lib |-- lib64 -&gt; ../System/Index/lib |-- libexec -&gt; ../System/Index/libexec `-- share -&gt; ../System/Index/share</description></item><item><title>System Index</title><link>https://wiki.gobolinux.org/Concepts/System-Index/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://wiki.gobolinux.org/Concepts/System-Index/index.html</guid><description>System Index Compiled programs in C and C++ typically have a lib/ directory and often also a bin/ directory.
On GoboLinux, these will be symlinked into /System/Index such as for ping:
/System/Index/bin/ping /System/Index/lib/libpng.so.3 Traditional Unix paths are also symlinks to the /System/Index directory structure:
/bin -&gt; /System/Index/bin /usr/bin -&gt; /System/Index/bin /usr/lib -&gt; /System/Index/lib /etc -&gt; /System/Settings</description></item><item><title>Understanding and Maintaining system indices</title><link>https://wiki.gobolinux.org/Concepts/Understanding-and-maintaining-system-indices/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://wiki.gobolinux.org/Concepts/Understanding-and-maintaining-system-indices/index.html</guid><description>The two main parts of GoboLinux are /Programs and /System. If you stick to using InstallPackage and Compile, these two parts will be implicitly kept in sync by SymlinkProgram. But a lot of power lies in the fact that you can tune how these two worlds interact.
Program entries under /Programs feature a Current symlink pointing to a specific version that is “active” in the system. This Current version is taken as the default version when you don’t specify a version in scripts, and the link is updated when you install a new version with InstallPackage or Compile.</description></item><item><title>Alien Packaging Subsystem</title><link>https://wiki.gobolinux.org/Concepts/Alien-Packaging-Subsystem/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://wiki.gobolinux.org/Concepts/Alien-Packaging-Subsystem/index.html</guid><description>Alien Packages GoboLinux has a concept of “Alien” packages. These are programs that are usually packaged via external, distro-independant package managers. Common examples are: pip (Python), npm (Javascript), cargo (Rust), LuaRocks (Lua), RubyGems (Ruby), CPAN (Perl).
GoboLinux currently supports the following backends:
LuaRocks PIP3 RubyGems CPAN How to install and update Alien packages Main article: Managing Alien Packages</description></item><item><title>Runner</title><link>https://wiki.gobolinux.org/Concepts/Runner-Intro/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://wiki.gobolinux.org/Concepts/Runner-Intro/index.html</guid><description>Runner is a utility for launching programs under GoboLinux that ensures that the filesystem view of a process will match its dependencies. In other words, Runner eliminates the possibility of library conflicts when running an executable.
Runner is a filesystem virtualization tool that sets up a constrained view of /System/Index for a process based on the executable program’s Dependencies file. It is run as a wrapper, e.g. Runner SomeApp.
Runner builds a custom mount table for the process, like container tools do, but without duplicating files. It dynamically picks the correct parts of your /Programs tree. This approach is feasible in GoboLinux due to way programs are each confined to their own subdirectories.</description></item></channel></rss>