CLOVER🍀

That was when it all began.

Vagrantで使っているUbuntu Linux 24.04 LTSを日本語化する

これは、なにをしたくて書いたもの?

最近、手元のOSをUbuntu Linux 22.04 LTSから24.04 LTSにアップグレードしました。今後はこのブログで扱うOSもUbuntu Linux 24.04 LTSに
切り替えていこうと思います。

今回はVagrantで使っているBoxの日本語化です。

こちらのエントリーの24.04 LTS版を書いていこうと思います。

Vagrantで使っているUbuntu Linux 22.04 LTSを日本語化する - CLOVER🍀

Vagrantで使っているUbuntu Linux 20.04を日本語化する - CLOVER🍀

使用するBoxは、ふだんならこちらの後継を使うのですが。

generic/ubuntu2204

どうやらUbuntu LinuxではVagrantのイメージを提供しなくなったようです。ubuntu/noble64みたいなものもありません。

Starting in Ubuntu 24.04, Ubuntu no longer produces Vagrant images.

Ubuntu 24.04 LTS (Noble Numbat) Release Notes / New features in 24.04 LTS / Platforms / Public Cloud / Cloud images / Vagrant

候補はこのあたりです。

今回はcloud-image/ubuntu-24.04にすることにしました。

環境

今回の環境はこちら。

$ vagrant version
Installed Version: 2.4.3
Latest Version: 2.4.3

You're running an up-to-date version of Vagrant!


$ vagrant plugin list
vagrant-libvirt (0.12.2, global)

VagrantのProviderはlibvirtです。

使用するBoxのバージョン。

$ vagrant box list | grep 24.04
cloud-image/ubuntu-24.04 (libvirt, 20240822.0.0, (amd64))

仮想マシンの起動と初期状態

まずはvagrant initからSSH接続まで。

$ vagrant init cloud-image/ubuntu-24.04
$ vagrant up
$ vagrant ssh

パッケージの最新化をしておきます。

$ sudo apt update && sudo apt upgrade -y

1度仮想マシンから出て再起動。

$ vagrant reload

現状確認。

$ uname -srvmpio
Linux 6.8.0-49-generic #49-Ubuntu SMP PREEMPT_DYNAMIC Mon Nov  4 02:06:24 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux


$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04.1 LTS
Release:        24.04
Codename:       noble

タイムゾーン

$ date
Sat Nov 23 06:35:49 UTC 2024

ロケール

$ env | grep LANG
LANG=C.UTF-8


$ locale
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=

使えるロケールの一覧。

$ locale -a
C
C.utf8
POSIX
en_US.utf8

タイムゾーンの設定。

$ cat /etc/timezone
Etc/UTC


$ ll /etc/localtime
lrwxrwxrwx 1 root root 27 Aug 22 08:36 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC

Asia/Tokyoタイムゾーンはあります。

$ timedatectl list-timezones | grep Asia/Tokyo
Asia/Tokyo

manページの状態。

$ man grep
GREP(1)                                                                     User Commands                                                                    GREP(1)

NAME
       grep, egrep, fgrep, rgrep - print lines that match patterns

SYNOPSIS
       grep [OPTION...] PATTERNS [FILE...]
       grep [OPTION...] -e PATTERNS ... [FILE...]
       grep [OPTION...] -f PATTERN_FILE ... [FILE...]

DESCRIPTION
       grep searches for PATTERNS in each FILE.  PATTERNS is one or more patterns separated by newline characters, and grep prints each line that matches a pattern.
       Typically PATTERNS should be quoted when grep is used in a shell command.

       A  FILE  of  “-”  stands  for standard input.  If no FILE is given, recursive searches examine the working directory, and nonrecursive searches read standard
       input.

〜省略〜

apt showを見た時の状態。

$ apt show grep
Package: grep
Version: 3.11-4build1
Priority: required
Essential: yes
Section: utils
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 352 kB
Provides: rgrep
Pre-Depends: libc6 (>= 2.38), libpcre2-8-0 (>= 10.32)
Conflicts: rgrep
Homepage: https://www.gnu.org/software/grep/
Task: minimal
Download-Size: 162 kB
APT-Manual-Installed: yes
APT-Sources: http://archive.ubuntu.com/ubuntu noble/main amd64 Packages
Description: GNU grep, egrep and fgrep
 'grep' is a utility to search for text in files; it can be used from the
 command line or in scripts.  Even if you don't want to use it, other packages
 on your system probably will.
 .
 The GNU family of grep utilities may be the "fastest grep in the west".
 GNU grep is based on a fast lazy-state deterministic matcher (about
 twice as fast as stock Unix egrep) hybridized with a Boyer-Moore-Gosper
 search for a fixed string that eliminates impossible text from being
 considered by the full regexp matcher without necessarily having to
 look at every character. The result is typically many times faster
 than Unix grep or egrep. (Regular expressions containing backreferencing
 will run more slowly, however.)

