ডকফাইফাইল থেকে বিল্ডিং করার সময়, ডেবিয়ান / উবুন্টু প্যাকেজ ইনস্টল ডেবকনফ নন-ইন্টারেক্টিভ ইনস্টল অনুমোদিত নয়


29

আমি নীচের পরিবেশটি সেট করেছি যাতে অ্যাপটি-ইনস্টল করার সময় কোনও প্রশ্ন / কথোপকথন জিজ্ঞাসা করা হয়নি:

ENV DEBIAN_FRONTEND noninteractive    # export DEBIAN_FRONTEND="noninteractive"

যা সমান:

export DEBIAN_FRONTEND="noninteractive"

তবুও, একটি নির্দিষ্ট ডিবিয়ান / উবুন্টু প্যাকেজ ইনস্টল (apt-get ইনস্টল ব্যবহার করে) এর শেষে ডকফায়াইল থেকে একটি চিত্র তৈরি করার সময়, প্যাকেজ কনফিগারেশন ডাবকনফ বলেছেন:

debconf: unable to initialize frontend: Noninteractive    # export DEBIAN_FRONTEND="noninteractive"
debconf: (Bareword "Debconf::FrontEnd::Noninteractive" not allowed while "strict subs" in use at (eval 35) line 3, <> line 1.)
debconf: falling back to frontend: Noninteractive
Subroutine BEGIN redefined at (eval 36) line 2, <> line 1.

বাহ ... আমি আমার ত্রুটি পেয়েছি। ডকফাইফিলের ENV লাইনে মন্তব্য দেওয়ার কোনও উপায় নেই। আমি নিজের উত্তর দিতে যাচ্ছি কারণ আমি নিশ্চিত যে এটি অন্য কিছু লোককে কামড় দেবে ...

উত্তর:


57

এটা করা উচিত সক্রিয়ভাবে নিরুৎসাহিত সেট করতে DEBIAN_FRONTENDকরতে noninteractiveমাধ্যমে ENV। কারণ বিল্ড, যেমন পর এনভায়রনমেন্ট ভেরিয়েবল চলতেই যখন আপনি চালাতে হয় docker exec -it ... bash। সেটিংটি এখানে অর্থবোধ করে না।

আরও দুটি সম্ভাব্য উপায় রয়েছে:

  1. এটি ARGকেবল নির্মাণের সময় উপলব্ধ হিসাবে এটি সেট করুন :

    ARG DEBIAN_FRONTEND=noninteractive
    RUN apt-get -qq install {your-package}
    
  2. যখন প্রয়োজন হবে তখন এটিকে দ্য ফ্লাইটে সেট করুন।

    RUN apt-get update && \
        DEBIAN_FRONTEND=noninteractive apt-get -qq install {your-package}
    

8
কেবল ভোট দেওয়ার জন্য সাইন আপ করেছেন
অ্যান্ড্রে ওয়ার্ল্যাং

@ অ্যান্ড্রু ওয়ার্ল্যাং: আমিও!
gvgramazio

27

ঠিক আছে, সমস্যার উত্স হ'ল: আপনি ডকফাইলগুলিতে ENV লাইনগুলিতে মন্তব্য করতে # ব্যবহার করতে পারবেন না কারণ "env ভেরিয়েবলের সমাপ্তি" বলার জন্য কোন বিমানীকরণকারী নেই, ভেরিয়েবলের নামের পরে এবং স্পেসের পরের স্থানটি যা কিছু হবে তার পরে পরিবর্তনশীল।

যেমন ডকফাইফাইল লাইনের সাথে:

ENV DEBIAN_FRONTEND noninteractive    # export DEBIAN_FRONTEND="noninteractive"

পরিবর্তনশীল:

DEBIAN_FRONTEND

এই পুরো লাইনটি ঠিক থাকবে:

noninteractive    # export DEBIAN_FRONTEND="noninteractive"

এবং করা সমান:

export DEBIAN_FRONTEND='noninteractive    # export DEBIAN_FRONTEND="noninteractive"'

আমি প্রায় আমার প্রশ্নটি বাতিল করে দিচ্ছিলাম, তবে অনুসন্ধান ইঞ্জিন এবং স্ট্যাক এক্সচেঞ্জের সাহায্যে কিছু লোক সম্ভবত এখানে কোনও দিন তাদের ভুল খুঁজে পাবেন ;-)


5
যদি এটি প্রকৃত উত্তর হয় তবে আপনার এটি গ্রহণ করা উচিত তাই প্রশ্নটি আর উত্তর না করে তালিকাভুক্ত করা হয় না।
অ্যান্ডি শিন

4
এটি ব্যবহারের ENVজন্য নিরুৎসাহিত করা হয়েছে DEBIAN_FRONTEND, দেখুন: github.com/docker/docker/issues/4032
k0pernikus
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.