আমি দেখতে পাচ্ছি কেন একটি প্যাকেজ ইনস্টল করা হয়?


111

নির্দিষ্ট প্যাকেজের জন্য, কেন এটি ইনস্টল করা হয়েছে তা আমি জানতে পারি?

সুতরাং, আমি দেখতে পাচ্ছি বা এটি ম্যানুয়ালি ইনস্টল করা আছে, বা এটি অন্য প্যাকেজের নির্ভরতা হিসাবে ইনস্টল করা আছে? বা এটি ডিস্ট্রোর অংশ হিসাবে ইনস্টল করা আছে?


এটি এই প্রশ্নের (একটি অংশ) সম্পর্কিত , বিশদটির জন্য এই উত্তরটি দেখুন see
কুশিক

: 2017 এখানে অনেক ভালো উত্তর askubuntu.com/questions/128524/...
Lambart

উত্তর:


107

একটি দ্রুত সমাধান হল টার্মিনালে নিম্নলিখিত কমান্ডটি প্রবেশ করানো:

aptitude why $package

বা, যদি আপনি কেবল চূড়ান্ত কারণটিতে আগ্রহী হন:

aptitude why $package --show-summary

প্যাকেজটির নামের সাথে প্যাকেজটি প্রতিস্থাপন করুন এবং আপনাকে aptitudeপ্রথমে প্যাকেজ ইনস্টল করতে হবে ।

এখানে আপনি পেতে পারেন আউটপুট aptitude why aspell --show-summary

Packages requiring aspell:
  inkscape

আরও বিশদ জন্য আপনি চালানো হবে aptitude why aspell। আপনি নীচে উদাহরণ আউটপুটটি পড়তে পারেন: "আপনি ম্যানুয়ালি ইনস্টল করেছেন inkscape, যা প্রয়োজন libgtkspell, যা প্রয়োজন libenchantic2a, যা প্রয়োজন aspell"। ( iচিহ্নিতকারী ইনস্টল করা প্যাকেজগুলি নির্দেশ করে; Aচিহ্নিতকারীগুলি স্বয়ংক্রিয়ভাবে ইনস্টল হওয়া প্যাকেজগুলি নির্দেশ করে))

i   inkscape       Depends libgtkspell0 (>= 2.0.10)                                                                    
i A libgtkspell0   Depends libenchant1c2a (>= 1.6.0)                                                                   
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en      Depends aspell (>= 0.60.3-2)

অবশেষে, নিম্নলিখিত কমান্ড

apt-cache rdepends --installed $package

আপনার কম্পিউটারে ইনস্টল করা অন্যান্য প্যাকেজগুলি তালিকাবদ্ধ করে যা সরাসরি $ প্যাকেজের উপর নির্ভর করে । আপনি --recurseসরাসরি বা অপ্রত্যক্ষভাবে নির্ভর করে এমন সমস্ত প্যাকেজ তালিকাবদ্ধ করতে বিকল্প যুক্ত করতে পারেন ।



1
@ এমডিপি আপনাকে ধন্যবাদ জানাতে ধন্যবাদ জানায়। ম্যাভেরিকের সাথে এটি খারাপ, শুধুমাত্র লাইভসিডি আইসো চিত্রের কিছু জায়গা বাঁচাতে। তবে এটি একটি অমূল্য সরঞ্জাম, এবং আমি ছাড়া যাব না।
এনজোটিব

15
apt-cache rdepends --recurse $packageসম্ভবত অনেকগুলি প্যাকেজ দেয়। আমি --installedইনস্টলড প্যাকেজগুলিতে সীমাবদ্ধ করার জন্য বিকল্প যুক্ত করব । -iবিকল্প প্রাক নির্ভরতা এবং নির্ভরতা সম্পর্কিত প্যাকেজগুলিতে সীমাবদ্ধ করে। তবে একটি প্যাকেজ ইনস্টল করা হতে পারে কারণ এটি অন্য প্যাকেজ দ্বারা প্রস্তাবিত। এই জাতীয় সুপারিশ সম্পর্কিত প্যাকেজগুলি অন্তর্ভুক্ত করার জন্য, আমি মনে করি এটি সঠিকভাবে দেবে:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
জার্নো

4
@ জার্নোর জ্বলনের সামান্য সংখ্যক সমতুল্য, ধরে নেওয়া যাক আপনি ব্রেস বা অন্য শেলের উপর ব্রেস প্রসারিত apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
হ'ল

