কীভাবে একটি নির্দিষ্ট প্যাকেজ আপডেট করা রোধ করবেন?


374

বাগ # 693758 এর কারণে আমি apt-get upgrade"libgtk2.0-0" প্যাকেজটি আপডেট করা থেকে ম্যানেজারকে প্রতিরোধ করতে এবং আপডেট করতে চাই ।

কিভাবে এটা অর্জন করা যেতে পারে?


@ এইচএলপি: তবে এই প্রশ্নটি এমন একটি প্যাকেজ সম্পর্কে জিজ্ঞাসা করছে যা কখনও ইনস্টল করা হয়নি।
নাথান ওসমান

1
@ জর্জি এডিসন - প্যাকেজ হোল্ডিং রয়েছে, যা আপনাকে প্যাকেজ আপডেট করার অনুমতি দেয় না। সুতরাং প্যাকেজটি ধরে রাখার অর্থ হ'ল আপনি প্যাকেজ ম্যানেজারকে বর্তমান ভার্সনটি যাই হোক না কেন রাখতে বলছেন। যদি কোনও বর্তমানে কর্মরত প্রোগ্রামের আরও সাম্প্রতিক সংস্করণ কোনও আপডেটের পরে ব্রেক হয় তবে এটি কার্যকর। (আপনি এমন প্যাকেজটি ধরে রাখতে পারবেন না যা কখনও ইনস্টল করা হয়নি আমার প্রশ্নটিও একই রকম দেখুন) .... আমি এখনই এটি পরীক্ষা করেছি - দেখুন তিনি বলেছেনdisable packages from the auto-update
এইচএইচএলপি

উত্তর:


553

ধারণ

প্যাকেজগুলি পিছনে রাখার চারটি উপায় রয়েছে: সাথে dpkg, অ্যাপ্ট, প্রবণতা বা অপসারণ।

dpkg

একটি প্যাকেজ ধরে রাখুন:

echo "<package-name> hold" | sudo dpkg --set-selections

হোল্ডটি সরান:

echo "<package-name> install" | sudo dpkg --set-selections

আপনার প্যাকেজগুলির স্থিতি প্রদর্শন করুন:

dpkg --get-selections

একটি একক প্যাকেজের স্থিতি প্রদর্শন করুন:

dpkg --get-selections | grep "<package-name>"

কার্যক্ষম

একটি প্যাকেজ ধরুন:

sudo apt-mark hold <package-name>

হোল্ডটি সরান:

sudo apt-mark unhold <package-name>

হোল্ডে থাকা সমস্ত প্যাকেজ দেখান:

sudo apt-mark showhold

dselect

অপসারণের সাথে, [এস] নির্বাচিত স্ক্রিনটি প্রবেশ করুন, প্যাকেজটি বর্তমান অবস্থায় ধরে রাখতে চান এবং এটি টিপুন =বা H। [এস] নির্বাচিত স্ক্রীনটি বের হওয়ার পরে অবিলম্বে পরিবর্তনগুলি কার্যকর হবে।


যথোপযুক্ততা বা সিনাপটিকের মধ্যে প্যাকেজটিকে লক করা / ধারণ করার ক্ষেত্রে নীচের পদ্ধতিগুলি সীমিত a

প্রবণতা

একটি প্যাকেজ ধরুন:

sudo aptitude hold <package-name>

হোল্ডটি সরান:

sudo aptitude unhold <package-name>

সিনাপটিক প্যাকেজ ম্যানেজারের সাথে লক করা হচ্ছে

যান Synaptic প্যাকেজ পরিচালক (সিস্টেম> অ্যাডমিনিস্ট্রেশন> Synaptic প্যাকেজ পরিচালক)।

অনুসন্ধান বোতামটি ক্লিক করুন এবং প্যাকেজের নাম টাইপ করুন।

আপনি যখন প্যাকেজটি সন্ধান করেন, এটি নির্বাচন করুন এবং প্যাকেজ মেনুতে যান এবং লক সংস্করণ নির্বাচন করুন ।

