Ubuntu 22.10を使っていたが、2023-07-20でサポートが切れていた。apt updateのエラーを久々にちゃんと読んでEOLっぽいじゃんということに気がついてアップグレードするのに時間を取られたので、次からは先んじて気がつけるようにしたい。
というわけでシェルを立ち上げたときにEOLが近づいていたら教えてくれるようにしたい。
freedesktop.orgのos-releaseのページによると使っているOSのEOLは/etc/os-releaseにSUPPORT_ENDとして書いてある……こともあるらしい。手元ではそういうのはなかった。この質問によると、distro-info-dataというパッケージがインストールされていれば/usr/share/distro-info/ubuntu.csvというファイルが配置されているはずで、ここに歴々のディストリビューションの情報が書いてあり、EOLの情報も含まれているらしい。このファイルはあったのでこれを使うことにする。
CSVなので適当にパースしたら良いだろうと思ったが、ヘッダには8カラムありそうに書いておきながら実際には6カラムしかない行などが存在していて、お行儀の良い入力を期待するCLIツールでは太刀打ちできなさそうだったので、雑なことをすることにした(=eolのデータは6列目にあるということにしてcutで取り出すことにした)。以下のようなスクリプトを.zshrcに追加する。
function get_eol() { if [[ "$OSTYPE" != "linux-gnu" ]]; then return fi source /etc/os-release eol=$(grep -F "$VERSION_ID" /usr/share/distro-info/ubuntu.csv | cut -d, -f 6) d=$(( ($(date +%s -d "$eol") - $(date +%s)) / 86400 )) if [[ "$d" -lt 30 ]]; then echo -e "\e[41m EOL of ${VERSION} is coming (${eol})" fi } get_eol
OSのEOLが近づいているときにシェルを立ち上げたら、↓のように教えてくれる想定