30

একটি নির্দিষ্ট প্যাকেজ কেন ইনস্টল করা হয়েছিল তার একটি দ্রুত এবং সংক্ষিপ্ত যুক্তি টার্মিনাল ( Applications -> Accessories -> Terminal) এ নিম্নলিখিত কমান্ডটি টাইপ করে খুঁজে পাওয়া যাবে :

aptitude why <package-name>

আপনার আগ্রহী প্যাকেজটির নামটি প্রতিস্থাপন করুন example উদাহরণস্বরূপ, টাইপিংয়ের aptitude why libgoo-canvas-perlফলে নিম্নলিখিতটি আউটপুট দেয়:

i   shutter Suggests libgoo-canvas-perl

এর মূল অর্থ এই যে প্যাকেজটি shutterএই ক্ষেত্রে libgoo-canvas-perlইনস্টল করার পরামর্শ দিয়েছে । তারপরে টাইপ করে aptitude why shutterআমি নির্ভরশীলতা চেইনটি উপরে যেতে পারি।

তবে, একটি সতর্কতা আছে। আমি প্রায়শই লক্ষ্য করি যে পরিস্থিতিটির প্রকৃত ঘটনাটি নাও হতে পারে তার জন্য উপযুক্ততাটি সবচেয়ে প্রশংসনীয় ব্যাখ্যা খুঁজে পেয়েছে, তবে তবুও আপনাকে আরও সন্ধান করার জন্য একটি ধারণা দেবেন।

আমার ক্ষেত্রে, shutterপ্রস্তাব দেয় libgoo-canvas-perl- তবে প্রস্তাবিত প্যাকেজগুলি স্বয়ংক্রিয়ভাবে ডিফল্টরূপে ইনস্টল হয় না। তবুও, এটি আমার "স্মৃতি" অভিজ্ঞতার স্মৃতি জাগিয়ে তোলে shutterযা স্ক্রিনশটগুলি সম্পাদনা করতে সক্ষম না হওয়ায় আমাকে নিজেই ইনস্টল করতে পরিচালিত করেছিলligbgoo-canvas-perl

পরিশেষে, নিম্নলিখিত কমান্ডটি চালিয়ে আপনি প্যাকেজটি স্বয়ংক্রিয়ভাবে ইনস্টল করা হয়েছে কিনা (অর্থাত প্যাকেজ পরিচালন ব্যবস্থার দ্বারা সিদ্ধান্ত নেওয়া অন্যান্য প্যাকেজগুলির যে নির্ভরতা এবং আপনি যে প্যাকেজ ইনস্টল করতে বলেছিলেন সেগুলি দেখতে বাধ্যতামূলক হিসাবে সিদ্ধান্ত নেওয়া হয়েছে) তা জানতে পারবেন following

aptitude show <package-name>

এটি নীচের মতো একটি লাইন আউটপুট দেবে (আউটপুটটির তৃতীয় লাইন):

Automatically installed: no

আরও তথ্যের জন্য রান করুন info aptitude(একটি টার্মিনালে) বা প্রবণতা উইকি পৃষ্ঠাতে যান

খুঁজে বের করতে যখন একটি নির্দিষ্ট প্যাকেজ ইনস্টল করা ছিল, সেখানে 2 বিকল্প রয়েছে:

  1. সিনাপটিক প্যাকেজ ম্যানেজার সমস্ত ক্রিয়াকলাপের ইতিহাস লগ বজায় রাখে। ইতিহাস লগ ফাইলটি দেখতে ফাইল মেনু থেকে ইতিহাস চয়ন করুন। Installইনস্টলেশন সংক্রান্ত সমস্ত এন্ট্রি তালিকার জন্য আপনি (কেসটি মনে রাখবেন) অনুসন্ধান করতে পারেন । তবে এটি কেবল সিনাপটিক ব্যবহার করে ইনস্টল হওয়া প্যাকেজগুলি প্রদর্শন করবে
  2. টার্মিনালে নিম্নলিখিত কমান্ডটি চালান। এটি ইনস্টলেশন ইতিহাসের এন্ট্রিগুলির জন্য dpkg লগগুলি সন্ধান করবে। তবে, এই লগগুলির কতটুকু রক্ষণাবেক্ষণের সীমাবদ্ধতা রয়েছে তাই আপনি যে প্যাকেজটি সন্ধান করছেন এটি যদি দীর্ঘকাল আগে ইনস্টল করা থাকে তবে আপনি এটি সন্ধান করতে পারেন না। আরও বিশদ এখানে

    zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
    

