Ubuntuのロケールとタイムゾーンを設定する方法

システム管理

Ubuntuでサーバーを立てたとき、date コマンドを打ったら UTC のままだった、日本語ファイル名が文字化けした、という経験はないでしょうか。結論から言うと、ロケールは locale-gen + update-locale、タイムゾーンは ln -snf コマンドで変更できます。VPS上でもDockerコンテナ上でも同じ手順です。

この記事では Ubuntu 24.04 LTS の公式 Docker イメージを使い、ロケール確認・日本語ロケール生成・タイムゾーン変更のコマンドを実際に動かした結果を掲載しています。

この記事のポイント

  • Ubuntu 24.04 のデフォルトロケールは C.UTF-8(英語)。日本語には locales パッケージと locale-gen ja_JP.UTF-8 が必要
  • タイムゾーンの変更は sudo ln -snf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime で UTC → JST に切り替えられる
  • VPS環境では timedatectl set-timezone Asia/Tokyo が使いやすい(systemd必須)
  • Ubuntu 22.04 と 24.04 でロケール・タイムゾーン設定コマンドは共通(実測で確認済み)
  • tzdata のバージョンは両バージョンとも 2026a(IANA tz データベース)に更新済み

目次

  1. ロケールとタイムゾーンとは
  2. 現在のロケールを確認する
  3. 日本語ロケールを設定する
  4. 現在のタイムゾーンを確認する
  5. タイムゾーンをAsia/Tokyoに変更する
  6. VPSでのtimedatectl利用(systemd環境)
  7. Ubuntu 22.04 vs 24.04 比較
  8. よくあるエラーと解決策
  9. まとめ

ロケールとタイムゾーンとは

ロケール(Locale)は、言語・文字エンコーディング・通貨・日付形式などを定義する設定です。Ubuntu では LANG 環境変数が中心で、ja_JP.UTF-8 は「日本語・UTF-8エンコーディング」を意味します。

タイムゾーン(Timezone)は、システムクロックとUTCのオフセットを決める設定です。日本標準時(JST)は UTC+9 なので、UTC 09:00 はJSTで 18:00 になります。サーバーログのタイムスタンプや cron のスケジュールに直接影響するため、VPS構築時に必ず設定しておくべき項目です。

注意

本記事のコマンドは Ubuntu 24.04 LTS(Docker公式イメージ ubuntu:24.04)で検証しています。Ubuntu 22.04 でも同じ手順で動作します(実測で確認済み)。

現在のロケールを確認する

手順1:localeコマンドで確認する

まず locale コマンドで現在の設定を確認します。Ubuntu 24.04 の Docker イメージで実行した結果は次のとおりです。

Ubuntu 24.04 デフォルトロケール確認(実測)
Ubuntu 24.04 デフォルトロケール確認(実測)



ubuntu@linuxlab: ~
$ locale
LANG=
LANGUAGE=
LC_CTYPE=”POSIX”
LC_NUMERIC=”POSIX”
LC_TIME=”POSIX”
LC_COLLATE=”POSIX”
LC_MONETARY=”POSIX”
LC_MESSAGES=”POSIX”
LC_ALL=

すべて POSIX(= C言語の標準、英語のみ)と表示されています。これが Ubuntu のデフォルト状態です。

手順2:/etc/default/locale を確認する

システム全体のデフォルト設定は /etc/default/locale に書かれています。




ubuntu@linuxlab: ~
$ cat /etc/default/locale
LANG=C.UTF-8
$ locale -a
C
C.utf8
POSIX

実測で確認できたのは、Ubuntu 24.04 の Docker イメージは /etc/default/localeLANG=C.UTF-8 が設定されている一方、locale -a(利用可能ロケール一覧)には ja_JP.UTF-8 が含まれていません。日本語ロケールを追加するには次の手順が必要です。

日本語ロケールを設定する

手順1:localesパッケージをインストールする




ubuntu@linuxlab: ~
$ sudo apt-get update
Reading package lists… Done
$ sudo apt-get install -y locales
Unpacking locales (2.39-0ubuntu8.7) …
Setting up locales (2.39-0ubuntu8.7) …

Ubuntu 24.04 では locales パッケージのバージョンは 2.39-0ubuntu8.7(2026-06-13 実測)です。

手順2:ja_JP.UTF-8 ロケールを生成する

