add-apt- или apt-add-repository отсутствует в контейнере Docker ubuntu:precise (12.04.5)

Вопрос или проблема

Для совместимости мне нужно использовать этот старый образ, но даже после установки software-properties-common ни одна из команд не найдена: apt-add-repository или add-apt-repository. Все, что я смог найти, это установить software-properties-common, но это тоже не помогло.

FROM ubuntu:precise

# Установите переменные окружения, чтобы избежать интерактивных запросов во время установки пакетов
ENV DEBIAN_FRONTEND=noninteractive

RUN sed -i 's/archive.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list

# Обновите списки пакетов и установите основные пакеты
RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y \
    sudo \
    curl \
    vim \
    wget \
    git \
    nano \
    software-properties-common \
    build-essential && \
    rm -rf /var/lib/apt/lists/*


# По умолчанию запускайте оболочку, когда контейнер запускается
CMD ["/bin/bash"]

Случайно я увидел этот ответ через минуту после публикации моего вопроса: https://askubuntu.com/a/593437/909989 В основном для старых версий необходимо установить python-software-properties.

Ответ или решение

Как исправить отсутствие команд add-apt-repository и apt-add-repository в контейнере Docker на основе Ubuntu Precise

Введение

При работе с устаревшими версиями образов Docker, такими как ubuntu:precise (12.04.5), вы можете столкнуться с проблемами, связанными с установкой дополнительных репозиториев программного обеспечения. В данном случае команды add-apt-repository и apt-add-repository отсутствуют даже после установки software-properties-common. В этом материале мы рассмотрим, как правильно решить данную проблему.

Конкретная проблема

В вашем случае вы указали, что после установки пакета software-properties-common, команды для добавления репозиториев все еще недоступны. Вы правильно заметили, что для старых версий Ubuntu необходимо установить пакет python-software-properties. Этот пакет обеспечивает необходимую функциональность для работы с различными репозиториями.

Решение

Чтобы решить проблему с отсутствием команд управления репозиториями в контейнере, вам необходимо внести изменения в ваш Dockerfile. Вот подробный пример, как это сделать:

FROM ubuntu:precise

# Установить переменные окружения для избежания интерактивного запроса при установке пакетов
ENV DEBIAN_FRONTEND=noninteractive

# Изменить источники на старые репозитории Ubuntu
RUN sed -i 's/archive.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list

# Обновить список пакетов и установить основные пакеты
RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y \
    sudo \
    curl \
    vim \
    wget \
    git \
    nano \
    software-properties-common \
    python-software-properties \  # Добавлено для поддержки add-apt-repository
    build-essential && \
    rm -rf /var/lib/apt/lists/*

# Запустить ад shell по умолчанию при запуске контейнера
CMD ["/bin/bash"]

Пояснения к изменениям

  1. Установка python-software-properties: Этот пакет обеспечивает наличие команды add-apt-repository и необходим для работы, особенно в старых версиях Ubuntu, таких как Precise.

  2. Использование old-releases.ubuntu.com: Это необходимо для доступа к пакетам, поскольку основная поддержка старых версий Ubuntu была прекращена, и они были перемещены в архивы.

  3. Основные утилиты: При установке других utility (например, sudo, git, curl и т.д.) мы создаем более удобную среду для разработки и тестирования в контейнере.

Заключение

Использование устаревших версий Ubuntu в Docker может вызвать определённые трудности, особенно в вопросах установки пакетов и репозиториев. Однако, следуя предложенному решению и установив пакет python-software-properties, вы сможете исправить недоступность команд add-apt-repository и apt-add-repository. Это позволит вам успешно продолжить использование необходимых вам ресурсов в вашем контейнере.

Таким образом, с помощью обновленного Dockerfile вы сможете эффективно управлять репозиториями в устаревшем окружении, что является важным аспектом для приложений, зависящих от старого ПО.

Оцените материал
Добавить комментарий

Капча загружается...