সংগ্রহস্থলের নির্দিষ্ট সেট থেকে ইনস্টল করা আপডেটগুলিকে আমি কীভাবে সীমাবদ্ধ করব? এটা কি আদৌ সম্ভব?
সংগ্রহস্থলের নির্দিষ্ট সেট থেকে ইনস্টল করা আপডেটগুলিকে আমি কীভাবে সীমাবদ্ধ করব? এটা কি আদৌ সম্ভব?
উত্তর:
পিনিং এমন একটি প্রক্রিয়া যা আপনাকে সাম্প্রতিক সংস্করণ থেকে প্যাকেজগুলি দখল করার সময় আপনাকে উবুন্টু (বা অন্য কোনও ডেবিয়ান সিস্টেম) এর স্থিতিশীল মুক্তির জন্য থাকতে দেয়। - help.ubuntu.com
আপনি apt
নীতিগুলির মাধ্যমে সম্পূর্ণরূপে অপসারণ না করে নির্দিষ্ট সংগ্রহস্থলগুলি থেকে স্বয়ংক্রিয় আপডেটগুলি অক্ষম করতে পারেন :
সংগ্রহস্থল থেকে স্বয়ংক্রিয় আপডেটগুলি অক্ষম করতে repo
, /etc/apt/preferences.d/repo
নিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল যুক্ত করুন :
Package: *
Pin: release n=repo
Pin-Priority: 50
যা এই সংগ্রহস্থল থেকে সমস্ত প্যাকেজ ইতিমধ্যে ইনস্টল করা প্যাকেজগুলির চেয়ে কম অগ্রাধিকার দেবে (যেগুলির 100 রয়েছে)।
আরও তথ্যের জন্য man apt_preferences
বা উবুন্টু সম্প্রদায় উইকি পরীক্ষা করুন ।
apt-cache policy package-name
release n=repo
কাউকে ক্যাশে দেবে না
আপনি -t
বিকল্প সহ একটি রিলিজ নির্দিষ্ট করতে পারেন । উদাহরণ হিসাবে, /etc/apt/sources.list
আইসওয়েসেল সর্বশেষ প্রকাশের জন্য ইনস্টল করার জন্য আমি নিম্নলিখিত সংগ্রহগুলি যুক্ত করেছি:
deb http://mozilla.debian.net/ squeeze-backports iceweasel-release
আপনি জানেন iceweasel
যে সরকারী দেবিয়ান সংগ্রহশালায় একই প্যাকেজ রয়েছে। আমি যদি এই নির্দিষ্ট প্রকাশ থেকে আইসওয়েসেলটি ইনস্টল করতে চাই তবে আমি চালাব:
apt-get install -t squeeze-backports iceweasel
অ্যাপটি-গেট ম্যানুয়াল পৃষ্ঠা থেকে:
-t, --target-release, --default-release
This option controls the default input to the policy engine, it creates a default pin at priority 990 using the specified
release string. This overrides the general settings in /etc/apt/preferences. Specifically pinned packages are not affected by
the value of this option. In short, this option lets you have simple control over which distribution packages will be retrieved
from. Some common examples might be -t '2.1*', -t unstable or -t sid. Configuration Item: APT::Default-Release; see also the
apt_preferences(5) manual page.
আমি এটি একটি ভাল সমাধান বলে মনে করি।
আপডেট : @ সুব মন্তব্যে উল্লিখিত হিসাবে, " -t
রিপোজিটরির নাম প্রকাশের কথা নির্দিষ্ট করে। উবুন্টুতে কোনও রেপোজিটরির নাম নেই (আরএইচইএল, ফেডোরা, সেন্টোস, ...) এর মতো রেডহ্যাট ভিত্তিক লিনাক্সের বিপরীতে"।
apt-get
ম্যানুয়ালটিতে আপনি দেখতে পাবেন , -t
রিপোজিটরির নাম নয় রিলিজ নির্দিষ্ট করুন। উবুন্টুতে কোনও রেপোজিটরির নাম নেই (রেডহ্যাট ভিত্তিক লিনাক্সের মতো যেমন আরএইচইল, ফেডোরা,
-t xenial
একটি একক প্যাকেজ জন্য কাজ করে। তবে এর সমস্ত নির্ভরতা এখনও উচ্চ প্যাকেজগুলি থেকে আনতে হবে
100 টিরও কম অগ্রাধিকারের সাথে আপনি ইনস্টল করতে চান না এমন ভাণ্ডারগুলি আপনাকে পিন করতে হবে Which যার অর্থ ( apt_preference
ম্যান পৃষ্ঠা থেকে )
100 <= পি <500 এর
ফলে কোনও সংস্করণ ইনস্টল হওয়ার কারণ হয়ে থাকে যদি না অন্য কোনও বিতরণের মালিকানা পাওয়া থাকে বা ইনস্টল করা সংস্করণটি সাম্প্রতিক না হয়
এবং পিন করার জন্য একটি সংগ্রহস্থল নির্বাচন করতে, আপনি সংগ্রহস্থলের Release
ফাইল থেকে ক্ষেত্রগুলি ব্যবহার করবেন । যেমন archive
, label
, release
, version
ইত্যাদি এই ক্ষেত্র মান উল্লেখ করে, আপনি অবিকল একটি সংগ্রহস্থলের নির্বাচন করে আপনার পছন্দের অগ্রাধিকার ধার্য করতে পারেন। পরীক্ষা করে দেখুন apt_preference আরো বিস্তারিত জানার জন্য পাতা।
এগিয়ে যাওয়ার আগে, পিনিং সম্পর্কে আমাদের কিছু গুরুত্বপূর্ণ বিষয় জানতে হবে। এর মধ্যে রয়েছে
Release
ফাইলের ক্ষেত্র এবং এটি apt-cache policy
আউটপুট ম্যাপিং
অ্যাপ্লিকেশন পছন্দ ফাইলগুলির ফর্ম্যাট
Release
অগ্রাধিকার সেট করতে ফাইল ক্ষেত্রগুলি ব্যবহার করা
Release
ফাইল এবং apt-cache policy
আউটপুট ক্ষেত্রথেকে ডেবিয়ান উইকি নিবন্ধে
আপনি apt-cache policy
এই মত আউটপুট দেখতে পাবেন
500 http://mirrors.ircam.fr/pub/ubuntu/archive xenial/main amd64 Packages
release v=16.04,o=Ubuntu,a=xenial,n=xenial,l=Ubuntu,c=main,b=amd64
এই লাইনের মানগুলি Release
ফাইলগুলি থেকে আসে ।
বিবরণ একটি সংগ্রহস্থলের জন্য বিবরণ সেট করে। এটি apt-cache policy
আউটপুটে প্রদর্শিত হয় না
এটি লেবেল হ'ল সংগ্রহস্থলের লেবেল। অনেক সংগ্রহস্থলের খালি লেবেল রয়েছে। এটি l=<label>
আউটপুটে প্রদর্শিত হয় ।
উত্স এটি সংগ্রহস্থলের উত্স সম্পর্কে বলে। অফিসিয়াল উবুন্টু ভান্ডারটির Ubuntu
মান রয়েছে। o=
আউটপুট হিসাবে প্রদর্শিত হয়
সংস্করণ একটি বিতরণের সংস্করণ। এটি জেনিয়ালের জন্য 16.04। v=
আউটপুট হিসাবে প্রদর্শিত হয়
স্যুট আর্কাইভের মতোই । ডেবিয়ান উইকি থেকে এটি হ'ল এই ডিরেক্টরিতে থাকা প্যাকেজগুলি (বা এর জন্য নকশাকৃত) ডাবিয়ান বিতরণের নাম, যেমন স্থিতিশীল, পরীক্ষা বা অস্থির। । Ubuntu- এর জন্য, সেগুলি হল release-updates
, release-security
ইত্যাদি উদাহরণস্বরূপ, xenial-updates
, xenial-security
। এটা তোলে যেমন আউটপুট দেখানো হচ্ছে a=xenial
, a=xenial-security
। পিপিএগুলি এর জন্য কেবল প্রকাশের নাম ব্যবহার করে, এ কারণেই এটি পিনিংয়ে খুব বেশি সহায়তা করবে না।
অংশটি লাইসেন্সিংয়ের জিনিস সম্পর্কে বলে। এটা main
, multiverse
, restricted
, universe
উবুন্টু হবে। আউটপুটে এটা হিসাবে দেখানো হচ্ছে c=main
বা c=restricted
ইত্যাদি সর্বাধিক PPAs ব্যবহার main
এই ক্ষেত্রের জন্য, এইভাবে এটা অনেক পারেন পিন সাহায্যের না।
আর্কিটেকচারটি ওএস আর্কিটেকচার সম্পর্কে। আউটপুট হিসাবে b=i386
বা দেখানো হয়েছেb=amd64
কোডনাম হল বিতরণের প্রকাশের নাম। 16.04 এর জন্য এটি xenial
। 14.04 এর জন্য এটি trusty
। দেখানো apt-cache policy
হিসাবে আউটপুট n=xenial
বা n=trusty
। এটি সাধারণত একক বিতরণের জন্য সমস্ত সংগ্রহস্থলের জন্য সমান। এ কারণেই এটি বেশি পিন করতে সহায়তা করে না।
apt-cache policy
আউটপুট থেকে শুরু হওয়া অন্য লাইনটি origin
সংগ্রহস্থলের ইন্টারনেট উত্সটি জানায়। এটি পিনিংয়েও ব্যবহার করা যেতে পারে। তবে Release
ফাইল Origin
ক্ষেত্রের সাথে মিশ্রিত করা উচিত নয় । সেগুলি আলাদা।
একটি ভান্ডার পিন করতে আমরা এই মানগুলি ব্যবহার করব।
সুতরাং, কীভাবে আমরা সংগ্রহস্থলকে সীমাবদ্ধ করতে পিনিং 1 ব্যবহার করব ?
পিনিং নিয়ন্ত্রণের বিভিন্ন উপায় রয়েছে এবং উবুন্টুর জন্য কেবল একটি ছোট-সাবসেট কার্যকর। একটি বিশদ বিবরণ যদিও উত্তর সুযোগ বাইরে। পড়ুন দয়া করে apt_preference
মনুষ্যসৃষ্ট পৃষ্ঠা এই জন্য।
পিন বা অ্যাপ্লিকেশন পছন্দ ফাইলগুলি /etc/apt/preferences.d
ফোল্ডারে থাকে। প্রতিটি পিনিংয়ে তিনটি লাইন থাকে।
প্রথম লাইনটি শুরু হয় Package:
এবং কমা-বিচ্ছিন্ন প্যাকেজের নামগুলি অনুসরণ করে। নিয়মিত প্রকাশ এবং গ্লোব অনুমোদিত
দ্বিতীয় লাইনটি শুরু হয় Pin:
এবং এটি প্যাকেজগুলির সেটকে লক্ষ্য করতে ব্যবহৃত হয়।
যদি আমরা এর xenial
চেয়েও বেশি প্যাকেজগুলি পিন করতে চাই তবে আমরা xenial-updates
ব্যবহার করব release a=xenial
।
আমরা যদি 5.0 সংস্করণটি পিন করতে চাই তবে আমরা version 5.0
এখানে ব্যবহার করব । গ্লোব প্যাটেন অনুমোদিত।
অথবা আমরা যদি উত্স থেকে প্যাকেজগুলি পিন করতে চাই তবে আমরা http://archive.ubuntu.com
ব্যবহার করব origin "archive.ubuntu.com"
। দ্রষ্টব্য, আমরা http://
সেখানে প্রোটোকল লিখি না।
তৃতীয় লাইনটি শুরু হয় Pin-Priority:
এবং এর মানটি একটি সংখ্যা। যা উপরোক্ত লক্ষ্যবস্তু আইটেমগুলির অগ্রাধিকার লক্ষণীয়।
Release
অগ্রাধিকার সেট করতে ফাইল ক্ষেত্র ব্যবহার করাএখানে একটি উদাহরণ
Package: *
Pin: release a=xenial
Pin-Priority: 1001
এই উদাহরণে, xenial
সংরক্ষণাগারগুলি থেকে প্যাকেজগুলিকে xenial-updates
এবং এর চেয়ে বেশি অগ্রাধিকার দেওয়া হয় xenial-security
।
পিন করার পরে, একটি apt-cache policy nautilus
শো চালানো যে এটি xenial
সংরক্ষণাগার থেকে আর্কাইভ থেকে উচ্চতর সংস্করণে একটি উচ্চতর সংস্করণের চেয়ে কম সংস্করণকে প্রকৃতপক্ষে উচ্চতর অগ্রাধিকার দিয়েছে xenial-updates
। Candidate:
লাইন লক্ষ্য করুন ।
nautilus:
Installed: 1:3.18.5-0ubuntu1~xenial1
Candidate: 1:3.18.4.is.3.14.3-0ubuntu4
Version table:
*** 1:3.18.5-0ubuntu1~xenial1 100
100 /var/lib/dpkg/status
1:3.18.4.is.3.14.3-0ubuntu5 500
500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
1:3.18.4.is.3.14.3-0ubuntu4 1001
500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
তবে, আমরা যদি পিপিএ সরবরাহিত প্যাকেজগুলির চেয়েও অগ্রাধিকার দিতে চাই, তবে এটি কার্যকর হবে না। পিপিএগুলি xenial
ডিফল্টরূপে একই সংরক্ষণাগার নাম ব্যবহার করে। সুতরাং, অগ্রাধিকার বরাদ্দ a=xenial
করা সেই প্যাকেজগুলির ক্ষেত্রেও প্রযোজ্য। উদাহরণস্বরূপ (সক্ষম পিপিএর পরে),
13:31 $ apt-cache policy nautilus
nautilus:
Installed: 1:3.18.5-0ubuntu1~xenial1
Candidate: 1:3.18.5-0ubuntu1~xenial1
Version table:
*** 1:3.18.5-0ubuntu1~xenial1 1001
500 http://ppa.launchpad.net/budgie-remix/ppa/ubuntu xenial/main amd64 Packages
500 http://ppa.launchpad.net/gnome3-team/gnome3/ubuntu xenial/main amd64 Packages
100 /var/lib/dpkg/status
1:3.18.4.is.3.14.3-0ubuntu5 500
500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
1:3.18.4.is.3.14.3-0ubuntu4 1001
500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
এখন প্রার্থী সংস্করণটি পিপিএর। xenial
অফিসিয়াল উবুন্টু রেপো এবং পিপিএ সংরক্ষণাগার থেকে উভয় প্যাকেজের একই অগ্রাধিকার রয়েছে 1001
, কারণ Archive
রিলিজ ফাইলে উভয়ই একই মান ব্যবহার করে। সাফল্যের সাথে পিন করতে আমাদের পিন ফাইলে আরও ক্ষেত্র একত্রিত করতে হবে।
একটি সংগ্রহস্থল থেকে প্যাকেজগুলি পিন করতে, আমাদের apt-cache policy
কমান্ড থেকে প্রাপ্ত তথ্য ব্যবহার করে এটি লক্ষ্যবস্তু করা দরকার । আমরা সবেমাত্র দেখেছি যে a=xenial
কোনও ভাণ্ডার পিন-নির্দেশিত করতে সহায়তা করবে না। কোনও সংগ্রহস্থলকে সুনির্দিষ্টভাবে লক্ষ্য করতে আমাদের পছন্দের ফাইলে কমা ব্যবহার করে একসাথে একাধিক ক্ষেত্র ব্যবহার করতে হবে।
উদাহরণস্বরূপ, http://ppa.launchpad.net/oibaf/graphics-drivers/
পিপিএ থেকে সমস্ত প্যাকেজ রোধ করতে আমরা ব্যবহার করতে পারি
Package: *
Pin: release n=xenial,o=LP-PPA-oibaf-graphics-drivers
Pin-Priority: 10
এখানে আমরা কোডেনাম মানের পাশাপাশি Origin
পিপিএর মান ব্যবহার করছি । (যদিও কোডনাম মানটি এখানে আসলে প্রয়োজন নেই)। কখনও কখনও সংগ্রহস্থলগুলি এই মানটি মিস করতে পারে। এই ক্ষেত্রে, আরও কিছু কৌশল ব্যবহার করা উচিত। আউটপুট apt-cache policy libgl1-mesa-glx
বলে যে এটি কাজ করে। এটি এই পিপিএর সমস্ত প্যাকেজের অগ্রাধিকার হ্রাস করে।
libgl1-mesa-glx:
Installed: 12.1~git1608200730.16ef7a~gd~x
Candidate: 12.1~git1608200730.16ef7a~gd~x
Version table:
*** 12.1~git1608200730.16ef7a~gd~x 100
-10 http://ppa.launchpad.net/oibaf/graphics-drivers/ubuntu xenial/main amd64 Packages
100 /var/lib/dpkg/status
11.2.0-1ubuntu2.1 500
500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
11.2.0-1ubuntu2 500
500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
এটি প্রার্থী হওয়ার বিষয়টি উপেক্ষা করুন। এটি হতাশ, কারণ এটি ইতিমধ্যে আমার সিস্টেমে ইনস্টল । ডানদিকে অগ্রাধিকার পরীক্ষা করুন
যদি আমরা এমন কোনও সংগ্রহস্থল পিন করতে চাই যার মতো প্রকাশের তথ্যটি অনুপস্থিত, তবে http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04
আমাদের অবশ্যই অন্য পদ্ধতিটি ব্যবহার করতে হবে। যেহেতু, অন্য কোনও সংগ্রহস্থল সেই উত্সটি ব্যবহার origin
করছে না, তাই আমরা নিরাপদে এই সংগ্রহস্থলটি পিন করতে ব্যবহার করতে পারি ।
Package: *
Pin: origin download.opensuse.org
Pin-Priority: 10
দ্রষ্টব্য 1: এই উত্সটি ইন্টারনেট উত্স, রিলিজ ফাইলটিতে বিক্রেতার নির্দিষ্ট করে এমন নয়।
নোট 2: Pin-Priority
সংখ্যাটির বিশেষ অর্থ রয়েছে। পরীক্ষা করে দেখুন apt_preference
ম্যানুয়েল পৃষ্ঠা বিস্তারিত জানার জন্য।
স্পষ্টত পছন্দ হ'ল /etc/apt/sources.list
অন্যান্য সমস্ত সংগ্রহস্থলগুলি সংশোধন করে মন্তব্য করা এবং তারপরে চালানো
apt-get update && apt-get upgrade && apt-get autoclean
এবং তারপরে মন্তব্যগুলি সরান sources.list
। সম্ভবত সেরা উপায় না, তবে কমপক্ষে apt-get
ম্যান পেজগুলি এটি করার কোনও উপায় নির্দিষ্ট করে না not
সম্পর্কিত নোটে, উদাহরণস্বরূপ উবুন্টু বিতরণ আপগ্রেড প্রক্রিয়া আপগ্রেডের সময় সমস্ত তৃতীয় পক্ষের সংগ্রহস্থলগুলি অক্ষম করে (এবং কেবলমাত্র সেগুলি অস্থায়ীভাবে বাদ দেওয়ার জন্য কিছু বিকল্প চালায় না)।