Ubuntu 16.04LTSから18.04LTSへのアップグレード

まずは16.04LTSのバージョンを最新にしてから、update-manager-coreをインストールする。その後、LTS用アップグレードを実行する。

% sudo apt update -y
% sudo apt upgrade -y
% sudo apt dist-upgrade -y
% sudo apt autoremove
% sudo apt install update-manager-core
% sudo do-release-upgrade -d

16.04LTSのデフォルトのpythonは2.7だが、python3もインストールした。この際に update-alternativeで/usr/bin/pythonを管理していた。この結果、以下のようなエラーがでた。

インストールされたPythonが破損しています。シンボリックリンク'/usr/bin/python'を修正してください。

対応にはこちらを参照した。upgrade - How to fix "python installation is corrupted"? - Ask Ubuntu

% sudo ln -sf /usr/bin/python2.7 /usr/bin/python

再び、アップグレードを実行する。

% sudo do-release-upgrade -d

1時間ぐらいで無事アップグレード成功。ただし、tex-commonがうまくアップグレードできなかった。

tex-commonのトラブル

fmtutilがうまく実行できていない様子。

% sudo fmtutil
Can't locate mktexlsr.pl in @INC (@INC contains: /usr/local/texlive/2012/tlpkg /usr/local/texlive/2012/texmf-dist/scripts/texlive /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/bin/fmtutil line 23.
BEGIN failed--compilation aborted at /usr/bin/fmtutil line 25.

このパスのうち  /usr/local/texlive/2012/ は昔、手動でインストールしたtexlive-2012の名残。ここいらへんがおかしい気が。

/usr/local/bin以下に /usr/local/texlive/2012/以下にあるコマンドへのシンボリックリンクが大量にあった。このせいで、標準の/usr/bin/以下にあるTeX系コマンドと/usr/local/bin以下にあるTex系コマンドが入り混じってエラーがでていた様子。そこで、/usr/local/bin以下のシンボリックリンクを消す。まず、シンボリックリンクをリンク切れにする。

% sudo mv /usr/local/texlive /usr/local/texlive-old

続いて リンク切れのシンボリックリンク一括削除方法で紹介されているコマンドを実行し、リンク切れのシンボリックリンクを削除する。

% cd /usr/local/bin
% find . -xtype l |  sudo xargs rm

無事、tex-commonがインストールできた。

GCCがバージョン7になったことによるトラブル

以下のエントリーにあるようなトラブルが発生し、g++でコンパイルができない状況が発生した。

これの回避方法は、インクルードファイルの読み込みパスを自分で定義している場合はそれを全部削除すること。私はシェルの設定ファイルにインクルードファイルの読み込みパスの設定を行っていたのでそれを削除した。

PostgreSQL 9.Xから10への移行

PostgreSQLを16.04で使っていた場合、PostgreSQL 10へ手動で対応する必要がある。
www.paulox.net

Passenger

アップデート時に /etc/apt/sources.list.d/passenger.list がコメントアウトされているのでコメントインする必要がある。