একটি নির্দিষ্ট সংগ্রহস্থল থেকে কীভাবে আপডেট ইনস্টল করবেন?


39

সংগ্রহস্থলের নির্দিষ্ট সেট থেকে ইনস্টল করা আপডেটগুলিকে আমি কীভাবে সীমাবদ্ধ করব? এটা কি আদৌ সম্ভব?


আপনি কি রানটাইমের সময় রেপো নির্দিষ্ট করতে সক্ষম হতে চান, বা এটি আরও স্থির জিনিস হওয়া উচিত? দুই উত্তর নিচে আধুনিক বিকল্প অনুমান।
tshepang

আদর্শভাবে এটি রানটাইমের সময় হবে। স্থির বিকল্পটি যদিও যথেষ্ট।
টন ভ্যান ড্যান হিউভেল

2
আপনি শিরোনাম এবং আপনি যে প্রকৃত সাহায্যের জন্য অনুরোধ করছেন তা আলাদা।
সুন্দরের

উত্তর:


29

পিনিং ব্যবহার করুন

পিনিং এমন একটি প্রক্রিয়া যা আপনাকে সাম্প্রতিক সংস্করণ থেকে প্যাকেজগুলি দখল করার সময় আপনাকে উবুন্টু (বা অন্য কোনও ডেবিয়ান সিস্টেম) এর স্থিতিশীল মুক্তির জন্য থাকতে দেয়। - help.ubuntu.com

আপনি aptনীতিগুলির মাধ্যমে সম্পূর্ণরূপে অপসারণ না করে নির্দিষ্ট সংগ্রহস্থলগুলি থেকে স্বয়ংক্রিয় আপডেটগুলি অক্ষম করতে পারেন :

সংগ্রহস্থল থেকে স্বয়ংক্রিয় আপডেটগুলি অক্ষম করতে repo,
/etc/apt/preferences.d/repoনিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল যুক্ত করুন :

Package: *
Pin: release n=repo
Pin-Priority: 50

যা এই সংগ্রহস্থল থেকে সমস্ত প্যাকেজ ইতিমধ্যে ইনস্টল করা প্যাকেজগুলির চেয়ে কম অগ্রাধিকার দেবে (যেগুলির 100 রয়েছে)।

আরও তথ্যের জন্য man apt_preferencesবা উবুন্টু সম্প্রদায় উইকি পরীক্ষা করুন ।


3
এটি লজ্জাজনক একমাত্র apt_preferences উত্তরটি সর্বশেষ ...
রবার্ট সিমার

কোন রেপো থেকে কোন সংস্করণটি আছে তা কীভাবে আবিষ্কার করবেন?
ম্যাক্স এন

2
@ ম্যাক্সএন আপনি সাধারণত চালিয়ে সেই তথ্যটি পেয়ে যাবেনapt-cache policy package-name
আনোয়ার

আপডেটের সময় বিবেচনা না করার জন্য এটি কোনও সংগ্রহস্থলকে বাধ্য করবে না। কারণ release n=repoকাউকে ক্যাশে দেবে না
আনোয়ার

35

আপনি -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রিপোজিটরির নাম প্রকাশের কথা নির্দিষ্ট করে। উবুন্টুতে কোনও রেপোজিটরির নাম নেই (আরএইচইএল, ফেডোরা, সেন্টোস, ...) এর মতো রেডহ্যাট ভিত্তিক লিনাক্সের বিপরীতে"।


