Debian等でのインストール直後のawkは mawk
が導入されます.
Debianのパッケージでは他にGNU awk(パッケージ名 gawk
), The One True Awk(パッケージ名 original-awk
)というものもあります.*BSDなどでよく見る nawk
もあるように見えますが,シンボリックリンクだけのようです.
(他にもあるかもしれない?)
mawk
は初期状態で入っていて軽量.GNU awk
はmawkに比べて多機能で既定値では導入されませんが, byobu
などが依存を求めるので入っている人も多いと思います.
複数のawkパッケージが導入されているときに awk
と実行したときは update-alternatives
で管理されたシンボリックリンク先のいずれかのawkが実行されます.これを切り替えてみます.
切り替え前の状態です. awk
, nawk
が gawk(GNU awk)
に向いています.
$ ls -l /usr/bin/*awk
lrwxrwxrwx 1 root root 21 May 16 00:33 /usr/bin/awk -> /etc/alternatives/awk
-rwxr-xr-x 1 root root 694624 Feb 10 17:42 /usr/bin/gawk
-rwxr-xr-x 1 root root 158296 Feb 17 2020 /usr/bin/mawk
lrwxrwxrwx 1 root root 22 May 16 00:33 /usr/bin/nawk -> /etc/alternatives/nawk
-rwxr-xr-x 1 root root 135848 Dec 22 06:24 /usr/bin/original-awk
$ ls -l /etc/alternatives/*awk
lrwxrwxrwx 1 root root 13 May 16 04:27 /etc/alternatives/awk -> /usr/bin/gawk
lrwxrwxrwx 1 root root 13 May 16 04:27 /etc/alternatives/nawk -> /usr/bin/gawk
awk
コマンドを切り替えてみます.ここでは gawk
から mawk
にしました.
$ sudo update-alternatives --display awk (1)
awk - auto mode
link best version is /usr/bin/gawk
link currently points to /usr/bin/gawk
link awk is /usr/bin/awk
slave awk.1.gz is /usr/share/man/man1/awk.1.gz
slave nawk is /usr/bin/nawk
slave nawk.1.gz is /usr/share/man/man1/nawk.1.gz
/usr/bin/gawk - priority 10
slave awk.1.gz: /usr/share/man/man1/gawk.1.gz
slave nawk: /usr/bin/gawk
slave nawk.1.gz: /usr/share/man/man1/gawk.1.gz
/usr/bin/mawk - priority 5
slave awk.1.gz: /usr/share/man/man1/mawk.1.gz
slave nawk: /usr/bin/mawk
slave nawk.1.gz: /usr/share/man/man1/mawk.1.gz
/usr/bin/original-awk - priority 0
slave awk.1.gz: /usr/share/man/man1/original-awk.1.gz
$ sudo update-alternatives --config awk (2)
There are 3 choices for the alternative awk (providing /usr/bin/awk).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/gawk 10 auto mode
1 /usr/bin/gawk 10 manual mode
2 /usr/bin/mawk 5 manual mode
3 /usr/bin/original-awk 0 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/mawk to provide /usr/bin/awk (awk) in manual mode
$ sudo update-alternatives --set awk /usr/bin/mawk (3)
update-alternatives: using /usr/bin/mawk to provide /usr/bin/awk (awk) in manual mode
$ ls -l /etc/alternatives/*awk (4)
lrwxrwxrwx 1 root root 13 Jun 7 08:27 /etc/alternatives/awk -> /usr/bin/mawk
lrwxrwxrwx 1 root root 13 Jun 7 08:27 /etc/alternatives/nawk -> /usr/bin/mawk
- 現在の
awk
の設定を確認.gawk
に向いている - 対話モードで
update-alternatives
コマンドを起動して2
のmawk
に設定 - コマンドモードの場合
awk
,nawk
がmawk
に向いたのを確認.
切り替えできました. :)
ちなみに update-alternatives
で管理されているコマンドの一覧は以下のコマンドで表示できます.
$ update-alternatives --get-selections
環境1(Debian sid amd64)
$ dpkg-query -W mawk gawk original-awk dpkg dpkg 1.20.9 gawk 1:5.1.0-1 mawk 1.3.4.20200120-2 original-awk 2018-08-27-1 $ lsb_release -dr Description: Debian GNU/Linux 11 (bullseye) (1) Release: 11 $ arch x86_64
- 実際はsid
環境2(Ubuntu 21.04 amd64)
$ dpkg-query -W mawk gawk dpkg dpkg 1.20.9ubuntu1 gawk 1:5.1.0-1build1 mawk 1.3.4.20200120-2 $ lsb_release -dr Description: Ubuntu 21.04 Release: 21.04 $ arch x86_64
環境3(Raspberry Pi OS buster armhf)
$ dpkg-query -W mawk gawk dpkg dpkg 1.19.7 gawk 1:4.2.1+dfsg-1 mawk 1.3.3-17 $ lsb_release -dr Description: Raspbian GNU/Linux 10 (buster) Release: 10 $ arch armv7l
One thought to “Debian/Ubuntuでawkを切り替える”