কমান্ড লাইন থেকে আমি কীভাবে সুরক্ষা আপডেট ইনস্টল করতে পারি?


333

sudo apt-get upgradeসুরক্ষা আপডেট নয়, সমস্ত আপডেট ইনস্টল করে আমি জানি যে আমি আপডেট ম্যানেজারটি কেবলমাত্র গুরুত্বপূর্ণ সুরক্ষা আপডেটগুলি বেছে নিতে ব্যবহার করতে পারি, তবে কমান্ড লাইন থেকে এটি করার কোনও উপায় আছে কি?


2
আমি তাই মনে করি না. ডিস্ট-আপগ্রেড পুরো সিস্টেমটিকে একটি নতুন রিলিজে নিয়ে যায়। আমি প্রতিদিনের আপডেটের কথা বলছি, যেমন আপডেট ম্যানেজারে আপনি দেখেন।
মাইকেল ক্রেনশা

1
ওহ, আপনি এখন যা বলছেন তা আমি দেখতে পাচ্ছি। হেই, আমি এ্যাপটি-আপডেট আপডেটটি প্রায়শই চালাই, আমি চিন্তা না করেই টাইপ করি। সতর্ক থাকুন জন্য ধন্যবাদ!
মাইকেল ক্রেনশো

7
আপনি "অ্যাপ-গেট ডিস-আপগ্রেড" চান, "অ্যাপ-গেট আপগ্রেড" নয়। "ডিস্ট-আপগ্রেড" নতুন প্রকাশের জন্য নয় (এটি "কর-রিলিজ-আপগ্রেড" একটি পৃথক কমান্ড)। "ডিস্ট-আপগ্রেড" ব্যবহার করার অর্থ এটি নতুন প্যাকেজগুলির পরিবর্তিত নির্ভরতা পরিচালনা করবে। এটি গুরুত্বপূর্ণ হতে পারে।
কিস কুক

3
ডিস্ট-আপগ্রেড হ'ল আপডেট ম্যানেজার জিইউআই দ্বারা সম্পাদিত স্বাভাবিক অপারেশন। কার্নেলের মতো প্যাকেজগুলির জন্য যেখানে linux-image-genericপ্যাকেজ রয়েছে বর্তমান চিত্রের উপর নির্ভর করে যেমন linux-image-3.x.y-zz-generic(প্রতিটি সংস্করণ পৃথক প্যাকেজের নাম), ডিস্ট-আপগ্রেড (যা নতুন প্যাকেজগুলি নির্ভরতা মেটাতে ইনস্টল করার অনুমতি দেয়) এই আপগ্রেডটি সম্পাদন করবে অন্যদিকে, আপগ্রেড কার্নেল প্যাকেজটিকে হোল্ডড-ব্যাক হিসাবে দেখায়।
ক্রোনাইটিস

3
আশ্চর্যের বিষয় যে apt-getএটির জন্য কোনও ভাল ভিত্তিক উত্তর নেই , প্রতিটি সার্ভারে এটি কতটা বিশিষ্টভাবে তালিকাভুক্ত রয়েছে তা বিবেচনা করে
কার্তিক টি

উত্তর:


308

প্যাকেজ অপরিবর্তিত -আপগ্রেডগুলি স্বয়ংক্রিয়ভাবে সুরক্ষা আপডেটগুলি ইনস্টল করতে কার্যকারিতা সরবরাহ করে।

আপনি এটি ব্যবহার করতে পারেন, তবে স্বয়ংক্রিয় অংশটি কনফিগার করার পরিবর্তে আপনি নিজেই এটি কল করতে পারেন:

sudo unattended-upgrade -d --dry-run
sudo unattended-upgrade -d

আপনি যদি এটিকে পরিবর্তে চুপচাপ চালাতে চান তবে:

sudo unattended-upgrade

দ্রষ্টব্য: আপনি যখন অপ্রয়োজনীয়-আপগ্রেড বলবেন তখন আপনি "গুলি" শেষের দিকে ছেড়ে যান।

এটি ধরে নিয়েছে যে প্যাকেজটি ডিফল্টরূপে ইনস্টল করা আছে, এটি সম্ভবত। যদি তা না হয় তবে কেবল করুন:

sudo apt-get install unattended-upgrades

এছাড়াও দেখুন /usr/share/doc/unattended-upgrades/README.md


আপনার স্বয়ংক্রিয় unattended-upgrade/etc/cron.daily/apt
সম্পাদনটি

পার্শ্ব নোট: উবুন্টু 12.04.5 এলটিএস সার্ভারের জন্য, unattended-upgradesডিফল্টরূপে ইনস্টল করা নেই।
র‌্যাপ্টর

