Неопределенная ошибка (109) в docker apt-get для ros-pcl

#docker #ros

#docker #ros

Вопрос:

Я пытаюсь получить некоторые пакеты ros в docker. У меня есть такая команда, как:

 RUN apt-get update amp;amp; cat /srv/hm_ros.system | xargs apt-get install -y --no-install-recommends  amp;amp; 
rm -rf /var/lib/apt/lists/* amp;amp; apt-get clean
 

где hm_ros.system — это файл, содержащий:

 python3-rosinstall 
ros-noetic-fkie-multimaster 
ros-noetic-mavlink 
ros-noetic-pcl-ros 
ros-noetic-robot-state-publisher 
ros-noetic-ros-base
ros-noetic-rosbridge-suite 
ros-noetic-rosserial 
ros-noetic-tf 
ros-noetic-unique-id
ros-noetic-urdf 
ros-noetic-xacro
 

Но я всегда получаю ошибку:

E: Не удалось выполнить выборку http://packages.ros.org/ros/ubuntu/po … Неопределенная ошибка [IP: 64.50.236.52 80] E: не удается получить некоторые архивы, возможно, запустите apt-get update или попробуйте с —fix-missing?

Другие пакеты, похоже, были найдены успешно. Примечание, до этого у меня есть:

 RUN apt-get clean amp;amp; apt-get update amp;amp; apt-get install -y --no-install-recommends lsb-release gnupg2 amp;amp; 
DEBIAN_FRONTEND="noninteractive" apt-get -y --no-install-recommends install tzdata 
amp;amp; apt-get clean amp;amp; rm -rf /var/lib/apt/lists/* 

RUN add-apt-repository universe amp;amp; add-apt-repository multiverse
RUN echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" >> /etc/apt/sources.list.d/ros-latest.list amp;amp; 
apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
 

Еще один интерес, если я установлю его автономно, т.Е..:

 RUN apt-get update amp;amp; apt-get install -y --no-install-recommends ros-noetic-pcl-ros amp;amp; 
rm -rf /var/lib/apt/lists/* amp;amp; apt-get clean
 

Тогда эта проблема не возникает, и даже несмотря на то, что существует почти 1 ГБ зависимостей.
Есть какие-нибудь идеи, почему это может произойти?

Ответ №1:

Хотя я до сих пор не знаю причины этого, ее можно решить, используя следующую команду установки:

 sudo apt-get 
    -o Acquire::BrokenProxy="true" 
    -o Acquire::http::No-Cache="true"  
    -o Acquire::http::Pipeline-Depth="0"  
install -y 
    package ...