Packaging
Contents
Current State of Packaging
For documentation and discussion. Design is still in flux.
Repositories and Distributions
We have one apt repository at https://apt.galliumos.org/ which serves three "distributions" (confusing name, but there it is).
The old "dev" apt repository at https://apt-dev.galliumos.org/ has been retired.
The current distributions are:
-
vivid-galliumos("release" or "stable")- contains fully released, production packages, and is the (only) default repodist for all users, installed by
galliumos-base - priority pinned at 9999
- trumps Canonical's
vividrepodist for all package versions - trumps GalliumOS's
vivid-galliumos-prereleaserepodist only with newer versions
- trumps Canonical's
- contains fully released, production packages, and is the (only) default repodist for all users, installed by
-
vivid-galliumos-prerelease("prerelease", "staging", or "unstable")- contains prerelease packages (expected to be stable and ready for general use)
- priority pinned at 9999
- trumps Canonical's
vividrepodist for all package versions - trumps GalliumOS's
vivid-galliumosrepodist only with newer versions
- trumps Canonical's
-
vivid-galliumos-testing("testing", "experimental", "current", or "development")- contains testing packages (very possibly broken, not ready for general use)
- priority pinned at 10090
- trumps all other repodists (Canonical and GalliumOS) for all package versions
To enable or disable repodists
The galliumos-repodist script is included in the galliumos-base package.
Usage is straightforward:
-
galliumos-repodist --enable prerelease -
galliumos-repodist --disable prerelease -
galliumos-repodist --status
See galliumos-repodist --help for more.
Packages
Our package version naming convention descends from upstream Ubuntu packages, where applicable. Ubuntu's package versioning works like this:
Sample Package Version Strings
-
3.2.1Packages from original sources, without Debian or Canonical patches -
3.2.1-1Packages patched by Debian (v1) but not Canonical -
3.2.1-0ubuntu1Packages patched by Canonical (v1) but not Debian (Canonical adds the implicit zero) -
3.2.1-1ubuntu2Packages patched by Debian (v1) and Canonical (v2)
GalliumOS Package Version Strings
Our version string might include a galliumosN tag (N=version), depending on the source of the packaged material:
- Original to us e.g
galliumos-base-
3.2.1, no tag needed
-
- From original sources, not patched by us
-
3.2.1, no changes; reuse the version from the original source
-
- From original sources, and patched by us
-
3.2.1?? becomes3.2.1galliumos1or3.2.1-galliumos1?? TBD!
-
- From Debian or Canonical (patched or not), not patched by us
-
3.2.1, no changes; reuse the upstream version string -
3.2.1-4
-
- From Debian (patched or not), and patched by us
-
3.2.1-4becomes3.2.1-4galliumos1, add our tag. -
3.2.1becomes3.2.1-0galliumos1, add the implicit-0first, if necessary!
-
- From Canonical (patched or not), and patched by us
-
3.2.1?? becomes3.2.1galliumos1or3.2.1-galliumos1?? TBD!
-
- From Canonical via Debian (patched or not), and patched by us
-
3.2.1-0ubuntu1becomes3.2.1-0ubuntu1-galliumos1, just add a hyphen and our tag -
3.2.1-4ubuntu1becomes3.2.1-4ubuntu1-galliumos1
-
The hyphenation rules are due to Debian's complicated sort logic. See below for a demonstration.
# These version strings are Debian-ordered from oldest to newest # 3.2.1 3.2.1-0galliumos1 3.2.1-1 3.2.1-1galliumos1 3.2.1-1ubuntu1 3.2.1-1ubuntu2 3.2.1-2galliumos1 3.2.1-10 3.2.1-10galliumos1 3.2.1-10galliumos1 3.2.1-galliumos1 ## TBD 3.2.1galliumos1 ## TBD 3.2.1galliumos2 ## TBD 3.2.1galliumos10 ## TBD 3.2.1-0-galliumos1 ## ambiguous; do not use 3.2.1-0-ubuntu1 ## ambiguous; do not use 3.2.1-0-ubuntu0-galliumos1 ## ambiguous; do not use 3.2.1-0-ubuntu1-galliumos1 ## ambiguous; do not use 3.2.1-1-galliumos1 ## ambiguous; do not use 3.2.1-1ubuntu1-galliumos1 3.2.1-1ubuntu2-galliumos1 3.2.1-1ubuntu2-galliumos2 3.2.1-1ubuntu2-galliumos10 3.2.1-1ubuntu10-galliumos1 3.2.1-10-galliumos1 ## ambiguous; do not use 3.2.1.1
Package Version Discrepancies!
We have some existing packages which do not follow this naming convention, and are versioned ahead of their upstreams (e.g. our 3.2.2 to 3.2.1 upstream). This causes a few issues:
- It's confusing for us and gives users the impression that our code is a release ahead of the upstream.
- When the upstream releases a
3.2.2, it will have different code than our3.2.2. -
debootstrapbuilds will fail to update to our pkgs when version numbers collide. - When building source packages, the builder looks for the wrong upstream version number
Package Version Corrections
This is easy to fix! We just need to push corrected pkg versions to the stable repodist (`vivid-galliumos`), and remove the old versions from the same repodist.
However, when users run apt-get upgrade, they will be prompted to confirm "DOWNGRADED" packages. We'll need to emphasize that this is expected in the BETA2 release announcement.
Deviant package versions
These packages are currently problematically versioned:
| package | upstream fork point | upstream current | galliumos uncorrected | galliumos corrected |
|---|---|---|---|---|
| xfce4-settings | 4.12.0-ubuntu1 | 4.12.0-0ubuntu1 | 4.12.9-0ubuntu1 | 4.12.0-0ubuntu1-galliumos7 |
| slim | 1.3.6-4 | 1.3.6-4 | 1.3.7.4-1 | 1.3.6-4galliumos13 |
| xfwm4 | 4.12.1-1ubuntu1 | 4.12.3-1ubuntu1~ubuntu15.04.1 | 4.12.2-1ubuntu6 | 4.12.2-1ubuntu1-galliumos5 |
| pasystray | 0.4.0-1 | 0.4.0-1 | 0.4.0.3-2 | 0.4.0-1galliumos1 |
| xorg-server | 2:1.17.1-0ubuntu3.1 | TBD | 2:1.17.1-0ubuntu4 | 2:1.17.1-0ubuntu3.1-galliumos1 |
| xfce4-panel | 4.12.0-0ubuntu1 | 4.12.0-0ubuntu1 | 4.12.1-0ubuntu1 | 4.12.0-0ubuntu1-galliumos1 |
| xubuntu-default-settings | 15.04.5 | 15.04.5 | 15.04.22 | 15.04.5galliumos16 |
| dmz-cursor-theme | 0.4.4ubuntu1 | 0.4.4ubuntu1 | 0.4.5ubuntu1 | 0.4.4ubuntu1-galliumos1 |
| galliumos-meta | xubuntu-meta 2.190 | TBD | 2.201 | 2.190-galliumos11 |
| xfce4-session | 4.12.1-1ubuntu2 | 4.12.1-1ubuntu2 | 4.12.1-1ubuntu9 | 4.12.1-1ubuntu2-galliumos5 |
| cups-filters | 1.0.67-0ubuntu2.4 | 1.0.67-0ubuntu2.5 (!) | 1.0.67-0ubuntu2.5 | 1.0.67-0ubuntu2.4-galliumos1 |
| ubiquity | 2.21.26 | 2.21.26 | 2.21.31 | 2.21.26-galliumos4 |
| casper | 1.360 | 1.360 | 1.360-2 | 1.360-galliumos2 |
| zram-config | 0.3.1 | 0.3.1 | 0.3.2-1 | 0.3.1-0galliumos3 |
| xubuntu-artwork | 15.04.4 | 15.04.4 | 15.04.18 | 15.04.4-galliumos13 |
| xkeyboard-config | 2.12-1ubuntu1 | TBD | 2.12.1-1ubuntu1 | 2.12-1ubuntu1-galliumos1 |
| libnotify | 0.7.6-2svn1 | TBD | 0.7.7-1 | 0.7.6-2svn1-galliumos1 |
| ubuntu-meta | 1.334 | TBD | 1.336 | 1.334-galliumos2 |
| systemd | 219-7ubuntu6 | 219-7ubuntu6 | 219-7ubuntu29 | 219-7ubuntu6-galliumos3 |
| procps | 1:3.3.9-1ubuntu8 | 1:3.3.9-1ubuntu8 | 1:3.3.9.3-1ubuntu9 | 1:3.3.9-1ubuntu8-galliumos3 |
| libdrm | 2.4.60-2 | TBD | 2.4.65-1-9.22.15.git-1 | 2.4.60-2galliumos2 |
| kmod | 18-3ubuntu1 | 18-3ubuntu1 | 18-3ubuntu2 | 18-3ubuntu1-galliumos1 |
| hexchat | 2.10.1-2 | 2.10.1-2 | 2.10.1-5 | 2.10.1-2galliumos1 |
| deadbeef | 0.6.2-1 | 0.6.2-1 | 0.6.2-1 | (no mods, this is correct!) |
| xfce4-power-manager | 1.4.3-0ubuntu1 | 1.4.3-0ubuntu1 | 1.4.8-0ubuntu11 | 1.4.3-0ubuntu1-galliumos12 |
| base-files | 7.2ubuntu9 | 7.2ubuntu9 | 7.2ubuntu10 | 7.2ubuntu9-galliumos1 |
| compton | 0.1~beta2-1 | 0.1~beta2-1 | 0.1~beta3-git-9.22.15-9 | 0.1~beta2-1-galliumos11 |
| xorg | 1:7.7+7ubuntu4 | 1:7.7+7ubuntu4 | 1:7.7+7ubuntu5 | 1:7.7+7ubuntu4-galliumos1 |
| shimmer-themes | 1.9.4-0ubuntu2 | 1.9.4-0ubuntu2 | 1.9.4-1ubuntu1 | 1.9.4-0ubuntu2-galliumos1 |