13
যেহেতু আপনি কমান্ড লাইন থেকে এটি করছেন তাই -vতথ্য বার্তা বা -dডিবাগ বার্তাগুলির জন্য ব্যবহার করুন। অন্যথায় ইউটিলিটি খুব নিঃশব্দ হয়ে যাবে, এক্ষেত্রে আপনাকে লগ ইন চেক করতে হবে /var/log/unattended-upgrades। আপনি --dry-runসিমুলেট করতে ব্যবহার করতে পারেন তবে বাস্তবে কোনও কিছুই আপগ্রেড করতে পারেন না। আরও তথ্য এবং অন্যান্য বিকল্পগুলির জন্য, --helpসহায়তা বার্তাটি পেতে ব্যবহার করুন।
ADTC

আমি unattended-upgradesআজ সম্পর্কে কিছু জিনিস শিখেছি । ধন্যবাদ!
01

"এটি কীভাবে যায় তা পর্যবেক্ষণের জন্য", এটি কেবলমাত্র ইন্টার-ইন্টারেক্টিভ বার্তাগুলিকে ডিবাগ করা হবে?
অ্যাকোরিয়াস পাওয়ার

116

আপডেটগুলি পরিচালনা করার জন্য কয়েকটি টিপস

এটি ডেবিয়ান এবং উবুন্টু উভয়ের ক্ষেত্রেই প্রযোজ্য তবে উবুন্টু অনুসরণের জন্য আরও নির্দিষ্ট নির্দেশাবলী অনুসরণ করুন।

  • শুধুমাত্র সুরক্ষা আপডেটগুলি দেখান:

    apt-get -s dist-upgrade |grep "^Inst" |grep -i securi 
    

    অথবা

    sudo unattended-upgrade --dry-run -d
    

    অথবা

    /usr/lib/update-notifier/apt-check -p
    
  • সমস্ত আপগ্রেডযোগ্য প্যাকেজগুলি দেখান

    apt-get -s dist-upgrade | grep "^Inst"
    
  • শুধুমাত্র সুরক্ষা আপডেট ইনস্টল করুন

    apt-get -s dist-upgrade | grep "^Inst" | 
        grep -i securi | awk -F " " {'print $2'} | 
        xargs apt-get install
    

নোট:

  • কখনও কখনও উবুন্টু সুরক্ষা আপডেটগুলি এমনভাবে দেখায় যেন সেগুলি $ রিলিজ-আপডেটের সংগ্রহস্থল থেকে আসে। এটি তাই, আমাকে বলা হয়েছে, কারণ উবুন্টু বিকাশকারীরা তাদের সহজলভ্যতা ত্বরান্বিত করার জন্য সুরক্ষা আপডেটগুলিকে $ রিলিজ-আপডেট সংগ্রহস্থলগুলিতে চাপ দেয়।

    যদি এটি হয় তবে কেবলমাত্র সুরক্ষা আপডেটগুলি দেখানোর জন্য আপনি নিম্নলিখিতটি করতে পারেন:

    sudo sh -c 'grep ^deb /etc/apt/sources.list | 
        grep security > /etc/apt/sources.security.only.list'
    

    এবং

    apt-get -s dist-upgrade -o Dir::Etc::SourceList=/etc/apt/sources.security.only.list -o Dir::Etc::SourceParts=/dev/null  | 
        grep "^Inst" | awk -F " " {'print $2'}
    
  • প্যাকেজ আপগ্রেড করার পরে কোন পরিষেবাগুলি পুনরায় শুরু করতে হবে তা পরীক্ষা করুন। আপনি কী প্যাকেজগুলি আগেই আপগ্রেড করতে যাচ্ছেন এবং আপনার পুনরায় আর্টস / রিবুটগুলি শিডিয়ুল করুন। এখানে সমস্যাটি হ'ল আপনি যদি কোনও পরিষেবা পুনরায় চালু না করেন তবে এটি কোনও লাইব্রেরির পুরানো সংস্করণ ব্যবহার করতে পারে (সর্বাধিক সাধারণ কারণ) আপনি নতুন প্যাকেজ ইনস্টল করার আগে যা কোনও সুরক্ষার দুর্বলতা বা যেকোনো কিছুই স্থির করে দেয় memory

    checkrestart -v
    

    তবে, মনে রাখবেন যে checkrestartপ্রক্রিয়াগুলি পুনরায় আরম্ভ করা উচিত নয় তালিকায় থাকতে পারে। উদাহরণস্বরূপ, পোস্টগ্রাইএসকিউএল পরিষেবা ইতিমধ্যে মুছে ফেলা হওয়া এক্সলগ ফাইলটির স্মৃতি রেফারেন্স রাখছে, যা পরিষেবাটি পুনরায় চালু করার কোনও বৈধ কারণ নয়।

    অতএব, আরও একটি নির্ভরযোগ্য, মানক ব্যবহারগুলি ব্যবহার করে এটি পরীক্ষা করার উপায়টি হল নীচের ছোট্ট বাশ স্ক্রিপ্ট যা আমি নির্লজ্জভাবে https://locallost.net/?p=233 থেকে চুরি করেছি

    এটি কোনও সিস্টেমে চলমান প্রক্রিয়াগুলি সক্রিয় মেমরির অনুলিপি রাখার কারণে মুছে ফেলা লাইব্রেরিগুলি ব্যবহার করছে কিনা তা পরীক্ষা করে দেখুন।

    ps xh -o pid |
    while read PROCID; do
           grep 'so.* (deleted)$' /proc/$PROCID/maps 2> /dev/null
           if [ $? -eq 0 ]; then
                   CMDLINE=$(sed -e 's/\x00/ /g' < /proc/$PROCID/cmdline)
                   echo -e "\tPID $PROCID $CMDLINE\n"
           fi
    done
    

