একটি নির্দিষ্ট সংগ্রহস্থল থেকে আমি কীভাবে সমস্ত প্যাকেজ সরিয়ে ফেলব?


30

10.04 থেকে 10.10 পর্যন্ত মসৃণ আপগ্রেড করার জন্য, আমি সমস্ত প্যাকেজগুলি মুছে ফেলতে চাই যা ডিফল্ট সংগ্রহস্থলগুলিতে নেই (যেমন ক্রোমিয়াম পিপিএ এবং তৃতীয় পক্ষের সংগ্রহস্থল)। এই প্যাকেজগুলি সন্ধান এবং অপসারণের সবচেয়ে সহজ উপায় (সর্বাধিক সি এল এল) কী?

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


যারা সমস্ত বাহ্যিক প্যাকেজগুলি মুছে ফেলতে চান, তাদের জন্য সমস্ত পিপিএ অক্ষম করুন এবং কোড. google.com/p/apt-downgrade
লেকেনস্টেইন

উত্তর:


12

এই স্ক্রিপ্টটি একটি নির্দিষ্ট সার্ভার / শাখা থেকে সমস্ত প্যাকেজ তালিকাভুক্ত করতে পারে (দুটি ঘোষিত ভেরিয়েবল সংশোধন করে):

#!/bin/bash

server="http://it.archive.ubuntu.com/ubuntu/"
branch="maverick-updates/main"

apt-cache policy $(dpkg -l | awk 'NR >= 6 { print $2 }') |
  awk -v server="$server" -v branch="$branch" \
    '/^[^ ]/      { split($1, a, ":"); pkg = a[1] }
    nextline == 1 { nextline = 0; if ($2 == server && $3 == branch) print pkg }
    /\*\*\*/      { nextline = 1 }'

আপনার যদি শাখা থেকে স্বতন্ত্রভাবে কোনও নির্দিষ্ট সার্ভার থেকে না আসা সমস্ত প্যাকেজগুলির তালিকা তৈরি করতে হয় তবে পরবর্তী-শেষ-লাইনটি এর সাথে প্রতিস্থাপন করুন:

nextline == 1 { nextline = 0; if ($2 != server) print pkg }

1
আমি ঠিক যা খুঁজছি তা নয়, এই স্ক্রিপ্টটি সুনির্দিষ্ট সংগ্রহস্থল এন্ট্রি থেকে সমস্ত প্যাকেজ প্রদর্শন করে। দ্বারা প্রতিস্থাপন $2 == server && $3 == branchকরে $2 != server, আমার প্রশ্নের উত্তর দেওয়া হয়। দয়া করে আপনার উত্তরে এটি রাখুন :) ( branch=লাইনটি সরানো যেতে পারে) দ্রষ্টব্য: ধারণা করা হয়েছে যে সমস্ত প্যাকেজগুলি একটি একক সংগ্রহস্থল সার্ভার থেকে আসে।
লেকেনস্টেইন

1
এই স্ক্রিপ্টটি (আমার শেষ মন্তব্যে সামান্য পরিবর্তিত) প্রত্যাশার মতো কাজ করে। libvpx0প্যাকেজ ক্রোমিয়াম-দৈনন্দিন পিপিএ হিসেবে উভয় প্রধান রেপো অস্তিত্ব। থেকে ভান্ডার সরানোর পরে /etc/apt/sources.list.d, আমি এখনও বাঁ-ওভার প্যাকেজ ছিল: libvpx0। আমি "মেরামত" এই নিম্নরূপ: dpkg সঙ্গে গ্রন্থাগার অপসারণ নির্ভরতা উপেক্ষা: sudo dpkg --ignore-depends=libvpx0 --remove libvpx0। এর পরে, এটা প্রধান রেপো থেকে আবার ইনস্টল: sudo apt-get install libvpx0
লেকেনস্টেইন

1
@ লেকেনস্টেইন: সম্ভবত আপনি sudo apt-get install libvpx0=$version_stringদু'টি উপলব্ধ প্যাকেজের বিভিন্ন সংস্করণের স্ট্রিং ব্যবহার করে আপনার কাজটি সংক্ষিপ্ত করতে পারতেন ।
enzotib