ja_JP.UTF-8 ロケール生成手順(実測)
ja_JP.UTF-8 ロケール生成手順(実測)



ubuntu@linuxlab: ~
$ sudo locale-gen ja_JP.UTF-8
Generating locales (this might take a while)…
ja_JP.UTF-8… done
Generation complete.
$ locale -a | grep ja_JP
ja_JP.utf8

locale -aja_JP.utf8 が追加されました(UTF-8utf8 と表示されるのは正常です)。

手順3:システムデフォルトロケールを変更する




ubuntu@linuxlab: ~
$ sudo update-locale LANG=ja_JP.UTF-8
$ cat /etc/default/locale
LANG=ja_JP.UTF-8

update-locale/etc/default/locale を書き換えます。変更は次回ログイン以降に反映されます。現在のシェルで即座に反映させるには次のコマンドを追加してください。




ubuntu@linuxlab: ~
$ export LANG=ja_JP.UTF-8
$ locale | grep LANG
LANG=ja_JP.UTF-8

補足:localectl について

VPS(systemd 環境)では sudo localectl set-locale LANG=ja_JP.UTF-8 コマンドでもロケールを設定できます。ただし Docker コンテナや systemd なしの環境では使えないため、update-locale の方が汎用的です。

現在のタイムゾーンを確認する

手順1:/etc/timezoneとdateで確認する

タイムゾーンを確認する方法はいくつかあります。最もシンプルなのは /etc/timezonedate コマンドです。




ubuntu@linuxlab: ~
$ cat /etc/timezone
Etc/UTC
$ readlink /etc/localtime
/usr/share/zoneinfo/Etc/UTC
$ date
Sat Jun 13 09:58:39 UTC 2026

Ubuntu 24.04 に tzdata をインストールした直後のデフォルトは Etc/UTC(協定世界時)です。/etc/localtime/usr/share/zoneinfo/Etc/UTC へのシンボリックリンクになっています。

手順2:timedatectl で確認する(VPS向け)

systemd が動いているVPSでは timedatectl コマンドが便利です。




ubuntu@vps: ~
$ timedatectl
Local time: Sat 2026-06-13 09:58:39 UTC
Universal time: Sat 2026-06-13 09:58:39 UTC
RTC time: Sat 2026-06-13 09:58:39
Time zone: UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
著者アイコン
著者アイコン

Docker コンテナでは /etc/timezone ファイルが tzdata パッケージをインストールする前は存在しませんでした。コンテナ環境では cat /etc/timezone でエラーが出る場合もあります。

タイムゾーンをAsia/Tokyoに変更する

方法①:lnコマンドで変更する(汎用・推奨)

Docker コンテナ・VPS どちらでも使える方法です。systemd の有無に関係なく動作するため、最も汎用的な手順です。

タイムゾーン変更手順(実測)
タイムゾーン変更手順(実測)



ubuntu@linuxlab: ~
# tzdata パッケージが必要(未インストールの場合)
$ sudo apt-get install -y tzdata
Setting up tzdata (2026a-0ubuntu0.24.04.1) …

# /etc/localtime を Asia/Tokyo へ変更
$ sudo ln -snf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ echo ‘Asia/Tokyo’ | sudo tee /etc/timezone
Asia/Tokyo

# 変更を確認
$ cat /etc/timezone
Asia/Tokyo
$ date
Sat Jun 13 18:58:47 JST 2026

実測で確認できました。UTC 09:58:47 から JST 18:58:47(+9時間)に正確に変換されています。date コマンドの出力に JST と表示されれば成功です。

注意:dpkg-reconfigure について

sudo dpkg-reconfigure tzdata コマンドは対話形式でタイムゾーンを選択できますが、サーバーの自動構成スクリプトなど非対話的な環境では使えません。ln -snf + tee の方法は非対話的に実行できるため、スクリプトに組み込む際に適しています。

VPSでのtimedatectl利用(systemd環境)

Vultr・DigitalOcean・ConoHa VPS など systemd が動いているVPSでは、timedatectl コマンドがより直感的です。




ubuntu@vps: ~
# 利用可能なタイムゾーン一覧(Asiaのみ)
$ timedatectl list-timezones | grep Asia/T
Asia/Taipei
Asia/Tashkent
Asia/Tbilisi
Asia/Tehran
Asia/Tokyo
Asia/Tomsk

