ウェブサイト検索

ntpdate コマンドが見つかりません:解決策


<code>ntpdate</code> コマンドは非推奨となり、最新の Linux 配布版から削除されました。Debian や Ubuntu Linux システムで「ntpdate コマンドが見つかりません」というエラーが発生した場合、このガイドでは、現代的な代替として<code>systemd-timesyncd</code> や <code>chrony</code> を使ってシステム時間を同期する方法を示します。

$ ntpdate
bash: ntpdate: command not found

NTP同期を有効にしようとしたときに、次のエラーが表示されることもあります:

$ timedatectl set-ntp true
Failed to set ntp: NTP not supported

このチュートリアルで学ぶこと:

  • なぜ ntpdate が非推奨となり、削除されたのか
  • systemd-timesyncd を使った自動時刻同期の方法
  • chrony を ntpdate の代替として使う方法
  • 一回限りの手動時間同期の実行方法

ソフトウェア要件

記事の要約: ntpdate コマンドは、Debian 13 以降および Ubuntu 24.04 以降では利用できません。代わりに systemd-timesyncd または chrony を使用してください。

ステップコマンド/アクション
1. timesyncd をインストールする(Debian 13)
sudo apt install systemd-timesyncd
2. NTP同期を有効にする
sudo timedatectl set-ntp true
3. 同期状況を確認する
systemctl status systemd-timesyncd

なぜ ntpdate は削除されたのですか?

知っていましたか?
ntpdate コマンドは、NTPプロジェクトによって何年も前に非推奨となり、現在ではDebian 13(Trixie)から完全に削除され、Ubuntu 24.04では移行用パッケージとしてのみ利用可能です。削除の主な理由には、以下が含まれます:一度きりの設計(ntpdateは時間を一度だけ設定して終了し、継続的に正確な時間を維持しない)、ドリフト補正がない(同期間のクロックドリフトを補正できない)、デーモンとの競合(ntpdateはntpdのような実行中のNTPデーモンと競合する)、より良い代替手段が存在する(systemd-timesyncdやchronyはより優れた機能を提供する)。

インストールされているNTPパッケージを確認する

先に進む前に、systemd-timesyncd または chrony がすでにシステムにインストールされているか確認してください。

$ dpkg -l | grep -E "systemd-timesyncd|chrony"

出力にどちらのパッケージも表示されない場合は、いずれかをインストールする必要があります。ほとんどのシステムに適した軽量の解決策として systemd-timesyncd を使用するか、より高度な機能や信頼性の低いネットワーク接続の取り扱いに優れた chrony を使用してください。

systemd-timesyncd の使用

systemd-timesyncd サービスは、自動的な時刻同期を提供します。これはほとんどのシステムに適した軽量の NTP クライアントです。

  1. systemd-timesyncdをインストールする:システムにまだ存在しない場合は、パッケージをインストールしてください。

    $ sudo apt install systemd-timesyncd
  2. NTP同期を有効にする: 自動時刻同期を有効にします。

    $ sudo timedatectl set-ntp true
  3. 同期状態を確認: 時刻同期サービスが稼働しており、NTPサーバーに接続されているか確認してください。

    $ systemctl status systemd-timesyncd

    「active (running)」および連絡したNTPサーバーを示す「Status」行を探します。

  4. 即時同期を強制する:時間をすぐに同期する必要がある場合は、timesyncd サービスを再起動してください。

    $ sudo systemctl restart systemd-timesyncd

DEBIAN ユーザー
sudo が設定されていない Debian システムでは、特権コマンドを実行する前に su - を使って root になるか、コマンドに su -c "command" を付けて実行してください。

Chronyの使用

より高度なNTP機能が必要な場合、chronyは優れた代替手段です。これは断続的なネットワーク接続をよりうまく処理でき、NTPサーバーとしても機能します。

  1. chronyをインストールする: パッケージマネージャを使用してchronyパッケージをインストールします。

    $ sudo apt install chrony
  2. サービスを開始して有効化する: chrony が起動時に自動的に開始されることを確認してください。

    $ sudo systemctl enable --now chrony
  3. 同期ソースを確認: chrony が NTP サーバーに接続されていることを確認してください。

    $ chronyc sources -v

  4. 追跡状況を確認:詳細な同期情報を表示します。

    $ chronyc tracking

インストールのヒント
chrony をインストールすると、2つの時刻同期サービス間の競合を防ぐために systemd-timesyncd が自動的に無効になります。

一度限りの手動同期

もし ntpdate が提供していたような一度きりの同期を行う必要がある場合、2つの選択肢があります:

chronydを-qフラグ付きで使用する

この方法はNTPサーバーに問い合わせを行い、一度だけ時刻を設定して終了します。ntpdateの動作と似ています。なお、chronyサービスが実行中の場合は、先に停止する必要があります:

