Рейтинг:0

E: Не удалось найти пакет unixODBC-dev

флаг dk
E: Не удалось найти пакет unixODBC-dev

ОШИБКА: не удалось собрать службу «php»: команда «/bin/sh -c apt-get update && apt-get install -y unixODBC-dev && rm -rf /var/lib/apt/lists/*» вернула ненулевой код: 100

Я получаю это, хотя я сделал обновление apt-get. Это нормально?

Это мой Dockerfile:

ОТ Джорджа/php:7.4-fpm

ЗАПУСК apt-get --allow-releaseinfo-change update
RUN apt-get update && apt-get install -y \
        freetds-bin \
        freetds-dev \
        freetds-общий 


RUN apt-get update && apt-get install -y unixODBC-dev && rm -rf /var/lib/apt/lists/*
ВЫПОЛНИТЬ установить -x \
&& cd /usr/src/php/ext/odbc \
&& phpize\
&& sed -ri 's@^ *test +"\$PHP_.*" *= *"no" *&& *PHP_.*=yes *$@#&@g' configure \
&& ./configure --with-unixODBC=общий,/usr \
&& docker-php-ext-установить odbc
 
ЗАПУСК docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr
ЗАПУСК docker-php-ext-configure pdo_dblib --with-libdir=/lib/x86_64-linux-gnu

ЗАПУСК docker-php-ext-install pdo_odbc
ЗАПУСК docker-php-ext-install pdo_dblib
ЗАПУСК docker-php-ext-install pcntl
ЗАПУСК docker-php-ext-enable pdo_odbc
ЗАПУСК docker-php-ext-enable pdo_dblib
ЗАПУСК docker-php-ext-enable pcntl

Я использую коробку на основе Debian:

PRETTY_NAME="Debian GNU/Linux 10 (восстановление)"
ИМЯ="Debian GNU/Linux"
VERSION_ID="10"
ВЕРСИЯ="10 (бастер)"
VERSION_CODENAME=бастер
ID=дебиан
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Пытаюсь понять, почему так сложно установить ODBC.

флаг cn
Я извлек урок из недавнего отключения электроэнергии; Я устанавливал пакеты из репозитория alpine linux, и репозиторий вышел из строя, из-за чего мои контейнеры не перезапустились. Если вы устанавливаете столько всего в контейнер, вам действительно следует «докерить» ваши изменения из контейнера в новый образ, а затем «нажимать докер», чтобы отправить новый образ в ваше репо. То, как вы сейчас настроили, если репозиторий Debian или репозиторий docker-php-ext-install выйдет из строя, у вас возникнут проблемы с перезапуском.
флаг cn
я не уверен, почему в вашем репо нет необходимого пакета, но я нашел копию здесь: https://packages.debian.org/sid/amd64/unixodbc-dev/download
флаг dk
какую команду я должен запустить, и есть ли надежный способ установить все пакеты, которые я хочу?
флаг cn
Я не уверен, как заставить работать драйвер odbc, я погуглил и нашел несколько инструкций по установке драйвера MS odbc, но я никогда не использую SQL-сервер и не могу по опыту прокомментировать, как решить вашу проблему. Погуглите, похоже, у других была такая проблема. Что касается того, как все настроить, я бы взял файл docker, над которым вы работаете, запустил контейнер и вошёл в систему (docker exec -it containernumber bash). Затем настройте его внутри контейнера, при необходимости вы можете проверить пакеты wget/curl. Затем «docker commit имя_контейнера_имя_изображения». >>
флаг cn
Затем вы увидите имя образа при запуске «docker image ls». Оттуда у вас, вероятно, должно быть какое-то частное репо. Реестр Docker настроить несложно, но он, вероятно, уже есть в вашей компании. Затем вы отправляете docker в свое локальное репо, используя новый синтаксис, например «docker push imagename reposerver:8081/foobar-api/imagename:latest» или что-то в этом роде. Здесь есть документация: https://docs.docker.com/engine/reference/commandline/push/ Надеюсь, ты это имеешь в виду! Убедитесь, что вы протестировали образ, который вы создаете, чтобы убедиться, что основная программа для вашего контейнера по-прежнему запускается правильно.
флаг cn
После того, как ваши пакеты и установка php и все остальное будет встроено в образ, вы должны быть установлены навсегда. Основная проблема с этим (и почему вам может понадобиться установка в файле докеров) заключается в том, что это затрудняет автоматизацию создания контейнеров докеров. Вы всегда можете вернуться назад и превратить этапы установки, включая фиксацию контейнера в образ, в процедуру сборки/выпуска контейнера.
флаг cn
В любом случае, это просто случайный совет, не стесняйтесь игнорировать меня :)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.