Điểm:0

E: Không thể định vị gói unixODBC-dev

lá cờ dk
E: Không thể định vị gói unixODBC-dev

LỖI: Dịch vụ 'php' không thể xây dựng: Lệnh '/bin/sh -c apt-get update && apt-get install -y unixODBC-dev && rm -rf /var/lib/apt/lists/*' đã trả về một mã khác không: 100

Tôi nhận được điều này mặc dù tôi đã cập nhật apt-get. Điều này có bình thường không?

Đây là Dockerfile của tôi:

TỪ george/php:7.4-fpm

CHẠY cập nhật apt-get --allow-releaseinfo-change
CHẠY apt-get update && apt-get install -y \
        freetds-bin \
        freetds-dev \
        freetds-chung 


CHẠY apt-get update && apt-get install -y unixODBC-dev && rm -rf /var/lib/apt/lists/*
CHẠY bộ -x \
&& cd /usr/src/php/ext/odbc \
&& phpize \
&& sed -ri 's@^ *test +"\$PHP_.*" *= *"no" *&& *PHP_.*=yes *$@#&@g' configure \
&& ./configure --with-unixODBC=shared,/usr \
&& docker-php-ext-cài đặt odbc
 
CHẠY docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr
CHẠY docker-php-ext-configure pdo_dblib --with-libdir=/lib/x86_64-linux-gnu

CHẠY docker-php-ext-install pdo_odbc
CHẠY docker-php-ext-install pdo_dblib
CHẠY docker-php-ext-install pcntl
CHẠY docker-php-ext-enable pdo_odbc
CHẠY docker-php-ext-enable pdo_dblib
CHẠY docker-php-ext-enable pcntl

Tôi đang sử dụng một hộp dựa trên Debian:

PRETTY_NAME="Debian GNU/Linux 10 (bùng nổ)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
PHIÊN BẢN = "10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Cố gắng hiểu tại sao việc cài đặt ODBC lại khó đến vậy.

lá cờ cn
Tôi đã học được một bài học trong lần mất điện gần đây; Tôi đang cài đặt các gói từ repo alpine linux và repo bị hỏng khiến các vùng chứa của tôi không thể khởi động lại. Nếu bạn cài đặt nhiều thứ như vậy vào một vùng chứa, bạn thực sự nên "docker commit" các thay đổi của mình từ vùng chứa sang một hình ảnh mới, sau đó "docker Push" để đẩy hình ảnh mới vào kho lưu trữ của bạn. Cách bạn đang thiết lập ngay bây giờ nếu repo debian hoặc repo docker-php-ext-install gặp sự cố, bạn sẽ gặp sự cố khi khởi động lại.
lá cờ cn
tôi không chắc tại sao repo của bạn không có gói được yêu cầu, nhưng tôi đã tìm thấy một bản sao ở đây: https://packages.debian.org/sid/amd64/unixodbc-dev/download
lá cờ dk
tôi nên chạy lệnh nào và có cách nào chứng minh được việc cài đặt tất cả các gói tôi muốn không?
lá cờ cn
Tôi không chắc làm cách nào để trình điều khiển odbc hoạt động, tôi đã tìm kiếm trên Google và tìm thấy một số hướng dẫn về cách cài đặt trình điều khiển odbc của MS, nhưng tôi chưa bao giờ sử dụng máy chủ SQL và không thể nhận xét kinh nghiệm về cách khắc phục sự cố của bạn. Google nó, những người khác dường như đã có vấn đề đó. Về cách thiết lập mọi thứ, tôi sẽ lấy dockerfile bạn đang làm việc, chạy vùng chứa và đăng nhập (docker exec -it containernumber bash). Sau đó, thiết lập nó từ bên trong vùng chứa, bạn có thể thăm dò các gói wget/curl nếu cần. Sau đó, "docker cam kết containername imagename". >>
lá cờ cn
Sau đó, bạn sẽ thấy tên hình ảnh khi bạn chạy "docker image ls". Từ đó, có lẽ bạn nên có một loại repo riêng tư nào đó. Đăng ký Docker có vẻ không khó thiết lập, nhưng công ty của bạn có thể đã có. Sau đó, bạn đẩy docker tới kho lưu trữ cục bộ của mình bằng cú pháp mới, chẳng hạn như "docker Push imagename reposerver:8081/foobar-api/imagename:latest" hoặc đại loại như thế. Có tài liệu ở đây: https://docs.docker.com/engine/reference/commandline/push/ Hy vọng đó là những gì bạn có ý nghĩa! Đảm bảo rằng bạn đã kiểm tra hình ảnh mình tạo để đảm bảo rằng chương trình chính cho vùng chứa của bạn vẫn khởi động bình thường
lá cờ cn
Sau khi các gói và thiết lập php của bạn và mọi thứ được đưa vào hình ảnh, bạn nên đặt vĩnh viễn. Vấn đề chính khi làm điều đó (và tại sao bạn có thể muốn cài đặt trong dockerfile) là nó gây khó khăn cho việc tự động hóa việc tạo vùng chứa docker. Bạn luôn có thể quay lại và biến các bước cài đặt của mình, bao gồm cả việc chuyển vùng chứa thành một hình ảnh, vào quy trình xây dựng/phát hành vùng chứa của bạn.
lá cờ cn
Dù sao đây chỉ là lời khuyên ngẫu nhiên, hãy bỏ qua cho tôi :)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.