1
আপনি যদি কোনও প্যাকেজ ইনস্টল বা আপগ্রেড করেছেন তা যদি জানতে চানzcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
ক্রিস গুড

@ ক্রিস গুড: আপনি কি স্মার্ট উক্তি ব্যতীত আপনার মন্তব্যটি পুনরায় প্রবেশ করতে পারবেন, সুতরাং এটি অনুলিপি / চিরস্থায়ী?
ড্যান ড্যাসক্লেস্কু

1
যে ইশারা জন্য ধন্যবাদ। সঠিক ডাবল উক্তি সহ: zcat -f /var/log/dpkg.log* | গ্রেপ -i প্যাকেজনাম | উদাহরণস্বরূপ "\ ইনস্টল \ | \ আপগ্রেড \"
ক্রিস গুড

12

হ্যাঁ, আপনি এটি করতে পারেন, এবং এটি একটি বাস্তব সুস্পষ্ট আদেশ। ধরে নিই যে আপনি প্রবণতা ইনস্টল করেছেন, আপনি একটি টার্মিনাল উইন্ডো বিজ্ঞাপন প্রকারটি খুলতে পারেন:

aptitude why package

এটি সেই নির্দিষ্ট প্যাকেজের উপর নির্ভর করে এমন প্যাকেজগুলির একটি তালিকা দেয়। যদি এটি ম্যানুয়ালি ইনস্টল করা প্যাকেজ হয় তবে এটি এমন কিছু বলবে যে "প্যাকেজ ইনস্টল করার কারণ খুঁজে পাওয়া সম্ভব ছিল না"।


5

এখানে একটি সহজ উপায় যা নির্ভর করে না aptitude, যা 10.10 ডিফল্টরূপে শিপ করে না।

গ্রাফিক্যালি

সিন্যাপটিক খুলুন এবং এটি অপসারণ করার চেষ্টা করুন।

যদি কোনও ডায়ালগ আপনাকে অন্যান্য প্যাকেজগুলি মুছে ফেলার জন্য জিজ্ঞাসা করে, তবে এটি সেই প্যাকেজগুলি যা (পুনরাবৃত্তভাবে) এর উপর নির্ভর করে।

টার্মিনাল থেকে

apt-get remove package_name_goes_here -s

আবার, প্যাকেজগুলির ফলে যেগুলি মুছে ফেলা হবে সেগুলি হ'ল এটি (পুনরুক্তি) এর উপর নির্ভর করে। ( -sপ্যারামিটারটি apt-getআসলে প্যাকেজটি অপসারণ করতে বলে না))


2
এটি একটি ঝুঁকিপূর্ণ সমাধান কারণ এটি প্যাকেজটি এবং সমস্ত নির্ভরতা যদি তারা ভুল ক্লিক করে তবে এটি সরিয়ে ফেলতে পারে।
ক্যালিকারালবটস

1
@ ইমাজিনিআরবোটস, এটি প্রচুর ভুল ব্যবহার। (আপনাকে প্রথম কথোপকথনে ওকে ভুল ক্লিক করতে হবে, তারপরে প্রয়োগ করুন, তারপরে কনফার্মেশন ডায়ালগের উপরে আবার ঠিক আছে)) টার্মিনাল সংস্করণের y/Nজন্য আপনার টাইপ করার পরে একটি অতিরিক্ত নিশ্চয়তার অনুরোধও রয়েছে -s। আমি তবে একটি সতর্কতা যুক্ত করেছি।
Badp

1
-1 প্যাকেজের বৈশিষ্ট্যগুলি দেখার সময় নির্ভরশীলতা ট্যাবের অধীনে সিন্যাপটিকের মধ্যে এই তথ্যটি উপলব্ধ।
আলেকজান্দারপাস

@ অ্যালেক্স ভুল - সেই ডায়ালগ আপনাকে জানায় না যে সেই প্যাকেজটি ম্যানুয়ালি বা স্বয়ংক্রিয়ভাবে ইনস্টল করা আছে। PS: ইনবক্সের কাউন্টার রিসেট করুন, আরও চেষ্টা করুন।
29p

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