4
apt-getম্যানুয়ালটিতে আপনি দেখতে পাবেন , -tরিপোজিটরির নাম নয় রিলিজ নির্দিষ্ট করুন। উবুন্টুতে কোনও রেপোজিটরির নাম নেই (রেডহ্যাট ভিত্তিক লিনাক্সের মতো যেমন আরএইচইল, ফেডোরা,
সেন্টোস

1
@ সুব হ্যাঁ, আপনি ঠিক বলেছেন! রিলিজের সাথে আমি রিপোজিটরির নাম গুলিয়ে ফেললাম!
কার্টুনিস্ট

-t xenialএকটি একক প্যাকেজ জন্য কাজ করে। তবে এর সমস্ত নির্ভরতা এখনও উচ্চ প্যাকেজগুলি থেকে আনতে হবে
আনোয়ার

11

সংক্ষিপ্ত উত্তর

100 টিরও কম অগ্রাধিকারের সাথে আপনি ইনস্টল করতে চান না এমন ভাণ্ডারগুলি আপনাকে পিন করতে হবে Which যার অর্থ ( apt_preferenceম্যান পৃষ্ঠা থেকে )

100 <= পি <500 এর
ফলে কোনও সংস্করণ ইনস্টল হওয়ার কারণ হয়ে থাকে যদি না অন্য কোনও বিতরণের মালিকানা পাওয়া থাকে বা ইনস্টল করা সংস্করণটি সাম্প্রতিক না হয়

এবং পিন করার জন্য একটি সংগ্রহস্থল নির্বাচন করতে, আপনি সংগ্রহস্থলের Releaseফাইল থেকে ক্ষেত্রগুলি ব্যবহার করবেন । যেমন archive, label, release, versionইত্যাদি এই ক্ষেত্র মান উল্লেখ করে, আপনি অবিকল একটি সংগ্রহস্থলের নির্বাচন করে আপনার পছন্দের অগ্রাধিকার ধার্য করতে পারেন। পরীক্ষা করে দেখুন apt_preference আরো বিস্তারিত জানার জন্য পাতা।


দীর্ঘ উত্তর

এগিয়ে যাওয়ার আগে, পিনিং সম্পর্কে আমাদের কিছু গুরুত্বপূর্ণ বিষয় জানতে হবে। এর মধ্যে রয়েছে

  1. Releaseফাইলের ক্ষেত্র এবং এটি apt-cache policyআউটপুট ম্যাপিং

  2. অ্যাপ্লিকেশন পছন্দ ফাইলগুলির ফর্ম্যাট

  3. Releaseঅগ্রাধিকার সেট করতে ফাইল ক্ষেত্রগুলি ব্যবহার করা

1. 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-updatesCandidate:লাইন লক্ষ্য করুন ।

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ম্যানুয়েল পৃষ্ঠা বিস্তারিত জানার জন্য।


7

গুই ভিত্তিক বিকল্প হ'ল সফ্টওয়্যার কেন্দ্র খুলুন এবং সম্পাদনা> সফ্টওয়্যার উত্স নির্বাচন করা ...

উবুন্টু সফটওয়্যার ট্যাব সহ সফ্টওয়্যার উত্স নির্বাচন করা হয়েছে

অন্যান্য সফ্টওয়্যার ট্যাব সহ সফ্টওয়্যার উত্স নির্বাচন করা হয়েছে

আপনাকে যা করতে হবে তা হ'ল আপনি যে সংগ্রহগুলি থেকে আপডেট চান তা আন-টিক করুন।

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


5

স্পষ্টত পছন্দ হ'ল /etc/apt/sources.listঅন্যান্য সমস্ত সংগ্রহস্থলগুলি সংশোধন করে মন্তব্য করা এবং তারপরে চালানো

apt-get update && apt-get upgrade && apt-get autoclean

এবং তারপরে মন্তব্যগুলি সরান sources.list। সম্ভবত সেরা উপায় না, তবে কমপক্ষে apt-getম্যান পেজগুলি এটি করার কোনও উপায় নির্দিষ্ট করে না not

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


1

অন্য একটি জিইউআই বিকল্প হ'ল সাইনাপটিক প্যাকেজ ম্যানেজারটিতে কেবলমাত্র উত্সটি বেছে নেওয়া।

  1. আপনি যে প্যাকেজটি ইনস্টল করতে চান তার নাম সন্ধান করুন
  2. অরিজিন বোতামটি ক্লিক করুন
  3. আপনি যে সংগ্রহস্থলটি ইনস্টল করতে চান তা চয়ন করুন
  4. প্যাকেজগুলি চয়ন করুন
  5. প্রয়োগ করা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.