টিএল; ডিআর বা "স্রেফ আমার পিআই"
sudo apt-get remove --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --purge
( apt-get autoremove --purge
কোনও অনাথ না থাকা পর্যন্ত পুনরাবৃত্তি করুন )
অারোও ব্যাখ্যা
যদি একটি প্যাকেজ foo অন্য প্যাকেজ libfoo এর উপর নির্ভর করে এবং আপনি libfoo প্যাকেজটি সরিয়ে ফেলেন তবে নির্ভরশীল ( foo )ও সরানো হবে। কারণ ফু রয়েছে নির্ভর উল্লেখ লাইন libfoo , এটা foo বিন্যাস ত্যাগ করার যদি libfoo সরানো হয়েছে ভাঙ্গা হবে। বিপরীতটি সত্য নয়: foo অপসারণ করলে স্বয়ংক্রিয়ভাবে libfoo মুছবে না । অন্য একটি প্যাকেজ এক্সফু লিবিফুর উপরও নির্ভর করতে পারে , সুতরাং অ্যাপ্লিকেশন কেবল এটি সরিয়ে ফেলবে না (যদিও অ্যাপ্লিকেশন এটি কেবলমাত্র foo ইনস্টল করার পার্শ্ব-প্রতিক্রিয়া হিসাবে ইনস্টল করা থাকলে তা সনাক্ত করবে) এবং আপনি যদি এটি জিজ্ঞাসা করেন তবে এটি স্বয়ংক্রিয়ভাবে সরানোর প্রস্তাব দিন, অন্য কেউ এখনও এর উপর নির্ভর করে না)
মেটা প্যাকেজ নির্ভর একই ভাবে যে অন্যান্য প্যাকেজ একটি সেট উপর foo উপর নির্ভরশীল libfoo , তাই আপনি যখন একটি মেটা-প্যাকেজটি মুছে ফেলুন, আর সামান্য সাধারণত মুছে ফেলা হবে। উদাহরণস্বরূপ, দুটি মেটা-প্যাকেজ থাকতে পারে যা xterm (lxsession এবং xfsession সম্ভবত) এর উপর নির্ভর করে তবে একটি বা উভয়ই আনইনস্টল করে xterm আনইনস্টল করবে না কারণ xterm lxsession বা xfsession ছাড়াই ভাঙা হয়নি। মেটা-প্যাকেজগুলি সাধারণত নির্ভরতা গাছের শীর্ষে থাকে নীচে নয় এবং কয়েকটি জিনিস সরাসরি মেটা-প্যাকেজগুলির উপর নির্ভর করে। মেটা-প্যাকেজগুলি প্রাথমিকভাবে প্যাকেজগুলির একটি সেট সেট ইনস্টল করার জন্য প্রাথমিকভাবে সুবিধাজনক উপায় সরবরাহ করে তবে তারা আনইনস্টল সরঞ্জামগুলি নয়।
সুতরাং, যদি আপনি দগ্ধ করতে চান সবকিছু যে, X11 উপর নির্ভর করে, আপনি libx11 লাইব্রেরি যে সব X11 অ্যাপস বেস set target করতে হবে আবশ্যক পরিণামে উপর নির্ভর:
sudo apt-get remove --dry-run --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --dry-run --purge
এটি শেষ পর্যন্ত libx11 -। * এর উপর নির্ভর করে এমন সমস্ত কিছু সরিয়ে ফেলবে (*), এবং কোনও এক্স 11 প্রোগ্রামের নির্ভরতা হিসাবে ইনস্টল হওয়া কোনও প্যাকেজ সরিয়ে ফেলবে এমনকি যদি তারা সরাসরি এক্স 11-এর উপর নির্ভর করে না (সিইউপিএস এবং ঘোস্টস্ক্রিপ্ট সাধারণত ইনস্টল করা থাকে) ডেস্কটপ এনভায়রনমেন্ট ইনস্টল করার পার্শ্ব-প্রতিক্রিয়া হিসাবে)। দ্বিতীয় আদেশটি পরবর্তী এতিমদের অপসারণ করবে যতক্ষণ না কেউ না থাকে। আপনি যদি এই পদক্ষেপটি পরে করতে চান বা এটি কিছু না করতে চান তবে "--আউটো-রিমুভ" সরান, বা জিইউআই বন্ধ করার পরে প্যাকেজগুলি নিজেই যুক্ত করুন back
আপনি যে প্যাকেজগুলি অপসারণ করতে চান না তা মুছে ফেলবে না কিনা তা যাচাই করে নেওয়ার পরে আসলে অপারেশন করার জন্য --dry- রান বিকল্পটি সরান ))
আমি পার্শ্ব প্রতিক্রিয়াগুলি পরিষ্কার এবং পরিষ্কার করতে পছন্দ করি এবং প্রয়োজনীয় হিসাবে এগুলি আবার যুক্ত করতে চাই। এছাড়াও, আমি এগিয়ে গিয়েছিলাম এবং এটি আমার নিজের পাইতে পরীক্ষা করেছি এবং এটি খুব স্পার্টান তবে ক্রিয়ামূলক সার্ভারে পুনরায় চালু হয়েছে। :)
কেন একটি অপসারণ কিছু ইনস্টল করে ?
উপরের কৌশলটি উল্লিখিত সমস্যা সমাধান করে, তবে প্যাকেজগুলি ইনস্টল হওয়ার কারণে অপসারণ অপারেশনের ফলাফল কেন তা নিয়ে কৌতূহল রয়েছে ।
প্রতিটি প্যাকেজ ম্যানেজারের হৃদয়ে একরকম একটি সন্তুষ্টিযোগ্য সমাধানকারী । আপনি যখন কোনও প্যাকেজ ম্যানেজারকে কিছু প্যাকেজ ইনস্টল করতে, কিছু প্যাকেজ অপসারণ বা কিছু প্যাকেজ আপগ্রেড করতে বলেন, আপনি যা যা করতে বলছেন তা হ'ল পরবর্তী প্যাকেজগুলির একটি সেট সেট করে সফ্টওয়্যার ইনস্টলেশন করার জন্য প্রয়োজনীয় কাঙ্ক্ষিত অবস্থার সমাধান করা। এই সমাধান করতে পারে ,, / উহার নির্দিষ্ট প্যাকেজ (সামঞ্জস্য স্তর), অথবা একটি সমন্বয় আপগ্রেড অতিরিক্ত প্যাকেজ (নির্ভরতা) ইনস্টল বিদ্যমান প্যাকেজ (দ্বন্দ্ব, বিরতি) সরানোর downgrading অন্তর্ভুক্ত। সুতরাং, এটি সামান্য বিপরীতমুখী হওয়ার পরেও সলভার নির্ধারণ করে যে অন্যান্য প্যাকেজগুলি অপসারণের জন্য কিছু প্যাকেজ ইনস্টল করা দরকার, এটি নিখুঁত জ্ঞান করে তোলে। এটি প্যাকেজ পরিচালকরা যে দুষ্টু নির্ভরতা পরিচালনা সমস্যাটি সমাধান করেন।
একটি কংক্রিট উদাহরণ: ইতিমধ্যে ইনস্টল করা জাভা অ্যাপ্লিকেশনগুলির একটি সেট দেওয়া, তারা সকলেই একটি জাভা সামঞ্জস্যপূর্ণ রানটাইমের উপর নির্ভর করে যা বর্তমানে ওপেনজেডকে -7-জেয়ার হিসাবে ঘটে । এর পরে আপনি একটি নতুন জাভা সরঞ্জাম যা একটি ঘোষণা ইনস্টলেশনের জন্য সমাধান করতে প্যাকেজ ম্যানেজার জিজ্ঞেস দ্বন্দ্ব সঙ্গে openjdk-7-JRE কিন্তু কাজ করে দিয়ে ওরাকল-7-JRE (উভয় প্যাকেজের জেনেরিক প্রদান একটি জাভা-7-রানটাইম )। সমাধানকারী একটি প্রস্তাব করবে অপসারণ এর openjdk-7-JRE এবং ইনস্টল এর ওরাকল জাভা-7-JREবিদ্যমান প্যাকেজগুলি না ভেঙে নতুন প্যাকেজ ইনস্টল করার জন্য আপনার কাঙ্ক্ষিত অবস্থার সমাধান হিসাবে।
এই সালে নির্দিষ্ট মামলা, xterm একটি প্যাকেজ যে প্রদান করে একটি ভার্চুয়াল নির্ভরতা নামক এক্স-টার্মিনাল-এমুলেটর ( xterm , lxterminal এবং aterm সব প্রদান একটি এক্স-টার্মিনাল-এমুলেটর ,) তাই এটি যে সরানোর সময় সম্ভবত lxterminal (একটি অংশ হিসাবে LXDE সরানোর), সমাধানকারী একটি বিদ্যমান ইনস্টল প্যাকেজ (পাওয়া ট্রান্সকোড একটি সম্ভাব্য উদাহরণ হিসাবে) যে প্রয়োজনীয় কিছু ধরনের এক্স-টার্মিনাল-এমুলেটর , তাই সমাধানকারী xterm ইনস্টল করতে বেছে নেওয়া হয়েছে (যা প্রয়োজন libutempter0 এবং xbitmaps, অন্য প্যাকেজগুলি ইনস্টল করার জন্য ব্যাখ্যা করে) অন্যথায় ভাঙ্গা নির্ভরতা মেটাতে। প্যাকেজ ডাটাবেস না দেখে, আমি অনুমান করব যে এটি সম্ভবত সম্ভাব্য পরিস্থিতি।
বর্তমানে xterm (বা বিকল্প) এর উপর নির্ভরশীল প্যাকেজগুলি আবিষ্কার করতে, apt-cache rd depends কমান্ডটি ব্যবহার করুন ( কেবলমাত্র ইনস্টল হওয়া প্যাকেজগুলির সীমাতে --installed সুইচ ব্যবহার করে ):
$ apt-cache --installed rdepends xterm
xterm
Reverse Depends:
|xorg
clusterssh
|xinit
|tk8.5
|tk8.4
|transcode
বিকল্প অক্ষর '|' দিয়ে শুরু হওয়া নির্ভরতাগুলি এর অর্থ হ'ল প্যাকেজটি এক্সটার্ম বা এটি সরবরাহ করে এমন কোনও কিছুর উপর নির্ভর করে (যেটি এই ক্ষেত্রে এক্স টার্মিনাল-এমুলেটর )। Clusterssh প্যাকেজ উপর নির্ভর করে xterm স্পষ্টভাবে , এবং একটি বিকল্প জন্য অনুমতি দেয় না। এটি প্যাকেজগুলির সংক্ষিপ্ত তালিকা যা এক্সটার্মের প্রয়োজন হয়।
দেওরফানের কী হবে?
২০১০ সালে 'অটোরমোভ' কার্যকারিতার মাধ্যমে এতিমদের ট্র্যাকিংয়ের কার্যকারিতাটি অ্যাপট-গেটে সংযুক্ত করা হয়েছিল ( দেবিয়ান বাগ 582791 ) বেশিরভাগ অপ্রয়োজনীয় এবং মূলত অপ্রচলিত রেন্ডারিং । ডিবোর্ফান এবং এটির মতো অন্যান্য সমাধানগুলির বিপরীতে, সরাসরি প্যাকেজগুলি স্পষ্টভাবে ইনস্টল করা হয়েছিল এবং কোন প্যাকেজগুলি স্পষ্টভাবে ইনস্টল হওয়া প্যাকেজের পার্শ্ব-প্রতিক্রিয়া বা নির্ভরতা হিসাবে ইনস্টল করা হয়েছিল তা সরাসরি পরীক্ষা করে । উদাহরণস্বরূপ, কোনও প্রশাসক যদি foo ইনস্টল করেন, তবে libfoo পার্শ্ব-প্রতিক্রিয়া হিসাবে ইনস্টল করা হবে এবং যথাযথভাবে স্বয়ংক্রিয়ভাবে স্থান গ্রহণ করবে , foo অপসারণের সময় অটোরেমোভ (বা --আউটো-রিমুভ) নির্দিষ্ট করা থাকলে libfoo অপসারণ করবে।
দেবরফান দ্বারা গৃহীত পদ্ধতি অনুমানের সংগ্রহ। উদাহরণস্বরূপ, অনুমান যে একটি ইনস্টল গ্রন্থাগার করে একটি নির্ভরশীল নেই একটি অনাথ হওয়া আবশ্যক: যদি libfoo ইনস্টল করা আছে, কিন্তু কেউই foo বিন্যাস কিংবা xfoo হয়, deborphan সিদ্ধান্ত নিতে পারে এটা একটি অনাথ হতে হবে। এখানে একটি ব্যর্থতা মোড হ'ল লাইব্রেরিগুলি বিশেষত তাদের প্রদত্ত সরঞ্জামগুলির জন্য ইনস্টল করা থাকতে পারে (xbllml এর জন্য libxML2 এটি libxML2-utils এ পুনরায় বিতরণ করার আগে) বা উন্নয়নের উদ্দেশ্যে সহজলভ্য। এ জাতীয় প্যাকেজগুলি এতিম নয় । অধিকন্তু, ডিওরফান লাইব্রেরিগুলিতে ফোকাস করে, তাই এটি ট্র্যাক করে এমন অনেকগুলি নন-লাইব্রেরি এতিমকে মিস করে (অপ্রচলিত প্যাকেজ বনাম এতিম প্যাকেজগুলি) ।
munin
কোনও কারণে সরিয়েও ফেলেছিল তবে আমি পরে খুব সহজেই এটি পিছনে রাখতে পারি।