প্যাকারের সাথে প্যাকেজিংয়ের সময় উবুন্টু 16.04-এ "অ্যাপ-গেট আপগ্রেড -y" চালানোর সময় ইন্টারেক্টিভ ডায়লগগুলি কীভাবে এড়ানো যায়?


27

আমি ব্যবহার করছি প্যাকার উবুন্টু 16,04 ইমেজ উপর ভিত্তি করে একটি ডেস্কটপ AWS AMI তৈরি করুন। শুরুতে, আমি একটি আপগ্রেড করছি:

sudo apt-get update
sudo apt-get upgrade -y

আমার বিধানকারী বিভাগের প্রাসঙ্গিক অংশটি এখানে:

"provisioners": [
  {
    "type": "shell",
    "inline": [
      "sudo apt-get update",
      "sudo apt-get upgrade -y"
    ]
  }
]

একটি ইন্টারেক্টিভ ডায়ালগ পপ আপ হিসাবে এটি স্বয়ংক্রিয়করণ বিরতি দেয়:

amazon-ebs: Found kernel: /boot/vmlinuz-4.4.0-72-generic
amazon-ebs: A new version of /boot/grub/menu.lst is available, but the version installed
amazon-ebs: currently has been locally modified.
amazon-ebs:
amazon-ebs: 1. install the package maintainer's version
amazon-ebs: 2. keep the local version currently installed
amazon-ebs: 3. show the differences between the versions
amazon-ebs: 4. show a side-by-side difference between the versions
amazon-ebs: 5. show a 3-way difference between available versions
amazon-ebs: 6. do a 3-way merge between available versions (experimental)
amazon-ebs: 7. start a new shell to examine the situation

আমি export DEBIAN_FRONTEND=noninteractiveআগেও সেট করার চেষ্টা করেছি ( এই উত্তরে প্রস্তাবিত হিসাবে ) দুর্ভাগ্যক্রমে, এটি কোনও পার্থক্য করে না।

প্রশ্নাবলী:

  • পুনরাবৃত্ত ডায়লগটি পেরিয়ে যাওয়ার কোনও উপায় আছে (বিকল্পটি 1 নির্বাচন করা ভাল হবে)?
  • এটিএমডিগুলি আপ টু ডেট এবং সমালোচনামূলক সুরক্ষা প্যাচগুলি অন্তর্ভুক্ত করে উন্নত করা এড়াতে এবং পরিবর্তে এটি বিশ্বাস করা ভাল?

পটভূমি: এটি আমার "বিল্ডার" বিভাগের প্রাসঙ্গিক অংশ, যেখানে আমি এটি সর্বশেষতম উপলব্ধ এএমআই ব্যবহার করতে কনফিগার করেছি:

"builders": [{
  "type": "amazon-ebs",
  "region": "eu-central-1",
    ...
    "source_ami_filter": {
        "filters": {
            "virtualization-type": "hvm",
            "name": "*ubuntu-xenial-16.04-amd64-server-*",
            "root-device-type": "ebs"
        },
        "owners": ["099720109477"],
        "most_recent": true
    },
  ...
}]

দ্রষ্টব্য : noniteractiveআপনি যদি উভয় -yএবং -qপতাকা উভয় দিয়েই অ্যাপটি-গেট আপডেট চালান তবে মোডটি কাজ করে তা সক্রিয় করে ।

উত্তর:


21

আদেশের এই ক্রমটি আমার পক্ষে কাজ করে:

apt-get update
DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq

সুতরাং, DEBIAN_FRONTEND=noninteractiveসঠিক তবে আপনার -qপতাকাও দরকার ।

সূত্র: https://github.com/moby/moby/issues/4032


2
আপনি (সম্ভবত?) এটি সহজ করতে পারেন apt-get update ; DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq। আমি কোনও কিছুর জন্য অনুরোধ করি না বলে মনেapt-get update হয় না, সুতরাং সম্ভবত এটির প্রয়োজন নেই DEBIAN_FRONTEND, এবং সুতরাং আপনার সত্যিকারের export DEBIAN_FRONTENDএটি দরকার নেই এবং এটি আপনার বাকী পরিবেশের মধ্যেও অব্যাহত থাকবে। আপনার জন্য গুরুত্বপূর্ণ যে ডিগ্রী।
মাইকেল মোল

@ মিশেলমল ভাল কাজ করে। আমি আমার উত্তর আপডেট করেছি।
ফিলিপ ক্লেন

