Title: Using awk to pretty-display OpenBSD packages update changes
Author: Solène
Date: 04 December 2021
Tags: openbsd awk
Description: 

# Introduction

You use OpenBSD and when you upgrade your packages you often wonder
which one is a rebuild and which one is a real version update?  The
packages updates are logged in /var/log/messages and using awk it's
easy to achieve some kind of report.

# Command line

The typical update line will display the package name, its version, a
"->" and the newer version of the installed package.  By verifying if
the newer version is different from the original version, we can report
updated packages.

awk is already installed in OpenBSD, so you can run this command in
your terminal without any other requirement.

```shell command line
awk -F '-' '/Added/ && /->/ { sub(">","",$0) ; if( $(NF-1) != $NF ) { $NF=" => "$NF ; print }}' /var/log/messages
```

The output should look like this (after a pkg_add -u):

```command line output
Dec  4 12:27:45 daru pkg_add: Added quirks 4.86  => 4.87
Dec  4 13:01:01 daru pkg_add: Added cataclysm dda 0.F.2v0  => 0.F.3p0v0
Dec  4 13:01:05 daru pkg_add: Added ccache 4.5  => 4.5.1
Dec  4 13:04:47 daru pkg_add: Added nss 3.72  => 3.73
Dec  4 13:07:43 daru pkg_add: Added libexif 0.6.23p0  => 0.6.24
Dec  4 13:40:41 daru pkg_add: Added kakoune 2021.08.28  => 2021.11.08
Dec  4 13:43:27 daru pkg_add: Added kdeconnect kde 1.4.1  => 21.08.3
Dec  4 13:46:16 daru pkg_add: Added libinotify 20180201  => 20211018
Dec  4 13:51:42 daru pkg_add: Added libreoffice 7.2.2.2p0v0  => 7.2.3.2v0
Dec  4 13:52:37 daru pkg_add: Added mousepad 0.5.7  => 0.5.8
Dec  4 13:52:50 daru pkg_add: Added munin node 2.0.68  => 2.0.69
Dec  4 13:53:01 daru pkg_add: Added munin server 2.0.68  => 2.0.69
Dec  4 13:53:14 daru pkg_add: Added neomutt 20211029p0 gpgme sasl 20211029p0 gpgme  => sasl
Dec  4 13:53:20 daru pkg_add: Added nethack 3.6.6p0 no_x11 3.6.6p0  => no_x11
Dec  4 13:58:53 daru pkg_add: Added ristretto 0.12.0  => 0.12.1
Dec  4 14:01:07 daru pkg_add: Added rust 1.56.1  => 1.57.0
Dec  4 14:02:33 daru pkg_add: Added sysclean 2.9  => 3.0
Dec  4 14:03:57 daru pkg_add: Added uget 2.0.11p4  => 2.2.2p0
Dec  4 14:04:35 daru pkg_add: Added w3m 0.5.3pl20210102p0 image 0.5.3pl20210102p0  => image
Dec  4 14:05:49 daru pkg_add: Added yt dlp 2021.11.10.1  => 2021.12.01
```

# Limitations

The command seems to mangle the separators when displaying the result
and doesn't work well with flavors packages that will always be shown
as updated.

At least it's a good start, it requires a bit more polishing but that's
already useful enough for me.