apt-add-repository でCMake公式サーバーを登録する
結論から書きます。
以下を順番に実行して下さい。
cmakeが3.24に綺麗に更新されます。ROSの依存関係も壊しません。
$ cmake --version # まず今のバージョンを確認。恐らく3.10とか。
$ wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null
$ sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main"
$ sudo apt update
$ sudo apt install cmake
$ cmake --version # バージョンが上がっていれば成功!
とりあえずこれが一番安定して動きます。
(実はkeyfileを/etc/apt/trusted.gpg.d内に保存するのは非推奨らしいですが…)
もし途中で The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6AF7F09730B3F0A4
というエラーが発生した場合には、
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6AF7F09730B3F0A4
を打って、改めてapt update
すれば直ります。
Ubuntu18.04 (+ROS melodic)で動作確認済みです。
$(lsb_release -cs)を使っているので、16.04と20.04でも動くはずです。
ダメだったらコメント下さい。
解説
「apt install cmake」 でググると、例えば
https://qiita.com/hyasuda/items/16c21458f0ecd08db857
や
https://askubuntu.com/questions/829310/how-to-upgrade-cmake-in-ubuntu#comment1492832_829311
が最初にヒットしました。
しかし最初の記事はソースから手動ビルドしており、2番目の記事はバイナリファイルを直接ダウンロード+シンボリックリンク経由で呼び出しています。
これだとaptシステムを経由していないため、自動更新できない上に、ROSのcatkin_makeやcatkin buildのcmake依存を壊しかねない危険性があります。
ある程度UbuntuやROS、C++の経験がある人なら「できるだけaptに統一したい」という願望に至りますよね。
本記事が最初に記したコマンドなら、apt add repositoryでcmakeの公式PPA (Personal Package Archive,つまり配布サーバー) を登録している ので依存関係も安心です。
将来的にはsudo apt update & upgradeで自動更新もできちゃいます!
自分が(英語で)ググっても全然情報が出なかった + 日本語の記事が無かった + 研究室の後輩からも定期的に聞かれるので日本語で投稿しました。
ほぼ自分用メモですが、もしご参考になれば幸いです。
参考記事
kitware公式
askubuntu.com