Parabola Presentation

From ParabolaWiki
Jump to: navigation, search

Gnome-colors-add-files-to-archive.pngThis article is being considered for archiving.Gnome-colors-add-files-to-archive.png

Reason: See issue 707 (Discuss in Talk:Parabola Presentation#)

1 What is Parabola GNU/Linux-libre?

Parabola GNU/Linux-libre with LXDE

Parabola GNU/Linux is a libre software project aiming to provide a fully free as in freedom distribution based on the packages of the Arch distribution, with packages optimized for i686, x86_64, and Loongson 2F (mips64el) CPUs. Parabola aims to keep its package and management tools simple. The primary goal is to give the user complete control over their system with 100% Libre software. Parabola is listed by the Free Software Foundation as a fully free software distribution.

Development is focused on a balance of simplicity, elegance, code-correctness and bleeding edge free software.

Its lightweight and simple design makes it easy to extend and mold into whatever kind of system you're building.

You can find us on #parabola or mailing list.

2 Why should you use Parabola?

Parabola equals software freedom plus all power to the users. GNU plus ArchWay. With a continuously updated system, simple to manage, simple to package, you can build your own operating system in the way you want and learn a lot along the way.

3 Parabola GNU/Linux-libre Social Contract

The social contract of Parabola GNU/Linux-libre is a commitment of the distribution with the libre software community in general and its users in particular. It is because of this that our social contract will always follow the philosophy of free knowledge. All the amendments to this social contract must be faithful to the spirit of the Free Software Movement.

  1. Parabola GNU/Linux-libre is libre software: it will follow the GNU free system distribution guidelines, so it doesn't include or recommend proprietary software or documentation and it does not provide any type of support for their installation or execution. This includes: proprietary software, binary only firmware or binary blobs.
  2. Parabola GNU/Linux-libre and other distributions: Parabola's objective is to support the free software movement so we only need to compete against nonfree software. Parabola will strive to support other free software projects as best it can and any information from our project will be available for anybody who needs it. That includes our packages and repositories.
  3. Parabola GNU/Linux-libre and its community: our community is democratic in its essence, so the community is included whenever there is a need to take a decision. We encourage community participation in the development of the project.
  4. Parabola GNU/Linux-libre and Arch: Parabola is the free version of Arch. We provide repositories and installation images without any nonfree software. We respect Arch's KISS philosophy (Keep It Simple, Stupid) and its developing process. In that sense, Parabola will always maintain retro compatibility with Arch so as to help free already working installations.

4 TalkingParabola GNU/Linux-libre

TalkingParabola is a derivative install CD based on TalkingArch. It is a respin of the Parabola ISO modified to include speech and braille output for blind and visually impaired users.

TalkingParabola retains all the features of the Parabola live image, but adds speech and braille packages to make it possible for blind and visually impaired users to install Parabola eyes-free.

4.1 Braille Support

TalkingParabola includes brltty, for those who own braille displays. The brltty package available on the TalkingParabola CD was compiled with as few dependencies as possible. If you wish to use braille, you will need to supply the brltty parameter at the boot prompt. Alternatively, you can start brltty from the shell, after the system has booted.

The brltty boot-time parameter consists of three comma-separated fields: driver, device, and table. The first is the driver for your display, the second is the name of the device file, and the third is a relative path to a translation table. You can use "auto" to specify that the driver should be automatically detected. I encourage you to read the brltty documentation for a fuller explanation of the program.

For example, suppose that you have a device connected to /dev/ttyS0, the first serial port. You wish to use the US English text table, and the driver should be automatically detected. Here is what you should type at the boot prompt:

arch32 brltty=auto,ttyS0,en_US

Once brltty is running, you may wish to disable speech. You can do so via the "print screen" key, also known as sysrq. On my qwerty keyboard, that key is located directly above the insert key, between F12 and scroll lock.

4.2 Speech support

TalkingParabola includes espeakup for speech support in the installation.

4.3 Maintaining Your Speech-enabled TalkingParabola Installation

You shouldn't need to do anything extraordinary to maintain the installation. Everything should just seamlessly work.

5 History

Parabola was originally proposed by members of the gNewSense IRC channel in 2009. Members of different Arch communities, especially Spanish-speaking members, started the development and maintenance of the project software and documentation.

On May 20, 2011, the Parabola distribution was accepted as a completely free project by GNU, making it part of the FSF list of free distributions.

Parabola had a MIPS port in the past to provide support for running it on the Chinese Loongson processor, however the Parabola developers working on MIPS had been slowly losing their hardware; sometimes to hardware failure, sometimes to theft. It has resulted in its discontinuation and the final commit to the MIPS repository took place in July 2014.

In December 2014 Parabola started discussing options to support this ARM architecture to give support for more devices as single-board computers and in August 2015, Parabola begun the plan to sync and liberate packages from Arch ARM, also port all x86 packages from the repos.

The first kernel for ARMv7 has been created since 20th August, but in the developing progress, the Parabola developers cancelled it because were found blobs inside the RCN patch and they thought that it could avoid start up Parabola on those devices.

However, after some days under discussion about it, Parabola developers paid attention those blobs aren't needed, therefore they did the RCN patch deblobbing. Then, after many testing days, they checked the patched kernel worked well without issues and instabilities.

Meanwhile, Parabola received a proposal by coadde (one of Parabola hackers) to port GRUB for ARMv7 to use 2 or more kernels in the same system, so Parabola kernels were renamed to custom names (eg. vmlinuz-linux-libre-grsec). Now, grub package has been developed and available from the repos, but uboot4grub packages are needed to start up the ARMv7 devices for GRUB usage.

At the moment, Parabola supports U-Boot like Arch ARM does, therefore it works well on many single-board computers such as the Beagleboard and the BeagleBone.

On the higher end, there is support for:

  • ARMv7 first generation Cortex-A8 platforms, such as the BeagleBoard or Cubieboard
  • ARMv7 second generation Cortex-A9 and Tegra platforms, such as the PandaBoard or TrimSlice
  • ARMv7 third generation Cortex-A7 and Cortex-A15 platforms, such as the Cubieboard2, Samsung Chromebook (series 3) or Samsung Chromebook 2

Since October 2015 ARM version can run on any device that works without running a nonfree program and supports ARMv7 instruction sets.

6 Diferenças do Parabola com o Arch e o Arch ARM

O projeto usa apenas software 100% livre dos repositórios oficiais do Arch para as arquiteturas i686 e x86-64 e dos repositórios oficiais do Arch ARM (exceto [alarm] e [aur]) para o ARMv7. Parabola usa substitutos livres quando for possível, como o kernel do Linux-libre ao invés do kernel Linux genérico.

O processo de filtragem remove cerca de 700 pacotes de software a partir dos repositórios que não cumprem com os requisitos da definição do Software Livre para cada arquitetura.

7 Liberate Arch and Arch ARM

Parabola GNU/Linux-libre ISO installer
TalkingParabola GNU/Linux-libre ISO installer. It's a respin of !Parabola ISO based on TalkingArch for blind and impaired users.

Following the minimalist, KISS, spirit of Arch, we have managed to achieve its freedom in a simple way. To liberate your Arch and Arch ARM installation, just install our libre repositories list and update your system.

No reinstallation needed.

See Migration from Arch and Arch ARM for detailed instructions.

8 Features

8.1 Pacman

The pacman package manager is one of the major distinguishing features of Parabola. It combines a simple binary package format with an easy-to-use build system. The goal of pacman is to make it possible to easily manage packages, whether they are from the official repositories or the user's own builds.

pacman keeps the system up to date by synchronizing package lists with the master server. This server/client model also allows the user to download/install packages with a simple command, complete with all required dependencies.

pacman is written in the C programming language and uses the .pkg.tar.xz package format.

Tip: The official pacman package also contains other useful tools, such as makepkg, pactree, vercmp, and checkupdates. Run pacman -Ql pacman | grep bin to see the full list.

8.2 Package security

pacman 4 supports package signatures, which add an extra layer of security to the packages. The default configuration, SigLevel = Required DatabaseOptional, enables signature verification for all the packages on a global level: this can be overridden by per-repository SigLevel lines as shown above. For more details on package signing and signature verification, take a look at pacman-key.

9 Usage

9.1 Installing packages

Note: Packages often have a series of optdepends that, while not mandatory, provide additional functionality. You may refer to this information at will by #Querying package databases.

9.1.1 Installing specific packages

To install a single package or list of packages (including dependencies), issue the following command:

# pacman -S package_name1 package_name2 ...

To install a list of packages with regex:

# pacman -S $(pacman -Ssq package_regex)

Sometimes there are multiple versions of a package in different repositories, e.g. extra and testing. To install the former version, the repository needs to be defined in front:

# pacman -S extra/package_name

9.1.2 Installing package groups

Some packages belong to a group of packages that can all be installed simultaneously. For example, issuing the command:

# pacman -S gnome

will prompt you to select the packages from the gnome group that you wish to install.

9.2 Removing packages

To remove a single package, leaving all of its dependencies installed:

# pacman -R package_name

To remove a package and its dependencies which are not required by any other installed package:

# pacman -Rs package_name

To remove a package, its dependencies and all the packages that depend on the target package:

Warning: This operation is recursive, and must be used with care since it can remove many potentially needed packages.
# pacman -Rsc package_name

To remove a package, which is required by another package, without removing the dependent package:

# pacman -Rdd package_name

pacman saves important configuration files when removing certain applications and names them with the extension: .pacsave. To prevent the creation of these backup files use the -n option:

# pacman -Rn package_name
Note: pacman will not remove configurations that the application itself creates (for example "dotfiles" in the home folder).

9.3 Upgrading packages

pacman can update all packages on the system with just one command. This could take quite a while depending on how up-to-date the system is. This command can synchronize the repository databases and update the system's packages (excluding 'local' packages that are not in the configured repositories):

# pacman -Syu

9.4 Querying package databases

pacman queries the local package database with the -Q flag; see:

$ pacman -Q --help

and queries the sync databases with the -S flag; see:

$ pacman -S --help

pacman can search for packages in the database, searching both in packages' names and descriptions:

$ pacman -Ss string1 string2 ...

To search for already installed packages:

$ pacman -Qs string1 string2 ...

To display extensive information about a given package:

$ pacman -Si package_name

For locally installed packages:

$ pacman -Qi package_name

Passing two -i flags will also display the list of backup files and their modification states:

$ pacman -Qii package_name

To retrieve a list of the files installed by a package:

$ pacman -Ql package_name

For packages not installed, use pkgfile.

To verify the presence of the files installed by a package:

$ pacman -Qk package_name

Passing the k flag twice will perform a more thorough check.

One can also query the database to know which package a file in the file system belongs to:

$ pacman -Qo /path/to/file_name

To list all packages no longer required as dependencies (orphans):

$ pacman -Qdt

To list all packages explicitly installed and not required as dependencies:

$ pacman -Qet

To list a dependency tree of a package:

$ pactree package_name

To list all the packages depending on an installed package, use whoneeds from pkgtools:

$ whoneeds package_name

or the reverse flag to pactree:

$ pactree -r package_name

10 Repositories

Since only a small part of Arch official packages are nonfree or contain nonfree components, there's no need for us to repackage everything. In our repos, you'll find Arch official packages, directly from its official repositories, minus the nonfree packages, plus our libre replacements, when possible.

11 Our current Repos:

A blue background indicates that the repository is imported from Arch (and run through the blacklist, of course). A purple background indicates that the repository originates with Parabola. A red background indicates that the repository doesn't currently exist in Parabola.

core testing libre libre-testing
multilib multilib-testing libre-multilib libre-multilib-testing
community community-testing pcr
nonprism nonprism-testing
AUR ~aurelien

What "-testing" means should be obvious.

11.1 core/extra/libre/java

The core/extra/libre/java arrangement is a little tricky right now.

11.1.1 java

First, java. While Java packages in Arch might not have freedom issues per se, they frequently don't meet Parabola's policies with regard to building the package from source. The java repository is a "half way house" for packages that we are fixing this for. In order to not cripple the Java support in Parabola, we must relax the polices in some cases, and provide packages that don't meet all of the criteria to put a package in libre. Packages in java may change quickly.

11.1.2 libre

The libre repository contains three things

  • Replacements for packages in Arch's core that were blacklisted (if the replacement isn't in java)
  • Replacements for packages in Arch's extra that were blacklisted (if the replacement isn't in java)
  • Packages produced entirely by Parabola that are deemed to be core packages (and their build dependencies)