প্রকৃতপক্ষে, এটিও সম্ভব ছিল এবং সম্ভবত আরও ভাল।
লেকেনস্টেইন

আমার কেবল ডিফল্ট রেপোগুলি থেকে কোন প্যাকেজ ইনস্টল করা হয়নি তা যাচাই করা দরকার। কমান্ডটি apt-cache policy $(dpkg -l | awk '/^ii/{print $2}') > policy.txt; awk '!/^ /{pkg=$1}check{print pkg, $2;check=0}/\*\*\*/{check=1} ' policy.txt | grep -v archive.ubuntuএকটি ভাল শুরু ( grep -vনির্দিষ্ট পিপিএ বাদ দিতে আরও যুক্ত করুন )। প্যাকেজ সংস্করণগুলি যা কোনও রেপোতে জানা যায় না সেগুলি হিসাবে প্রদর্শিত হয় /var/lib/dpkg/status
লেকেনস্টেইন

22

পিপিএ-পার্জপিপিএ-পার্জ ইনস্টল করুন পরীক্ষা করে দেখুন ।

ব্যবহার:

ppa-purge -purge <nameofppa> [-s hostserver]

হোস্টসভারটি ডিফল্ট ppa.launchpad.net

রেফারেন্সের জন্য কমান্ডের ম্যানপেজেরppa-purgeম্যানপেজ আইকন লিঙ্কটি এখানে ।


অথবা আপনি আমার পিপিএ-পার্জ শাখা ব্যবহার করতে পারেন যা মহাবিশ্বের সংগ্রহস্থলের পিপিএ-পার্জ-এর তুলনায় অনেক বাগ ফিক্স এবং উন্নতি করেছে। আরও তথ্যের জন্য এখানে দেখুন ।
জার্নো

18

aptitudeএর জন্য মাল্টিয়ার্ক বাগটি কাটিয়ে উঠছেppa-purge

সাধারণত, যেমন ভাদিম Rutkovsky এবং Takkat আছে ব্যাখ্যা , দৌড়ানো ppa-purgeডিফল্ট সিনট্যাক্স সঙ্গে একটি পিপিএ দ্বারা উপলব্ধ সমস্ত প্যাকেজ মুছে ফেলার জন্য একটি কার্যকর উপায় সঠিকভাবে অন্যান্য কনফিগার সফ্টওয়্যার উৎস প্রদান করা যখনই সম্ভব সংস্করণ তাদের downgrading হয়।

যাইহোক, Takkat সরু আউট হয়েছে যেমন বাগ 831768 প্রতিরোধ ppa-purgeসঠিকভাবে কাজ করছে মুছে ফেলার জন্য থেকে multiarch (64-বিট সিস্টেমে ইনস্টল করা 32-বিট প্যাকেজ মত) প্যাকেজ। এটি কারণ aptitudeমাল্টিআরচ প্যাকেজগুলিতে বিবাদযুক্ত নির্ভরতা পরিচালনা করতে পারে না (ত্রুটিটি এটি সম্পর্কে কী) এবং প্যাকেজগুলি ডাউনগ্রেড ppa-purgeকরার জন্য এর ডিফল্ট আচরণ aptitude

ভাগ্যক্রমে, পতাকাটি ppa-purgeগ্রহণ করে -iযার ফলে এটি এর ব্যাকএন্ড হিসাবে পছন্দ apt-getকরে aptitudeহিসাবে বাগ রিপোর্টে নথিভুক্ত ব্যবহার apt-getম্যানুয়ালি invoking একটি কার্যকর বিকল্প নেই aptitude, তাই চলমান ppa-purgeসঙ্গে -iপতাকা উচিত সরানোর / multiarch প্যাকেজ সহ একটি পিপিএ দ্বারা উপলব্ধ সমস্ত প্যাকেজ, downgrading জন্য একটি কার্যকর কার্যসংক্রান্ত হতে