সিন্যাপটিক মেনু

সেই প্যাকেজটি এখন আপডেট ম্যানেজারে প্রদর্শিত হবে না এবং আপডেট হবে না।


4
এটি কোনও প্যাকেজ ইনস্টল হওয়া থেকে রোধ করতেও কাজ করে। ইনস্টল করার সময় devscripts, প্রচুর প্যাকেজযুক্ত প্রস্তাবিত প্যাকেজ হিসাবে টানা হয়। যেহেতু আমার কোনও মেইল ​​সার্ভারের (পোস্টফিক্স) প্রয়োজন নেই, আমি এটি চালানোর echo postfix hold | sudo dpkg --set-selectionsআগে চালিয়ে চালনাটি অক্ষম করতে পারি sudo apt-get install devscripts। এই হোল্ড অ্যাকশনটি কেবলমাত্র এই ইনস্টলেশনটির জন্যই স্থির থাকে, ইনস্টলেশনের পরে নির্বাচনগুলি পুনরায় সেট করা হয়।
লেকেনস্টেইন

3
উল্লেখ করার মতো, প্যাকেজ হ'ল ব্রেক আপগ্রেড এবং প্যাচগুলি কখনও কখনও এমন পরিস্থিতি তৈরি করে যেখানে কোনও আইনি সমাধান নেই যা নির্ভরতা হিসাবে গণনা করতে পারে creating যদি প্যাকেজ foo এর একটি == <বা <= লাইববারের উপর নির্ভরতা থাকে, তবে অ্যাপটি লাইববারের পাশাপাশি foo আপগ্রেড করতে অস্বীকার করবে। সময়ের সাথে সাথে, এই ক্যাসকেডিং নির্ভরতাগুলি গুরুত্বপূর্ণ সুরক্ষা আপডেটগুলি সহ বৃহত সংখ্যক আপডেটগুলিতে অবরুদ্ধ হতে পারে। আপনাকে হয় হোল্ডটি সরিয়ে ফেলা এবং আপগ্রেডটি হওয়া দরকার, অথবা যদি এটি ঘটে থাকে তবে এর নির্ভরতার নতুন সংস্করণগুলির বিরুদ্ধে আপনি যে প্যাকেজগুলি ধারণ করছেন তা পুনরায় তৈরি করতে হবে।
স্টেফানি

2
কেবল একটি নোট: 0.7.25 সংস্করণে apt-markসমর্থন করে না hold(উবুন্টু লুসিড)
জোরিল

1
গ্রাফিক্স ড্রাইভারগুলি ধরে রাখার চেষ্টা করার সময় এটি বিশেষত কার্যকর। এটিআই ব্যবহারকারীদের জন্য apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev,।
আর্থলেলন

8
বর্তমানে সিনাপটিক এবং অ্যাপটিচিউড কেবলমাত্র সেই প্রোগ্রামগুলির মধ্যে প্যাকেজগুলি লক করে। "প্যাকেজ আপগ্রেড করে এমন অন্য যে কোনও কিছুই (পড়ুন: আপডেট ম্যানেজার, অ্যাপটি-গেট, প্রবণতা ইত্যাদি) এড়িয়ে চলে" " এই প্রশ্ন থেকে ।
হলোক্রনউইভার

44

একটি প্যাকেজ "foo" রাখার জন্য:

echo "foo hold" | dpkg --set-selections

আপনার ক্ষেত্রে আমরা ওয়াইন ধরে রাখতে যাচ্ছি:

sudo -i
echo "wine hold" | dpkg --set-selections

হোল্ড অপসারণ করতে:

sudo -i
echo "wine install" | dpkg --set-selections

এছাড়াও নোট করুন যে কোনও প্যাকেজ হোল্ড থাকা অবস্থায় আপনি এর মাধ্যমে একটি নির্দিষ্ট সংস্করণ ইনস্টল করতে পারেনapt-get install wine=1.2.3 । হোল্ডে থাকায় apt-get (dist-)upgradeএটি পরিবর্তন হতে বাধা দেয় ।
rcoup

