Skip to content

66 Migration Instructions

Dear Obarun users, the Obarun testing repositories are ready to be used to migrate your 66 program to the new release.

The release includes a new upgrade process that is fully transparent to the user. Whether a migration involves changes to the resolve file or other components, 66 automatically detects version upgrades and makes the necessary adjustments, ensuring continuity with the new version. This process does not affect the state of running services, and an automatic snapshot is created during the migration to facilitate easy recovery if needed.

The release also includes a new snapshot command, offering a comprehensive backup solution for the 66 ecosystem. This feature guarantees that you can restore the exact state of the ecosystem before any changes. Importantly, using snapshots does not alter the state of running services.

Refer to the upgrade page for further information concerning new features and behavior changes.

Before proceeding, carefully read all instructions below and ensure you understand each command. If you have any questions or concerns, don't hesitate to seek assistance on the Obarun forum.

Migration

Note

Be sure to have the 66 and skalibs package in your /var/cache/pacman/pkg directory. It will be easier for you in case you need a rollback.

Just synchronize and update your system by activating the [obcore-testing], [obextra-testing], and [observice-testing] repositories.

Now you just need to trigger the automatic migration process by invoking any 66 command, for instance, by using the new behavior of the 66 status command:

# 66 -v3 status

This will trigger the migration process for the root account.

Now, do the same for your regular user:

% 66 -v3 status

That's all!

You can also directly initiate a reboot, though this is not mandatory to use the new release. This will migrate your system before rebooting.

Warning

You need to trigger the migration for the root account first before triggering it for regular users.

Warning

The migration process should complete successfully. If you encounter any errors, restore your previous system by performing a rollback and post an issue on 66 with as much information as possible about the crash.

Rollback

As the automatic migration process take a snapshot before processing, you can restore your previous system easily if something goes wrong. To do so, run:

# 66 snapshot restore system@0.7.2.1

Then, do the same for your regular account:

% 66 snapshot restore system@0.7.2.1

Note

You can see the list of available snapshot with the command 66 snapshot list

Now you need to downgrade the package

# cd /var/cache/pacman/pkg
# pacman -U skalibs-2.14.2.0-1-x86_64.pkg.tar.xz execline-2.9.6.0-1-x86_64.pkg.tar.xz 66-0.7.2.1-2-x86_64.pkg.tar.xz 66-tools-0.1.0.2-3-x86_64.pkg.tar.xz oblibs-0.3.0.1-2-x86_64.pkg.tar.xz s6-2.13.0.0-1-x86_64.pkg.tar.xz s6-dns-2.3.7.2-1-x86_64.pkg.tar.xz s6-linux-utils-2.6.2.0-2-x86_64.pkg.tar.xz s6-networking-2.7.0.3-1-x86_64.pkg.tar.xz s6-portable-utils-2.3.0.3-2-x86_64.pkg.tar.xz oblog-0.1.1.0-6-x86_64.pkg.tar.xz obsysusers-0.1.2.1-5-x86_64.pkg.tar.xz

Also, downgrade your services packages.

Personal service

The migration process only deals with active services, meaning those that are running when you execute (as root or a regular user):

# 66 tree status

But you may have personal frontend files that are not active. To help with this, use the script below by running: ./migration_service.sh /path/to/my/<FrontendFile>

#!/bin/sh

service="${1}"

sed -e "s:\[main\]:\[Main\]:g" \
    -e "s:@type:Type:g" \
    -e "s:@description:Description:g" \
    -e "s:@version:Version:g" \
    -e "s:@depends:Depends:g" \
    -e "s:@requiredby:RequiredBy:g" \
    -e "s:@optsdepends:OptsDepends:g" \
    -e "s:@options:Options:g" \
    -e "s:@flags:Flags:g" \
    -e "s:@notify:Notify:g" \
    -e "s:@user:User:g" \
    -e "s:@timeout-kill:TimeoutStart:g" \
    -e "s:@timeout-up:TimeoutStart:g" \
    -e "s:@timeout-finish:TimeoutStop:g" \
    -e "s:@timeout-down:TimeoutStop:g" \
    -e "s:@maxdeath:MaxDeath:g" \
    -e "s:@down-signal:DownSignal:g" \
    -e "s:@hiercopy:CopyFrom:g" \
    -e "s:@intree:InTree:g" \
    -e "s:\[start\]:\[Start\]:g" \
    -e "s:@build:Build:g" \
    -e "s:@runas:RunAs:g" \
    -e "s:@execute:Execute:g" \
    -e "s:\[stop\]:\[Stop\]:g" \
    -e "s:\[logger\]:\[Logger\]:g" \
    -e "s:@destination:Destination:g" \
    -e "s:@backup:Backup:g" \
    -e "s:@maxsize:MaxSize:g" \
    -e "s:@timestamp:Timestamp:g" \
    -e "s:\[environment\]:\[Environment\]:g" \
    -e "s:\[regex\]:\[Regex\]:g" \
    -e "s:@configure:Configure:g" \
    -e "s:@directories:Directories:g" \
    -e "s:@files:Files:g" \
    -e "s:@infiles:InFiles:g" \
    -i ${service}

See the Rosetta Stone for the list of keyword name changes.

Some Reasons

This release marks a major step towards the end of planned breaking changes for version 66. Version 0.7.0.0 introduced stability in the directory hierarchy of the 66 ecosystem, and version 0.8.0.0 solidified the stability of frontend file keys. While the implementation of events may happen in version 0.9.0.0, this can potentially occur without breaking existing 66 components(see roadmap).

I hope this new version will satisfy you and that you will appreciate the changes made.

Thank you for your continued support of Obarun.

Thanks for your attention

Eric Vidal: eric@obarun.org