日本語化

それでは日本語化していきます。

日本語言語パックのインストール。

$ sudo apt install language-pack-ja


### または
$ sudo locale-gen ja_JP.UTF-8

ロケールの一覧にja_JP.utf8が追加されました。

$ locale -a
C
C.utf8
POSIX
en_US.utf8
ja_JP.utf8

LANGおよびLANGUAGE環境変数の設定。

$ export LANG=ja_JP.UTF-8
$ export LANGUAGE=ja_JP:

環境変数で変更した場合は、即座に現在のシェルに反映されます。

システム全体のロケールを変更する場合。

$ sudo update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:


### または
$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:

この場合、シェルに再ログインすると日本語化されます。

$ env | grep LANG
LANGUAGE=ja_JP:
LANG=ja_JP.UTF-8


$ localectl
System Locale: LANG=ja_JP.UTF-8
               LANGUAGE=ja_JP:
    VC Keymap: (unset)
   X11 Layout: us
    X11 Model: pc105


$ locale
LANG=ja_JP.UTF-8
LANGUAGE=ja_JP:
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

タイムゾーンの変更。

$ sudo timedatectl set-timezone Asia/Tokyo

dateコマンドの結果が変わりました。

$ date
2024年 11月 23日 土曜日 15:44:16 JST

/etc/timezoneは変わりませんね…。

$ cat /etc/timezone
Etc/UTC

/etc/localtimeには反映されたようです。

$ ll /etc/localtime
lrwxrwxrwx 1 root root 30 11月 23 15:43 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo

日本語manページのインストール。

$ sudo apt install manpages-ja manpages-ja-dev

manページが日本語化されました。

$ man grep
GREP(1)                                                                                                                                                      GREP(1)

名前
       grep, egrep, fgrep - パターンにマッチする行を表示する

書式
       grep [OPTIONS] PATTERN [FILE...]
       grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

説明
       grep  は FILE で名前を指定されたファイルを検索して、与えられた PATTERN にマッチする部分を含む行を探します。 ファイルが指定されていない場合や、 ファイル名の代
       わりに 1 個のマイナス記号 “-” が指定されている場合は、 grep は標準入力から検索します。 デフォルトでは、 grep はマッチした行を表示します。

       さらに、兄弟プログラム egrep と fgrep は、それぞれ grep -E と grep -F と同じです。 これらの兄弟プログラムは非推奨ですが、後方互換性のために用意されています。

オプション

〜省略〜

aptも日本語表示します。

こんなファイルを作成して

/etc/apt/apt.conf.d/99translations

Acquire::Language "ja_JP";

apt update

$ sudo apt update

日本語化されました。

$ apt show grep
Package: grep
Version: 3.11-4build1
Priority: required
Essential: yes
Section: utils
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 352 kB
Provides: rgrep
Pre-Depends: libc6 (>= 2.38), libpcre2-8-0 (>= 10.32)
Conflicts: rgrep
Homepage: https://www.gnu.org/software/grep/
Task: minimal
Download-Size: 162 kB
APT-Manual-Installed: yes
APT-Sources: http://archive.ubuntu.com/ubuntu noble/main amd64 Packages
Description: GNU grep, egrep, fgrep
 'grep' はファイル内の文字列を検索するユーティリティです。コマンドラインか
 ら、またスクリプトから使用できます。あなたが使用しないとしても、おそらくあ なたのシステムにある他のパッケージが使用するでしょう。
 .
 grep ユーティリティの GNU ファミリは "西洋最速の grep" かもしれません。GNU grep は、高速な遅延状態決定性照合器 (元祖
 Unix の egrep より約 2 倍速い) を 元に固定長文字列に対して Boyer-Moore-Gosper 検索を併用し、一致するはずのな
 い文字列を完全正規表現照合器で除いており、不必要なすべての文字の探索はしな いようになっています。このため、一般には Unix の grep や
 egrep より数倍高速 です (しかし後方参照を含む正規表現では他より遅くなるでしょう)。

ちなみに、以下でも可です。

$ sudo LANG=ja_JP.UTF-8 apt update

apt updateでの日本語情報取得結果。

$  ll /var/lib/apt/lists/*-ja
-rw-r--r-- 1 root root 1838294  4月 26  2024 /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_noble_main_i18n_Translation-ja
-rw-r--r-- 1 root root   22549  4月 26  2024 /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_noble_multiverse_i18n_Translation-ja
-rw-r--r-- 1 root root 9876790  4月 26  2024 /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_noble_universe_i18n_Translation-ja

こんなところでしょうか。

おわりに

Ubuntu Linux 24.04 LTSを日本語化してみました。

概ねUbuntu Linux 22.04 LTSと同じ方法で日本語化できましたが、少し違いもあったのでこうやってバージョンアップの度に確認してみるのが
大事ですね。