এটা কিভাবে করতে হবে

এখানে বাক্য গঠন:

sudo ppa-purge -i ppa:ppaowner/ppaname

যথারীতি ( -iপতাকাটি যখন ব্যবহৃত না হয় ঠিক তেমন):

  • ppaowner পিপিএর মালিকের সাথে প্রতিস্থাপিত হয়।
  • /ppanamealচ্ছিক। উপস্থিত থাকলে ppanameপিপিএর নাম দিয়ে প্রতিস্থাপন করা হয়। যদি তা না হয় তবে এটি ডিফল্ট হয় ppa

উদাহরণস্বরূপ , ধরুন আমার কাছে qBittorrent এর অস্থির বিল্ডগুলির জন্য পিপিএ ছিল এবং আমি এটি সম্পূর্ণরূপে সরাতে চেয়েছিলাম, স্বয়ংক্রিয়ভাবে qBittorrent এর পরিবর্তে পর্দার আড়াল ব্যবহার করেapt-getaptitude আমার অন্যান্য সফ্টওয়্যার উত্সগুলির মাধ্যমে যে সংস্করণটি পাওয়া যায় তা ডাউনগ্রেড করে । তাহলে আমি দৌড়তাম:

sudo ppa-purge -i ppa:hydr0g3n/qbittorrent-unstable

যেখানে এটি ডকুমেন্টেড

কিছু কারণে, জন্য কয়েক দরকারী অপশন ppa-purgeমধ্যে নথিভুক্ত করা হয় না তার ম্যানুয়েল পৃষ্ঠা সহ -i। তবে আপনি তাদের সম্পর্কে চালিয়ে ppa-purge -h(বা কেবল ppa-purgeকোনও যুক্তি ছাড়াই) তথ্য পেতে পারেন :

ek@Del:~$ ppa-purge -h
Usage: sudo ppa-purge [options] <ppa:ppaowner>[/ppaname]

ppa-purge will reset all packages from a PPA to the standard
versions released for your distribution.

Options:
    -p [ppaname]        PPA name to be disabled (default: ppa)
    -s [host]       Repository server (default: ppa.launchpad.net)
    -d [distribution]   Override the default distribution choice.
    -y          Pass -y --force-yes to apt-get or -y to aptitude
    -i          Reverse preference of apt-get upon aptitude.
    -h          Display this help text

Example usage commands:
    sudo ppa-purge xorg-edgers
    will remove https://launchpad.net/~xorg-edgers/+archive/ppa

    sudo ppa-purge -p xorg-testing sarvatt
    will remove https://launchpad.net/~sarvatt/+archive/xorg-testing

    sudo ppa-purge ppa:ubuntu-x-swat/x-updates
    will remove https://launchpad.net/~ubuntu-x-swat/+archive/x-updates

Notice: If ppa-purge fails for some reason and you wish to try again,
(For example: you left synaptic open while attempting to run it) simply
uncomment the PPA from your sources, run apt-get update and try again.

"অ্যাপটিউড-এট এপটিচিউডের বিপরীত পছন্দ" কিছুটা ক্রিপ্টিক। দিকে তাকিয়ে সোর্স কোড প্রাসঙ্গিক টুকরা ( ppa-purge, আমরা দেখতে পারেন এর মানে হল যে ডিফল্ট আচরণ পছন্দ করা মাত্র একটি শেল স্ক্রিপ্ট, সব পরে) aptitudeথেকে apt-get, এবং -iপতাকা এই অভিরুচি reverses।


সর্বশেষবার যখন আমি পিপিএ-পার্জ করার চেষ্টা করেছি, এটি পিপিএ থেকে মুছে ফেলা প্যাকেজগুলি সরিয়ে দেয় না। এটা কি এখন ও সেই ঘটনা?
লেকেনস্টেইন