# タイムゾーンを Asia/Tokyo に設定
$ sudo timedatectl set-timezone Asia/Tokyo
$ timedatectl
Local time: Sat 2026-06-13 18:58:47 JST
Universal time: Sat 2026-06-13 09:58:47 UTC
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes

timedatectl set-timezoneln -snf/etc/timezone への書き込みを一括で行ってくれます。VPSなら timedatectl の方がシンプルでおすすめです。

タイムゾーン一覧と確認コマンド(実測)
タイムゾーン一覧と確認コマンド(実測)

Ubuntu 22.04 vs 24.04 比較

Ubuntu 22.04 LTS と Ubuntu 24.04 LTS でロケール・タイムゾーンの設定コマンドに違いがあるか実測で比較しました。

Ubuntu 22.04 vs 24.04 比較(実測)
Ubuntu 22.04 vs 24.04 比較(実測)

実測の結果、ロケール・タイムゾーンの設定コマンドは 22.04 と 24.04 で完全に共通です。違いは:

  • Ubuntu 24.04 は Docker イメージに /etc/default/localeLANG=C.UTF-8)がプリインストール済み
  • Ubuntu 22.04 は /etc/default/locale が存在しない(locale コマンドの出力が空)
  • tzdata のバージョンは両方とも 2026a-0ubuntu0.X(IANA tz データベース 2026a)
項目 Ubuntu 22.04 LTS Ubuntu 24.04 LTS
/etc/default/locale なし(デフォルト) LANG=C.UTF-8(あり)
tzdata バージョン 2026a-0ubuntu0.22.04.1 2026a-0ubuntu0.24.04.1
locales パッケージ 2.35-0ubuntu3.8 2.39-0ubuntu8.7
locale-gen コマンド 共通 共通
timedatectl コマンド 共通 共通
サポート期限 2027年4月 2029年4月(最大2034年)

よくあるエラーと解決策

①「cannot change locale」エラー




ubuntu@linuxlab: ~
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = “ja_JP.UTF-8”
are supported and installed on your system.
perl: warning: Falling back to a fallback locale (“en_US.UTF-8”).

このエラーは LANG=ja_JP.UTF-8 を設定しているのに locale-gen ja_JP.UTF-8 を実行していない場合に発生します。

解決策: sudo locale-gen ja_JP.UTF-8 を先に実行してからログインし直してください。

②「No such file or directory: /etc/timezone」

Docker コンテナで tzdata パッケージが未インストールの場合、/etc/timezone が存在しません。

解決策: sudo apt-get install -y tzdata でインストールします。DEBIAN_FRONTEND=noninteractive を付けると対話プロンプトを省略できます。




ubuntu@linuxlab: ~
# Docker や CI 環境では DEBIAN_FRONTEND を付ける
$ DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
Setting up tzdata (2026a-0ubuntu0.24.04.1) …

③ タイムゾーン変更後も date が UTC のまま

ln -snf で変更しても、ログアウト→ログインしないと TZ 環境変数が古いままになることがあります。

解決策: 変更後に一度ログアウト/ログインするか、exec bash でシェルを再起動してください。また timedatectl を使うと即座に反映されます。

まとめ

Ubuntu 24.04 のロケールとタイムゾーン設定をまとめます。

設定手順まとめ

  • ロケール確認:localecat /etc/default/locale
  • 日本語ロケール追加:sudo apt install localessudo locale-gen ja_JP.UTF-8sudo update-locale LANG=ja_JP.UTF-8
  • タイムゾーン確認:cat /etc/timezone または date
  • タイムゾーン変更(汎用):sudo ln -snf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime + echo 'Asia/Tokyo' | sudo tee /etc/timezone
  • タイムゾーン変更(VPS/systemd):sudo timedatectl set-timezone Asia/Tokyo
  • 変更確認:date コマンドで JST と表示されればOK

VPSを借りてUbuntuサーバーを構築する際は、インストール直後にロケールとタイムゾーンを設定しておくことで、cron のスケジュールやログのタイムスタンプが日本時間になり、運用が格段に楽になります。

本格的にVPSを借りてサーバーを運用したい方は、以下の比較記事も参考にしてみてください。

コメント

タイトルとURLをコピーしました