$ sudo systemctl stop chrony
$ sudo chronyd -q 'server pool.ntp.org iburst'

systemd-timesyncd の使用

サービスを再起動して即座に同期を強制する:

$ sudo systemctl restart systemd-timesyncd
$ systemctl status systemd-timesyncd

トラブルシューティング

ユニット systemd-timesyncd.service が見つかりませんでした

サービスの状態を確認したときにこのエラーが表示される場合、systemd-timesyncd がインストールされていません:

$ systemctl status systemd-timesyncd
Unit systemd-timesyncd.service could not be found.

これを解決するにはパッケージをインストールしてください:

$ sudo apt install systemd-timesyncd

サーバーのクエリに失敗しました: 名前 org.freedesktop.timesync1 が提供されませんでした

systemd-timesyncd がインストールされていない状態で時刻同期のステータスを確認しようとしたときに、このエラーが表示されます:

$ timedatectl timesync-status
Failed to query server: The name org.freedesktop.timesync1 was not provided by any .service files

systemd-timesyncd をインストールして有効にする:

$ sudo apt install systemd-timesyncd
$ sudo systemctl enable --now systemd-timesyncd

NTPの設定に失敗しました: NTPはサポートされていません

このエラーは、NTPクライアントサービスがインストールされていないか、実行されていない場合に発生します:

$ sudo timedatectl set-ntp true
Failed to set ntp: NTP not supported

これを解決するには、systemd-timesyncd をインストールして有効にしてください:

$ sudo apt install systemd-timesyncd
$ sudo systemctl enable --now systemd-timesyncd

その後、NTP同期の有効化を再試行してください。

時間がまだ同期していません

NTPサーバーへのネットワーク接続を確認し、ファイアウォールの設定をチェックしてください。NTPはUDPポート123を使用します:

$ sudo ufw allow 123/udp

ユニットの有効化に失敗しました: リンクされたユニットファイル chronyd.service での操作を拒否します

このエラーは、chrony の代わりに chronyd を使用して chrony サービスを有効にしようとしたときに発生します:

$ sudo systemctl enable --now chronyd
Failed to enable unit: Refusing to operate on linked unit file chronyd.service

代わりにサービス名としてchronyを使用してください:

$ sudo systemctl enable --now chrony

別の chronyd がすでに実行されている可能性があります

このエラーは、chrony サービスがすでに実行されている状態で chronyd -q を使用して一度限りの同期を試みると発生します:

$ sudo chronyd -q 'server pool.ntp.org iburst'
Fatal error : Another chronyd may already be running (pid=3630), check /run/chrony/chronyd.pid

一時的な同期を実行する前に、まず chrony サービスを停止してください:

$ sudo systemctl stop chrony
$ sudo chronyd -q 'server pool.ntp.org iburst'

結論

「ntpdate コマンドが見つかりません」というエラーは、ntpdate が非推奨となり削除されたため、最新の Debian および Ubuntu システムで予想されるものです。推奨される代替手段は、デスクトップシステム向けには systemd-timesyncd、サーバーや断続的なネットワーク接続を持つシステム向けには chrony です。どちらの代替手段も、従来の ntpdate コマンドと比べて優れた時間同期機能を提供します。

NTPおよび時刻同期に関する詳細は、公式のChronyドキュメントを参照してください。

よくある質問

  1. Debian 13 または Ubuntu 24.04 にまだ ntpdate をインストールできますか? Debian 13(Trixie)では、ntpdate パッケージはリポジトリから完全に削除されており、インストールできません。Ubuntu 24.04 では移行用パッケージが存在しますが、それは単に ntpsec-ntpdate にリダイレクトされるだけです。その代わりに systemd-timesyncd または chrony を使用することが推奨されます。
  2. systemd-timesyncdとchronyの違いは何ですか? systemd-timesyncdは、ほとんどのデスクトップシステムに適した軽量のSNTPクライアントです。Chronyは、ネットワークの中断に強く、より正確な時刻同期を提供し、NTPサーバーとしても機能する完全なNTP実装です。高精度が必要なサーバーやシステムにはchronyを使用してください。
  3. システム時刻が同期されているかどうかを確認するには? systemctl status systemd-timesyncd を実行し、出力に「active (running)」が表示されているか確認します。「Status」行には接続されたNTPサーバーが表示されます。また、timedatectl status を実行して「System clock synchronized: yes」を確認することもできます。
  4. なぜ timedatectl set-ntp true を実行すると「NTP not supported」と表示されるのですか? このエラーは、NTPクライアントサービスがインストールされていないか、実行されていない場合に発生します。sudo apt install systemd-timesyncd で systemd-timesyncd をインストールし、その後 sudo systemctl enable --now systemd-timesyncd で有効にしてから、再度 timedatectl コマンドを実行してください。