libre has strict requirements, but currently the sign-off process, where multiple developers vet a package, doesn't reflect this; instead developers are expected to self-review their packages.

In the case of packages being added that aren't replacements for packages from Arch, what belongs in libre is just slightly looser than core. A package that would have been put in extra in Arch might not make it into libre; even though it is maintained by a Parabola developer, it might end up in pcr.

11.1.3 core/extra

core and extra are imported from Arch, but with blacklisted packages removed. core

In Arch, core contains all necessary packages for:

as well as dependencies of the above (not necessarily makedepends)

core has fairly strict quality requirements. Multiple developers/users need to signoff on updates before package updates are accepted. For packages with low usage, a reasonable exposure is enough: informing people about update, requesting signoffs, keeping in testing up to a week depending on the severity of the change, lack of outstanding bug reports, along with the implicit signoff of the package maintainer. extra

In Arch, extra contains all packages that do not fit in core. Example: Xorg, window managers, web browsers, media players, tools for working with languages such as Python and Ruby, and a lot more.

11.2 Community repositories

11.2.1 multilib/libre-multilib

multilib and libre-multilib contain i686 software and libraries packaged for x86_64 to allow some 32-bit applications to be run on 64 but systems (such as wine).

11.2.2 community

community contains packages from the AUR which gained enough votes to be adopted by an Arch "Trusted User".