এফডাব্লুআইডাব্লু, এটি কেবলমাত্র প্যাকেজটি এ্যাকটিভ করার জন্য নেতৃত্ব দিতে পারে যা ইন্টারঅ্যাকশন প্রয়োজন এবং এটি আপগ্রেড না করা ('প্যাকেজ এক্স সম্পর্কে ম্যানুয়াল আপগ্রেডের প্রয়োজন' লগের একটি শব্দ রেখে)। যদি ধারণাটি প্যাচযুক্ত প্যাকেজগুলি পেতে হয় তবে এটি যাওয়ার উপায় নয়।
তেনসিবাই

11

আপনার সমস্যাটি হ'ল গ্রাব ফাইল পরিবর্তনটি আপনি একা নন এমন অ্যাপটি তালিকারucf এই ঘটনা অনুসারে ডিবেকনফের সাথে মেনে চলে এবং না not

কাজের মতামত হিসাবে আমি এই উত্তরটি জিজ্ঞাসাবাদুতে পেয়েছি। menu.lstআপনার ক্ষেত্রে ইউসিএফ কনফিগারেশন সিস্টেম থেকে অপসারণ করা যথেষ্ট হবে:

"provisioners": [
  {
    "type": "shell",
    "inline": [
      "sudo ucf --purge /boot/grub/menu.lst"
      "sudo apt-get update",
      "sudo UCF_FORCE_CONFFNEW=YES apt-get upgrade -y"
    ]
  }
]

এটি গ্রাব প্রশ্ন এড়ানো উচিত। সতর্কতা অবলম্বন করুন যে ucf ব্যবহার করে অন্য যে কোনও প্যাকেজও রক্ষণাবেক্ষণকারী প্যাকেজ সংস্করণ ব্যবহার করবে, বেস অমি থেকে তৈরির জন্য এটি কোনও সমস্যা হওয়া উচিত নয়, তবে এটি লক্ষণীয়।


বর্তমানে, আমার কাজের স্থিতিশীল চলছে। তবুও, একটি বিকল্প সমাধান আছে তা জেনে রাখা ভাল।
ফিলিপ ক্লেন

আমি উবুন্টু ১৮.০৪-এ গ্রাব নিয়ে একই রকম সমস্যা পেয়েছি এবং আমি বিশ্বাস করি যে এই ucfফিক্সটি একটি উত্তর সমাধানের সাথে উত্তরের কমান্ডগুলি সহ ফিলিপকলেন
রিচভেল

2

ফিলিপের উত্তরে যুক্ত করতে, আপনি যদি ব্যবহার করছেন sudoতবে আপনার DEBIAN_FRONTENDপরে ভেরিয়েবলটি সেট করার বিষয়টি নিশ্চিত করতে হবে :

apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq

অথবা আপনার sudo -E দরকার, তবে এটি এখনও 'হ্যাং' অক্ষম করছে এবং কেবলমাত্র প্যাকেজটিতে এড়াতে পারে, প্রত্যাশার মতো আপগ্রেড অর্জন করে না।
তেনসিবাই

আপনি কীভাবে নিশ্চিত করতে পারেন যে আপনি প্যাকেজটি আপগ্রেড করেছেন?
ক্রিস্টোস দিমিত্রোলাাস

আমার উত্তর দেখুন, কিছু প্যাকেজগুলির স্বতঃ উত্তর কথোপকথনের জন্য আলাদাভাবে চিকিত্সা করা দরকার।
তেনসিবাই

1

-Y বা -q ব্যবহার করে আমি কোনও পার্থক্য লক্ষ্য করিনি। প্রশ্নটি কারণ "প্যাকার" ব্যবহার সম্পর্কে? (আমি খালি স্ক্রিপ্ট ব্যবহার করি)

যাইহোক, আমার ক্ষেত্রে, আমি এর apt upgradeআশেপাশের নীচের সেড কমান্ডগুলি ব্যবহার করার জন্য ডায়লগগুলি থেকে মুক্তি পেয়েছি :

sed -i "s/#\ conf_force_conffold=YES/conf_force_conffold=YES/g" /etc/ucf.conf
apt-get -y upgrade
sed -i "s/conf_force_conffold=YES/#conf_force_conffold=YES/g" /etc/ucf.conf

আমার পরিবর্তন আপগ্রেডের সময় সীমাবদ্ধ।
প্রযুক্তিগতভাবে, এটি গ্রাব আপগ্রেড করার সময় কোনও বিদ্যমান কনফিগারেশন রাখার বা না রাখার বিষয়ে প্রশ্নগুলি অক্ষম করে তবে পার্শ্ব প্রতিক্রিয়া এড়াতে কেবল আপগ্রেডের সময়কালে।