1
আমি এখন এই পোস্টে লক্ষ্য। এটি অত্যন্ত নির্ভুল। অনেক অনেক ধন্যবাদ (+1)
ডান্ডুক 82

'চেকস্টার্ট' কোথা থেকে আসে? আমি এটি উবুন্টু ট্রাস্টিতে পাই না। আমি "নিডেস্টার্ট" পেয়েছি যা দেখে মনে হচ্ছে এটি আপনার নির্দেশাবলীর সাথে খাপ খায়?
বেন এক্সও

এটা তোলে ডেবিয়ান-গুডিজ প্যাকেজের মধ্যে পাওয়া যাবে: packages.debian.org/wheezy/debian-goodies । নিডেস্টার্টও আছে। আপনি উভয়ই জেনিয়ালে চালিয়ে খুঁজে পেতে পারেন: pt অ্যাপ্লিকেশন-ক্যাশে অনুসন্ধান চেকেরস্টার্ট
ILIV

আমি "ই: লক ফাইল / var / lib / dpkg / লক খুলতে পারিনি - খোলা (13: অনুমতি অস্বীকার)" এমনকি sudo সহ পেয়েছি। এটি আপডেট বা আপনার প্রদত্ত আদেশগুলির মধ্যে একটির সাথে নির্দিষ্ট কিছু?
নাথান হর্নবি

সম্ভবত এটি ডিপি কেজি-র একটি ভুল / অস্বাভাবিক সমাপ্তির বিষয়ে যা কোনও লক ফাইল অপরিবর্তিত রেখে দিয়েছে। সাধারণত কি ঘটবে না, যেমন প্যাকেজ ইনস্টলেশন সফলভাবে শেষ হয় না (পূর্ণ ডিস্ক ইত্যাদি) আপনি সম্ভবত অন্যান্য এপট-গেট এবং ডিপি কেজি কমান্ড চালাতে পারবেন না, আপনি কি পারবেন?
ILIV

46

/etc/apt/preferencesনিম্নলিখিত সঙ্গে প্রতিস্থাপন :

Package: *
Pin: release a=lucid-security
Pin-Priority: 500

Package: *
Pin: release o=Ubuntu
Pin-Priority: 50

এখন একটি সরল apt-get upgradeসমস্ত সুরক্ষা আপডেট কেবলমাত্র আপগ্রেড করবে।

কেন (এবং কীভাবে) এটি কাজ করে: পছন্দসই ফাইল উবুন্টু বিতরণ থেকে সমস্ত প্যাকেজটিকে অগ্রাধিকার 50 এ পিন করবে, যা তাদের ইতিমধ্যে ইনস্টল করা প্যাকেজগুলির চেয়ে কম কাঙ্ক্ষিত করে তুলবে। সুরক্ষা সংগ্রহস্থল থেকে উত্পন্ন ফাইলগুলিকে ডিফল্ট (500) অগ্রাধিকার দেওয়া হয় যাতে তারা ইনস্টলেশনের জন্য বিবেচিত হয়। এর অর্থ হ'ল বর্তমানে ইনস্টল হওয়া প্যাকেজগুলির চেয়ে কেবলমাত্র প্যাকেজগুলিই পছন্দসই আপডেট। Apt_preferences ম্যানপেজে পিনিং সম্পর্কে আরও তথ্য ।

