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).
We have a second apt repository at https://apt-dev.galliumos.org/ which will be retired.
The current distributions are:
- vivid-galliumos
- STABLE / RELEASE (default)
- priority pinned at 9999, will trump Canonical's
vivid
repo for all package versions - vivid-galliumos-prerelease
- prerelease / staging / unstable
- priority pinned at 10050, will also trump our
vivid-galliumos
repo for all package versions - vivid-galliumos-testing
- testing / experimental / current / development / etc
- priority pinned at 10090, will also trump our
vivid-galliumos-prerelease
repo for all package versions
General users will only have our vivid-galliumos
distribution enabled (and Canonical's vivid
distribution, of course).
Packages
Our package version naming convention descends from upstream Ubuntu packages, where applicable. Ubuntu's package versioning works like this:
Sample Package Version Strings
- Packages from original sources (without Debian or Canonical patches):
1.2.3
- Packages patched by Debian but not Canonical:
1.2.3-1
- Packages patched by Canonical but not Debian:
1.2.3-0ubuntu1
- Packages patched by Debian and Canonical:
1.2.3-1ubuntu1
GalliumOS Package Version Strings
We need to add our own tag to upstream packages.
- Packages original to us (galliumos-base, etc) do not need our tag
-
1.2.3
- Packages from upstream original sources, unpatched, do not need our tag
-
1.2.3
- Packages from Debian and patched by us, do need our tag, with no hyphen. Add a zero if Debian hasn't added a version of their own!)
-
1.2.3-0galliumos1
- Packages from Canonical and patched by us do need our tag, with a hyphen.
-
1.2.3-0ubuntu1-galliumos1
The yes-hyphen/no-hyphen rules are due to Debian's (`apt`'s) complicated sort logic. See below for a demonstration of importance.
# These version strings are in increasing order 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 ## this is wrong! 3.2.1galliumos1 ## this is wrong! 3.2.1galliumos2 ## this is wrong! 3.2.1galliumos10 ## this is wrong! 3.2.1-0-galliumos1 ## this is wrong! 3.2.1-1-galliumos1 ## this is wrong! 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 ## this is wrong! 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. 1.2.3
in upstream to our 1.2.4
). 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
1.2.4
, it will have different code than our1.2.4
. -
debootstrap
builds will fail to update to our pkgs when version numbers collide.
Package Version Corrections
This is easy to fix! We just need to push corrected pkg versions to the stable repodist (`vivid-galliumos`).
However, when users run apt-get upgrade
, they will be prompted to confirm "DOWNGRADED" packages, which we'll need to emphasize in the 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-4-galliumos13 |
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-1-galliumos1 |
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.5-galliumos16 |
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-galliumos3 |
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 |
xfce4-panel | 4.12.0-0ubuntu1 | 4.12.0-0ubuntu1 | 4.12.1-0ubuntu1 | 4.12.0-0ubuntu1-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-2-galliumos2 |
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-2-galliumos1 |
deadbeef | 0.6.2-1 | 0.6.2-1 | 0.6.2-1 (no mods, this is correct!) |
0.6.2-1-galliumos1 (if we patch in the future!) |
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 |