11.2.3 pcr

The Parabola Community Repository, or pcr contains packages maintained by trusted members of the Parabola community. It also contains packages maintained by Parabola developers, but that the developer decided didn't belong in core/libre.

11.2.4 kernels

kernels contains non-standard kernels such as "long term support" (LTS) kernels oriented towards servers, or kernels compiled with TCP Stealth and Realtime Preemption support.

11.2.5 nonprism

nonprism contains packages provided by the Parabola community without services under global data surveillance programs like PRISM.

11.2.6 cross

cross contains mostly-unsupported packages that contain toolchains for cross-compiling for a different architecture.

11.3 Unsupported repositories

11.3.1 User repositories

Repositories beginning with a tilde (~) are "user" repositories, and they are provided by individual developers independent of the Parabola project. The individual might be a Parabola developer, but their repository is only supported by them, not the rest of the Parabola team.

That said, the packages in them must still meet the freedom requirements of Parabola. However, they might not meet the quality or stability requirements.

In general, user repositories are being phased out in favor of pcr. However, they aren't going away, or being totally deprecated. For example, ~lukeshu is going to continue to be used for testing/unstable software that is developed by Luke Shumaker, but is not part of Parabola.

11.3.2 AUR

Parabola does not endorse the AUR (Arch User Repository). Often users switching from Arch ask if the AUR is supported in Parabola. Our answer is "no, but it isn't in Arch either." However, it is at least partially endorsed by Arch.

Packages and scripts there are untrusted, and the burden is on the user to inspect the PKGBUILD and resulting package. This is the same in Parabola and Arch. Any packages that you build yourself are, naturally, your responsibility, not Parabola's. Many (most?) of the packages there are of poor quality, and contain incorrect information regarding licenses.

If there is a package in AUR that you would like, you are encouraged to ask one of the Parabola contributors to pick it up and add it to pcr.