আপনি অস্থায়ীভাবে --target-releaseবিকল্পের সাথে আপডেটের জন্য নির্দিষ্ট বিতরণকে প্রচার করতে পারেন যা কাজ করে apt-getএবং aptitude(কমপক্ষে) যা আপনাকে নির্দিষ্ট রিলিজ পিন করতে দেয় যাতে তারা আপগ্রেডের জন্য যোগ্য।

আপনি যদি এটি কেবল স্ক্রিপ্টগুলির জন্য ব্যবহার করতে এবং এটি সিস্টেমের জন্য ডিফল্ট না করে রাখতে চান তবে আপনি নিয়মগুলি অন্য কোনও স্থানে রাখতে পারেন এবং পরিবর্তে এটি ব্যবহার করতে পারেন:

apt-get -o Dir::Etc::Preferences=/path/to/preferences_file upgrade

এটি একটি অ-ডিফল্ট অবস্থান থেকে পছন্দসই ফাইলটি সন্ধান করবে।

উদাহরণ হিসাবে প্রদত্ত পছন্দসই ফাইলটি তৃতীয় পক্ষের সংগ্রহস্থলের ক্ষেত্রে প্রযোজ্য না, যদি আপনি সেগুলিও পিন করতে চান তবে apt-cache policyসহজেই পিনিংয়ের জন্য প্রয়োজনীয় কীগুলি নির্ধারণ করতে ব্যবহার করতে পারেন।


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

1
অ্যাপটি-ক্যাশে নীতি কমান্ড দিয়ে কী চলছে তা আপনি দেখতে পারেন। সুরক্ষা ফিক্স না পেয়ে প্যাকেজগুলির মধ্যে একটি চয়ন করুন apt-cache policy packagename। এটি বিভিন্ন সংস্করণের জন্য অগ্রাধিকারগুলি তালিকাভুক্ত করবে। আপনার বিভিন্ন লাইন এবং বিভিন্ন অগ্রাধিকার দেখতে হবে। অগ্রাধিকার 50 সহ কোনও লাইন না থাকলে, পিনিং কোনও কারণে প্রশ্নে থাকা প্যাকেজগুলিকে প্রভাবিত করছে না।
Ressu

1
অতীতে আমি এই উত্তরটি অনুসরণ করেছিলাম। আজ আমি জানতে পেরেছি যে এই উত্তরের কারণে, 68 টি সুরক্ষা আপডেট প্যাকেজগুলি আমার সার্ভারে ইনস্টল করা হয়নি এবং সম্ভাব্য ইনস্টল প্রার্থী হিসাবে প্রদর্শিত হয়নি। এটি একটি উত্তম উত্তর নয়!
শেড

12

নিম্নলিখিত উবুন্টু 14.04 এলটিএসে নিশ্চিত করা হয়েছে।

unattended-upgradeপ্যাকেজটি ব্যবহার করুন ।

ফাইলটি দেখুন /etc/apt/apt.conf.d/50unattended-upgrades। শীর্ষে একটি বিভাগ থাকা উচিত:

// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
//  "${distro_id}:${distro_codename}-updates";
//  "${distro_id}:${distro_codename}-proposed";
//  "${distro_id}:${distro_codename}-backports";
};

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

এর /etc/apt/apt.conf.d/10periodicমতো ফাইলটি সংশোধন করুন :

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

এটি প্রতিদিন একবারে স্বয়ংক্রিয় অনাবৃত নিরাপত্তা আপগ্রেড চালাবে।

এখন, নিজে চালানোর জন্য: sudo unattended-upgrade

কিছু কাজ ছাড়া একটি শুষ্ক রানের তা পরীক্ষা করা হবে: sudo unattended-upgrade --dry-run

সূত্র: https://help.ubuntu.com/14.04/serverguide/automatic-updates.html


এটি একটি মাসিক সময়সূচী করার উপায় আছে?
mike.b93

1
@ মাইকে.বি ৯৩, আমি বিশ্বাস করি যে APT::Periodic::Unattended-Upgrade "30";প্রতি 30 দিন পরে সেটিংটি এটি করবে।
ভিকার্ডিলো

5

যদিও এটি বেশ কুৎসিত, আপনি সুরক্ষা সংগ্রহস্থল বাদে সমস্ত সংগ্রহস্থলগুলি অক্ষম করতে পারেন এবং তারপরে:

sudo apt-get update && sudo apt-get upgrade

আমি এটি পরীক্ষা করে দেখিনি, তবে তাত্ত্বিকভাবে এটি কেবল সুরক্ষা রেপোতে আপডেটগুলি আবিষ্কার করবে এবং সেগুলি প্রয়োগ করবে ...