@ লেকেনস্টেইন হ্যাঁ, আমি বিশ্বাস করি এটি এখনও এমন একটি বিষয় যা পিপিএ দ্বারা সরবরাহ করা হয় না এমন প্যাকেজগুলি সরিয়ে বা ডাউনগ্রেড ppa-purgeকরবে না "মুছে ফেলা"। তবে আরও প্রামাণিক বা ভাল-ডকুমেন্টেড উত্তর পেতে আপনি এ সম্পর্কিত একটি পৃথক প্রশ্ন পোস্ট করতে চাইতে পারেন।
এলিয়াহ কাগন

সংগ্রহস্থলটি যদি লঞ্চপ্যাডে হোস্ট করা পিপিএ না হয়, তবে অন্যান্য অ-মানক সংগ্রহস্থল হয়, তবে পিপিএ-পুঞ্জ কাজ করবে?
আনোয়ার

1
@ আনোয়ার এটি কার্যকর হলে আমি ইতিবাচক নই, তবে এর পরিবর্তে আপনার সম্পূর্ণ সংগ্রহস্থল URL নির্দিষ্ট করে চেষ্টা করার চেষ্টা করা উচিত ppa:username/path। এছাড়াও আপনি এটি পরিষ্কার করার চেষ্টা করার আগে পিপিএ অবশ্যই সক্রিয় করতে হবে, প্যাকেজগুলি অপসারণের তালিকা আপডেট করার পরে স্ক্রিপ্টটি তত্ক্ষণাত্ অক্ষম করে দিলেও এটি ইতিমধ্যে অক্ষম পিপিএগুলিকে "সন্ধান করবে" না।
ড্রাগন 788

1
@ লেকেনস্টেইন আপনি aptitude search ~oকোনও পিপিএ থেকে অপসারণ করা কিছু (বা এর মাধ্যমে এটি ইনস্টল করা হয়েছিল dpkg -i) মুছতে চাইলে কোনও ইনস্টলেশন উত্স ছাড়াই অনাথ প্যাকেজগুলি সন্ধান করার চেষ্টা করতে পারেন ।
ড্রাগন 788

6

এটি করার জন্য জিইউআইয়ের উপায় এখানে। আশা করি এটি যারা সি এল এলকে পছন্দ করেন না তাদের জন্য সহায়তা করবে। পদক্ষেপগুলি সহজ এবং অনুসরণ করা সহজ।

  1. সিনপ্যাটিক প্যাকেজ ম্যানেজার খুলুন । যদি ইনস্টল না হয় তবে এটির মাধ্যমে এটি ইনস্টল করুন:

    sudo apt-get install synaptic
    
  2. ডাউন-বামে অরিজিন বোতামে ক্লিক করা খুললে । এটি উপরে-বাম দিকে সমস্ত সংগ্রহস্থলের তালিকা তৈরি করবে। নির্দিষ্ট সংগ্রহস্থল নির্বাচন করুন যার জন্য প্যাকেজগুলি অপসারণ করতে হবে। এটি সেই সংগ্রহস্থলের অধীনে সমস্ত প্যাকেজ তালিকাভুক্ত করবে। প্রথম ক্ষেত্র আই, ই এস বা ইনস্টল করা সংস্করণে ক্লিক করুন করা প্যাকেজগুলি দেখানোর ক্ষেত্রটি ।

  3. এখন সরানোর জন্য সমস্ত প্যাকেজ নির্বাচন করুন।

    অপসারণের জন্য চিহ্নিত করার টিপস:

    1. প্রথম প্যাকেজটি নির্বাচন করুন তারপরে Shiftকী ধরে রাখুন এবং আবার সবগুলি চয়ন করতে সর্বশেষ প্যাকেজটি নির্বাচন করুন। তারপরে স্কয়ার বক্সে ডান ক্লিক করুন এবং অপসারণের জন্য চিহ্ন নির্বাচন করুন বা সম্পূর্ণ অপসারণের জন্য চিহ্ন নির্বাচন করুন ।

    2. অথবা যে কোনও প্যাকেজ নির্বাচন করুন এবং সমস্ত নির্বাচন করতে Ctrl+ টিপুন A। তারপরে স্কয়ার বক্সে ডান ক্লিক করুন এবং অপসারণের জন্য চিহ্ন বা সম্পূর্ণ অপসারণের জন্য চিহ্নটি বেছে নিন

