環境

ROS Docker イメージで発生した GPG error の解消方法

この前 ROS の公式 Docker イメージをベースに独自の Docker イメージを作成していた際に、RUN apt-get update で以下の GPG エラーが発生しました。

W: GPG error: http://snapshots.ros.org/foxy/final/ubuntu focal InRelease: The following signatures were invalid: EXPKEYSIG AD19BAB3CBF125EA ROS Spanshot builder <rosbuild@ros.org>
E: The repository 'http://snapshots.ros.org/foxy/final/ubuntu focal InRelease' is not signed.

そのため解消方法を調べたところ、以下の方法で解消できたのでメモしておきます。 ROS 2 Foxy と ROS Melodic の両方で同様のエラーが発生して、両方解消方法が見つかったので、それぞれ記載します。

ROS 2 Foxy


FROM ros:foxy

ENV DEBIAN_FRONTEND noninteractive

# start
RUN rm /etc/apt/sources.list.d/ros2-snapshots.list
RUN apt-get update && apt-get install -y curl
RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# end

RUN apt-get clean && apt-get update && apt-get install -y wget

この方法は以下の ROS Discourse のスレッドで見つけました。

ROS Melodic


FROM ros:melodic

ENV DEBIAN_FRONTEND noninteractive

# start
RUN rm /etc/apt/sources.list.d/ros1-snapshots.list
RUN apt-get update && apt-get install -y curl
RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros1.list > /dev/null
# end

RUN apt-get clean && apt-get update && apt-get install -y wget

ROS 2 Foxy の解消方法を見つけてから ROS Melodic を試していて、少してこずったのですが、今 ROS 2 Foxy のと見比べるとほぼ同じでした。 こちらは ROS Melodic の場合の方法について言及している ROS Discourse 等は見つけられませんでした。EOL なので当然かもですが。
zuqqhi2

某Web系の会社でエンジニアをやっています。 学術的なことに非常に興味があります。 趣味は楽器演奏、ジョギング、読書、料理などなど手広くやっています。