@ ক্রিপ যদি আপনার পুরানো সংস্করণ হোল্ডে থাকে এবং তারপরে আপনি বর্ণনা অনুযায়ী হোল্ডটি সরিয়ে না দিয়ে ম্যানুয়ালি একটি নতুন সংস্করণে আপগ্রেড করেন তবে পুরানো সংস্করণটি কী ক্যাশে রাখা হবে যাতে আপনি এটিতে ফিরে যেতে পারেন?
cxrodgers

1
@cxrodgers স্থানীয় ক্যাশে (সাধারণত /var/cache/apt/archives) হোল্ডস এবং আপগ্রেড এবং স্টাফ থেকে স্বতন্ত্র, সুতরাং আপনার ডাউনলোড করা সমস্ত সংস্করণ আপনি apt-get [auto]clean
চালা

35

আমি একই জিনিসটির সন্ধান করছিলাম এবং অনেকগুলি গবেষণার পরে আমি দেখতে পেয়েছি যে নিম্নলিখিত বাক্য গঠনটি ব্যবহার করে আপনি একটি নির্দিষ্ট সংস্করণ নিষিদ্ধ করতে পারেন তবে পরবর্তী আপডেটের অনুমতি দিন:

প্যাকেজ: কমিজ-প্লাগইন-প্রধান
পিন: সংস্করণ 1: 0.9.7.0 ~ bzr19-0ubuntu10.1
পিন-অগ্রাধিকার: -1

এটি / ইত্যাদি / অ্যাপটি / পছন্দ ফাইলের মধ্যে যায়।


9
অনির্দিষ্টকালের জন্য আপডেটগুলি প্রতিরোধের চেয়ে এটি একটি আরও ভাল উপায়
Eero Aaltonen

এই পদ্ধতিটি দিয়ে, আমি মনে করি, উবুন্টু 'অ্যাডওয়্যার' বা উবুন্টুর মতো একটি বা অ্যামাজন আইকনটিকে পরবর্তী রিলিজ আপগ্রেডের সাথে পুনরায় ইনস্টল করা থেকে রোধ করার সম্ভাবনাগুলি আরও বড় ...
ড্যানিয়েল অ্যাল্ডার

19

synapticব্যবহার করে ইনস্টল করুন sudo apt-get install synaptic

gksudo synapticআপনি যে প্যাকেজটি লক করতে চান তা সনাক্ত করে এবং অনুসন্ধান বাক্সে চালনা করুন, যেমন:gedit

এখানে চিত্র বর্ণনা লিখুন

প্যাকেজ মেনু থেকে লক সংস্করণটি নির্বাচন করুন :

এখানে চিত্র বর্ণনা লিখুন

এবং এটি হ'ল, বর্তমানে লকটির সময়ে ইনস্টল হওয়া সংস্করণটি আপগ্রেড করার সময়ও ইনস্টল থাকবে।


7
দয়া করে দেখুন "লক সংস্করণটি যেমন মনে হচ্ছে তত চতুর নয় it এটি টিনে যা বলে তা করা উচিত, সংস্করণটি লক করুন ... তবে এটি কেবল সিনাপটিকের মধ্যে এটি লক করে package প্যাকেজ আপগ্রেড করে এমন অন্য কিছু (পড়ুন: আপডেট ম্যানেজার , এপটি-গেট, প্রবণতা ইত্যাদি) এটি উপেক্ষা করে This সম্ভবত এটি বাগিচা আচরণ তাই আমি সময় মতো এটি স্থির করার আশা করব। " Askubuntu.com/questions/9607/ কি-does-lock-version-do থেকে । বর্তমান অবস্থা কী? যদি সিন্যাপটিকের মধ্যে কোনও কিছু লক করা থাকে, তবে অন্য প্যাকেজ পরিচালকরা লকটিকে "সম্মান" দেবেন?