ওএস: উবুন্টু 16.04 এলটিএস

আশাকরি এটা সাহায্য করবে


আপনার দু'টি ফার্স্ট কমান্ডকে && এর সাথে লিঙ্ক করা উচিত, সুতরাং ইউসিএফ ফাইলটি অন্য কোনও প্রক্রিয়া দ্বারা লক করা থাকলে প্রথম দেখাতে ব্যর্থতা অ্যাপট-গেটটি চালাতে দেবে না
তেনসাইবাই

এবং গ্রাবের উপর কনফোল্ড প্রয়োগ করা আপনার সিস্টেমটিকে
অবিশ্বাস্যভাবে ছাড়তে

@ তেনসিবাই আমি আমার প্রাথমিক উত্তরটি ছাঁটাই করেছিলাম, তবে নতুন ভিএম মোতায়েনের কাজটি স্বয়ংক্রিয় করতে আমি এটি ব্যবহার করছিলাম। অবশ্যই, গ্রাবের সাথে জগাখিচুড়ি করা বেশ বিপজ্জনক, এবং গুরুত্বপূর্ণ সার্ভারগুলিতে হেরফের করার সময় আমি এটির সাথে কথা বলার পরামর্শ দেব না, তবে অন্যদিকে ... apt upgradeএই ক্ষেত্রে একা অত্যন্ত বিপজ্জনক নয় ? আমার কাছে যদি কিছুক্ষণের মধ্যে আমার পরিবেশ পুনর্নির্মাণের একটি স্ন্যাপশট বা অন্য কোনও কার্যকর উপায় না থাকে, আমি চেষ্টা করে দেখব না।
বাল্মীপুর

1
আপ্ট-গিগ আপগ্রেড প্রতি সেচটি বিপজ্জনক নয়। আপনি যখন পুরানো কনফিগারেশনগুলি রাখার বিষয়টি প্রয়োগ করেন এটি হতে পারে। তদুপরি, আপনি কাঙ্ক্ষিত রাজ্যটি ঠিক শেষে সেট করা যাচাই না করে (আপনার কোডে একটি ব্যর্থতা বলবৎকরণ ছেড়ে চলে যাবে) যা সমস্যা হয়ে যায় (এই তালিকাটি সম্ভবত ফলস্বরূপ ব্যর্থতায় থেমে যাবে, কখনও লাইনে ফিরে মন্তব্য করবে না ...)
টেনসইবাই

1
এটা তোলে হয় পরিষ্কারভাবে গঠনমূলক। এবং আপনি বিশেষত অনিয়ন্ত্রিত লাইন বামে থাকার ঝুঁকিটি নির্দেশ করার জন্য সঠিকভাবে রয়েছেন (আমি এটি ব্যবহার করতে দ্বিধায় পড়েছি এবং এটি প্রতিরোধের জন্য কিছু চেক যোগ করার বিষয়টি বিবেচনা করব)। জন্য আমার ব্যবহারের ক্ষেত্রে আমি নিশ্চিত ঝুঁকি তুচ্ছ হয়, কিন্তু কেউ অন্ধ পরিণতি জেনেই এই ব্যবহার করতে পারেন। (এমনকি যদি কেউ কখনই এলোমেলো কমান্ডগুলি না চালায় তবে তারা কী করে তা বোঝে না)।
বাল্মীপুর

0

আপনি -yআপনার apt-get updateআদেশ থেকে প্যারামিটার বাদ দিচ্ছেন । আপনি যদি এটি অন্তর্ভুক্ত করেন তবে প্রম্পটটি চলে যাওয়া উচিত।

আমি প্যাকারের সাথে একটি উবুন্টু চিত্রও তৈরি করেছি। আপডেটটি সম্পাদন করতে আমি ব্যবহৃত শেল স্ক্রিপ্টটি এখানে:

https://github.com/devopskatas/learningvm/blob/master/script/update.sh

এটি উবুন্টু প্যাকার বিল্ডগুলির একটি দুর্দান্ত, সু-রক্ষণাবেক্ষণ লাইব্রেরি থেকে প্রাপ্ত:

https://github.com/boxcutter/ubuntu


2
apt-get update দূরবর্তী সংগ্রহস্থল থেকে কেবল প্যাকেজগুলির তালিকা আপডেট করে, সেখানে -y সেট করার কোনও কারণ নেই ...
তেনসিবাই

@ তেনসিবাই হ্যাঁ, এটিরও কোনও তাত্পর্য নেই। একই ত্রুটি।
ফিলিপ ক্লেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.