হ্যাঁ, এটি একটি সম্ভাবনা। আমি এটার দিকে নজর রাখব. আমি বেসে ভাল নই, তবে এটি করার জন্য আমি কোনও স্ক্রিপ্ট তৈরি করার চেষ্টা করতে পারি।
মাইকেল ক্রেনশো

ঠিক আছে, আমি উবুন্টু সুরক্ষা রেপো ব্যতীত সমস্ত অক্ষম করেছিলাম এবং একটি চালিয়েছি sudo apt-get update && sudo apt-get upgrade(কোনও আপগ্রেড হওয়ার আগে বাতিল করা হচ্ছে)। তারপরে আমি আমার সমস্ত রেপো সক্ষম করেছিলাম, দৌড়ে এসে sudo apt-get updateeআপডেট ম্যানেজারটি খুললাম। সুরক্ষা আপডেট হিসাবে চিহ্নিত প্যাকেজগুলি ঠিক যা apt-get upgradeখুঁজে পেয়েছিল তা নয় , তবে সেগুলি খুব ঘনিষ্ঠ ছিল - আমার কাছে যথেষ্ট কাছে। আমি এখনও চাইছি আপডেট ম্যানেজার কীভাবে এটি করে এবং কমান্ড-লাইন থেকে কীভাবে এটি করা যায় আমি ঠিক জানতাম তবে এটি করবে। ধন্যবাদ!
মাইকেল ক্রেনশো

3
  • apt-get update: কেবলমাত্র সংগ্রহস্থলের এন্ট্রিগুলি পড়ুন - বিদ্যমান তালিকার সাথে মিল রেখে। নতুন কি তা যাচাই করা দরকার।
  • apt-get upgrade: কার্নেল মডিউল ব্যতীত ইনস্টল করা প্যাকেজগুলির জন্য সমস্ত আপডেট। প্রকাশের আপডেট নেই।
  • apt-get dist-upgrade: কার্নেল মডিউল সহ ইনস্টল করা প্যাকেজগুলির জন্য সমস্ত আপডেট। প্রকাশের আপডেট নেই।
  • apt-getপ্যারামিটার সহ -s: কেবল পরীক্ষা, কোনও পরিবর্তন সম্পাদিত হয়নি।

0

ডেবিয়ানদের উপর আমি এই কমান্ডটি কেবলমাত্র সুরক্ষা আপডেট করতে ব্যবহার করি:

apt-get install -y --only-upgrade $( apt-get --just-print upgrade | awk 'tolower($4) ~ /.*security.*/ || tolower($5) ~ /.*security.*/ {print $2}' | sort | uniq )

0

অ্যাপটি-গেট বা অ্যাপটিটিউডের মধ্যে আমি কোনও বিকল্প খুঁজে পাচ্ছি না, তবে সুপারউসারে কারও একই প্রশ্ন ছিল । একমাত্র প্রতিক্রিয়া হ'ল:

Check and adjust /etc/apt/apt.conf.d/50unattended-upgrade. 
Did you replace 'karmic' with the code name of your Ubuntu?

এটি কাজ করেছে কিনা সে সম্পর্কে কোনও উত্তর নেই।


2
এটি প্রদর্শিত হয় যে উইকি পৃষ্ঠায় বর্ণিত পদ্ধতিটি <রিলিজ>-সুরক্ষার জন্য প্রবণতার --target- রিলিজ যুক্তি নির্ধারণের উপর নির্ভর করে। এই প্রশ্নের ওপির মতো, এই পদ্ধতিটি কেবল সুরক্ষা আপগ্রেডই নয়, সমস্ত আপগ্রেড ইনস্টল করে। Apt-get এবং প্রবণতা man পৃষ্ঠা পড়া, আমি মনে করি না --target রিলিজ যুক্তি এমনকি শুধু নিরাপত্তা আপগ্রেড করার সীমিত করতে, যদিও আমি নিশ্চিত ঠিক কি এটা নই দেয়ার উদ্দেশ্যে করা হচ্ছে না হয় জন্য।
মাইকেল ক্রেনশো

0

এখানে একটি স্ক্রিপ্ট যা কয়েকটি ভিন্ন উপায়ে এটি অর্জন করে:

#!/usr/bin/env bash
set -e

# List upgradable packages
apt-get update
apt list --upgradable 2>/dev/null
# List security upgrades
test "$(apt-get upgrade -s -y)" && (apt-get upgrade -s -y)
# List upgradable apt packages then upgrade
apt-get update && apt-get upgrade -y  -V | grep '=>' | awk '{print$1}' && test "$(apt-get upgrade -y)"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.