2
ভাসা 1: 0.75.13 সংস্করণ অনুসারে, এখনও নেই :( প্রবণতা সহ একই সমস্যা
সোকোকিত

16

কোনও প্যাকেজ ইনস্টল হওয়া থেকে রোধকে "প্যাকেজ হোল্ডিং" বলা হয় এবং এটি করা খুব সহজ:

প্রতিধ্বনি প্যাকেজ_নাম | dpkg --set-Seferences

... যেখানে * প্যাকেজ_নাম * হল সেই প্যাকেজটির নাম যা আপনি ইনস্টলেশন থেকে আটকাতে চান।

দ্রষ্টব্য: উপরের কমান্ডটি মূল অধিকারগুলি অনুমান করে। অন্য কথায়, সম্ভবত sudo suএটি চালানোর আগে আপনার টাইপ করতে হবে।


নিখুঁত এই উত্তর ছিল। ধন্যবাদ.
asoundmove

s/sudo su/sudo -s/g(বা sudo -i) ( -iএকটি লগইন শেল দেবে, -sদিবে না)।
ডারোবার্ট

6

যেহেতু কিছু সময় apt-getপ্রতিস্থাপন করা হয়েছে apt, সুতরাং উদাহরণস্বরূপ আমি ফায়ারফক্সকে ৫ 56 এর উপরে সংস্করণে আপডেট করা থেকে বিরত রাখতে চাই, কারণ "ট্যাব গ্রুপ" এর মতো অনেকগুলি অ্যাড-অন নতুন ফায়ারফক্স 57 এর সাথে আর কাজ করে না (দেখুন "ওয়েবএক্সটেনশনগুলি" হালনাগাদ").

এক কমান্ডের সাথে একাধিক প্যাকেজ রাখা এবং ওয়াইল্ডকার্ড ব্যবহার করা সম্ভব।

ফায়ারফক্সকে আপডেট করা থেকে বিরত রাখুন

sudo apt-mark hold firefox firefox-locale-*

আপনার যদি পরে এগুলি অনিশ্চিত রাখতে আগ্রহী হয় তবে সেই আদেশটি হ'ল:

sudo apt-mark unhold firefox firefox-locale-*

4

আমি সিনাপটিক আপনি নির্দিষ্ট প্যাকেজের সংস্করণ হিম করতে পারেন আমি এটির 100% নিশ্চিত নই যে এটি অ্যাপটি-গেট সংশোধন করবে কিনা তবে এটি আপডেট ম্যানেজারকে অবশ্যই থামিয়ে দেবে।

কোনও প্যাকেজ হিম করার জন্য এটিকে সিনাপটিকতে নির্বাচন করুন তারপরে প্যাকেজ মেনুটি খুলুন এবং নিথর সংস্করণটি নির্বাচন করুন।

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

সম্পাদনা: এই প্রশ্নটি 16668 একই পরিস্থিতি নিয়ে কাজ করে



3

বাগ # 75332 , # 158981 এবং # 72806 দেখুন

সংক্ষিপ্তসারটি হ'ল অ্যাপটি-গেট / অ্যাপিটিউড লেভেলে হোল্ড ডিপিকেজি-তে হোল্ড স্ট্যাটাসটি ট্রিগার করছে না (বিশেষত বাগ 72২৮০6 দেখুন) এবং আপডেট-ম্যানেজার ডিপি কেজি থেকে স্ট্যাটাস পড়ে।

workaround মূল হিসাবে চালিত হয়: echo "package hold" | dpkg --set-selections


2

আপনি যথাযথভাবে "নির্দিষ্ট ওভাররাইড" ব্যবহার করতে পারেন, এটির মতো:

aptitude reinstall ~i oracle-java8-jre:

এটি আপনার সিস্টেমে সমস্ত প্যাকেজ পুনরায় ইনস্টল করতে তবে ওরাকল-জাভা 8-জেআর নয়, কেবলমাত্র (ভবিষ্যতের পুনরায় ইনস্টলগুলির জন্য সঞ্চিত নয়) এক নির্দিষ্ট সময় ব্যবহার করুন specific

আপনি যদি কোনও নির্দিষ্ট সুনির্দিষ্ট ওভাররাইড ব্যবহার করেন তবে প্যাকেজটি ক্ষণিকের জন্য একটি প্রবণতা রাখার মতো অবস্থায় থাকবে এবং এটি ইনস্টল করার চেষ্টা করবে না।

খুব ভাল জিনিস আপনি যদি মনে করেন আপনার সিস্টেমটি কীভাবে কিছুটা আপোস করা হয়েছিল।


1

আপনার যদি সিন্যাপটিক ইনস্টল করা থাকে তবে আপনি প্যাকেজটি নির্বাচন করতে পারেন এবং এটি আপডেট হওয়া রোধ করতে প্যাকেজ -> লক সংস্করণ মেনুটি ব্যবহার করতে পারেন।

আপনি সিনড্যাক্টিক ইনস্টল করতে পারেন sudo এপটি-গেট ইনস্টল সিনপ্যাটিক দিয়ে। আমি ব্যক্তিগতভাবে এটি সফ্টওয়্যার সেন্টারের চেয়ে বেশি দরকারী মনে করি ... তারপরে আবার আমি মোটামুটি পুরানো স্কুল। :)


0

মাঝেমধ্যে কেউ বর্তমানে ইনস্টল করা সমস্ত প্যাকেজটি ধরে রাখতে চাইবে । এখানে কিভাবে।

প্রথমে বর্তমান অবস্থা সংরক্ষণ করুন, যাতে আপনি পূর্বাবস্থায় ফিরে আসতে পারেন:

dpkg --get-selections > current_selections.txt

তারপরে, সমস্ত প্যাকেজ আটকে রাখার জন্য:

dpkg --get-selections | sed -r "s/\tinstall/hold/" |dpkg --set-selections

অবশেষে, আপনি যখন আগের অবস্থায় ফিরে যেতে চান:

dpkg --set-selections < current_selections.txt

QA থেকে উত্পাদনের পরিবেশে স্থানান্তরিত করার জন্য কোনও ভিএম বা অ্যামাজন এএমআই স্ন্যাপশট তৈরি করার সময় এর জন্য ব্যবহারের একটি কেস হতে পারে।


0

উবুন্টু 16.04 এর তুলনায় @ সোজারের মন্তব্যে বিশদ যুক্ত করা ।

উবুন্টু ১.0.০৪-তে ডিফল্টরূপে বিদ্যমান / etc / apt / পছন্দ ফাইল নেই। আপনার যদি বর্তমানে একটি না থাকে তবে কেবলমাত্র একটি নতুন ফাইল তৈরি করুন এবং প্রদত্ত প্যাকেজ এবং আপডেটগুলি থেকে এর নির্ভরতা বাদ দিতে উপরের বর্ণনা অনুসারে @ এসোজারের বর্ণনা হিসাবে এটি একটি স্টাঞ্জা সহ তৈরি করুন।

এরপরে, চালান apt updateএবং আপনি জিটিজি। : 0)

উদাহরণস্বরূপ, এম্বেডড ইন্টেল ভিডিও কার্ড এবং একটি এনভিডিয়া কার্ড সহ আমার একটি উবুন্টু 16.04.5 এলটিএস সার্ভার রয়েছে। এনভিডিয়া কার্ডটি কেবলমাত্র ব্যবহৃত হয়। সার্ভারটি CUDA ড্রাইভারও ব্যবহার করে। আমার সমস্যা ছিল যেখানে aptজিদ দেওয়া ছিল

ভিএ-চালক সব

(ইন্টেল ড্রাইভার) একটি আপডেটের প্রয়োজন, তবে কোন সংস্করণ ইনস্টল করতে হবে তা নির্ধারণ করতে পারেনি। এটি আমাকে বাদাম চালাচ্ছিল এবং আমার কোনওভাবেই ইন্টেল চালকের দরকার নেই। আমি এই পাঠ্যটি পছন্দসই ফাইলে প্রবেশ করিয়েছি এবং সমস্যাটি সমাধান করেছি pt

Package: va-driver-all
Pin: release *
Pin-Priority: -1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.