এটাই. এটি কোনও সমস্যা ছাড়াই মুছে ফেলবে। চিত্রটি আরও স্পষ্ট করতে আমি সংযুক্ত করেছি। আশা করি এটি সাহায্য করবে। :)

ভাবমূর্তি


5

অন্তত তাদের সন্ধান করতে, পিপিএ অক্ষম করে শুরু করুন এবং চালান apt-get update। তারপরে ইনস্টল করুন apt-show-versionsapt-show-versions | grep 'No available'তারপরে চলমান আপনাকে ইনস্টল করা সমস্ত প্যাকেজগুলির একটি তালিকা দেবে যা আপনার কনফিগার করা সংগ্রহস্থলগুলিতে পাওয়া যায় না। কিছু কমান্ড-লাইন যাদু দ্বারা আপনি সম্ভবত কেবল প্যাকেজের নামগুলি ছড়িয়ে দিতে এবং এগুলিতে প্রেরণ করতে পারেন apt-get remove:

 for i in `apt-show-versions | grep 'No available' | cut -d' ' -f 1` ; do  sudo apt-get remove -y $i ; done

মনে রাখবেন যে এটি থেকে তালিকাটি ফিরে আসবে apt-show-versionsএবং একে একে একে অপসারণ করবেন। এটি যা আবিষ্কার করে তার উপর নির্ভর করে এটি নির্ভরতার কারণে অযৌক্তিক কিছু আনইনস্টল করতে পারে তাই প্রথমে এটি পরীক্ষা করে দেখুন।


ভাল লাগছে, আমি একবার চেষ্টা করে দেখব।
লেকেনস্টেইন

3
আপগ্রেড প্রক্রিয়া নিজেই পিপিএগুলি অটোডিজিয়েবল করে দেবে, যদিও আমি নিশ্চিত যে এটি প্যাকেজগুলির মধ্যে থাকা সমস্ত বামগুলি সরিয়ে ফেলবে না pretty
জর্জি কাস্ত্রো

@ জর্জি: আমি সত্যিই লক্ষ্য করেছি যে পিপিএ অক্ষম আছে (মন্তব্য করেছেন), কিন্তু এটি প্যাকেজগুলি সরিয়ে দেয় না। আমি মনে করি উবুন্টু সংগ্রহস্থল থেকে নতুন সংস্করণ ফাইলগুলি ওভাররাইট করার আগে প্যাকেজগুলি সরিয়ে ফেলা ভাল।
লেকেনস্টেইন

আমি এটি পরীক্ষা করেছি এবং এটি মূল রেপো এবং একটি পিপিএ থেকে প্যাকেজগুলির মধ্যে কোনও পার্থক্য তৈরি করে না। আমার ক্ষেত্রে এটি libvpx0ক্রোমিয়াম-দৈনিক পিপিএর প্যাকেজ ছিল । @ এনজোটিবের উত্তরগুলি এই প্যাকেজটি দেখিয়েছে।
লেকেনস্টেইন

আপনি যদি apt-show-versionsঅ-রুট হিসাবে চালনা করেন sudo apt-show-versions -iতবে এর ক্যাশেটি আপডেট করতে হবে এবং সদ্য সরানো সংগ্রহস্থল / পিপিএগুলি থেকে পরিবর্তনগুলি দেখতে হবে (অন্যথায় এটি কেবল একটি ক্রোন.ডাইলি কাজের মাধ্যমে আপডেট করা হয়েছে)
Xen2050

0

আমি পিপিএ-পার্জ ব্যবহার কঠিন বলে মনে করেছি।

সিস্টেমের অধীনে সিন্যাপটিক প্যাকেজ ম্যানেজার খুলুন, তারপরে সেটিংস, সংগ্রহস্থল নির্বাচন করুন।

আপনি যা চান না তাদের সরান।

সম্পন্ন!


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