Yum এ প্যাকেজ তালিকাভুক্ত করা হয় যা অন্য ইনস্টল করা প্যাকেজের উপর নির্ভর করে


48

আমি RHEL5 এ একটি তৃতীয় পক্ষের আরপিএম প্যাকেজ ইনস্টল করার চেষ্টা করছি যা স্ক্লাইটের 3.4 সংস্করণে নির্ভর করে। ইয়ামের মতে আমি ইতিমধ্যে 3.3.6 ইনস্টল করেছি।

স্কেলাইট ৩.৩. on এর উপর নির্ভর করে ইনস্টল করা প্যাকেজগুলি তালিকাভুক্ত করার কোনও উপায় আছে কি?

উত্তর:


47

আপনি যে আরপিএম বিকল্পটি চান তা হ'ল:

rpm -q --whatrequires sqlite

সম্পাদিত: যুক্ত - অন্যান্য উত্তর / মন্তব্যে আলোচনার ভিত্তিতে ইনস্টল করা

সম্পাদিত: সরানো - ইনস্টল করা কারণ এটি আরপিএমের জন্য একটি অবৈধ বিকল্প


3
এছাড়াও, repoqueryএকটি বিশেষ প্যাকেজের প্রয়োজন এমন সমস্ত প্যাকেজের কাঠামোর মতো একটি দুর্দান্ত গাছ উত্পন্ন করতে ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ:repoquery --pkgnarrow=installed --tree-whatrequires sqlite
পিডিপি

3
আমি এই উত্তরটি বিশ্বাসযোগ্য না - অবশ্যই সেন্টোস x.x এ নয়। পরীক্ষা করতে, চিত্রম্যাগিক ইনস্টল করুন। ইমেজম্যাগিক এটির উপর নির্ভরশীল হিসাবে ওপেনএক্সআর-লিবগুলিও ইনস্টল করা হবে। এখন আরপিএম-কি - চালান ওপেনএক্সএক্সআর-লাইবসকে কী দরকার এবং তার প্রত্যাবর্তনটি "কোনও প্যাকেজের জন্য ওপেনএক্সআর-লিবসের প্রয়োজন হয় না" যা অসম্পূর্ণ। এখন "repoquery -q --installed - व्हाটেক্সেক্সের ওপেনএক্সআর-লাইবস প্রয়োজন" চালান এবং এটি সঠিকভাবে "চিত্রম্যাগিক -0: 6.7.8.9-15.el7_2.x86_64" প্রদান করে। নীচে একটি এলোমেলো লোকের উত্তর ঠিক করুন এখানে সঠিক উত্তর হওয়া উচিত।
পঞ্চো

6
--installedএর জন্য একটি বিকল্প repoqueryতবে এটি অবৈধ rpm
ড্যান রাইস

36

উত্তর

repoquery -q --installed --whatrequires sqlite

ব্যাখ্যা

rpm -q --whatrequires sqlite কেবল প্যাকেজ নামের উপর নির্ভরতা রিপোর্ট করে।

বিপরীতে, repoqueryঅনুসরণ হিসাবে কাজ করে (মানচিত্র থেকে):

   --alldeps
          When used with --whatrequires, look for non-explicit dependencies in addition to explicit ones (e.g. files and Provides  in  addition  to  package  names).
          This is the default.

উদাহরণ

প্যাকেজ নেওয়া যাক libdb

# rpm -q --whatrequires libdb
no package requires libdb

কোনও প্যাকেজ নির্ভর করে না libdb, তাই আমাদের এটিকে মসৃণভাবে মুছে ফেলতে সক্ষম হওয়া উচিত। যাহোক...

# yum remove -y libdb
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package libdb.x86_64 0:5.3.21-19.el7 will be erased
--> Processing Dependency: libdb(x86-64) = 5.3.21-19.el7 for package: libdb-utils-5.3.21-19.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: pam-1.1.8-12.el7_1.1.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-libs-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: libdb-utils-5.3.21-19.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: cyrus-sasl-lib-2.1.26-20.el7_2.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-python-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: python-libs-2.7.5-39.el7_2.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-devel-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: 2:postfix-2.10.1-6.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-build-libs-4.11.3-17.el7.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: iproute-3.10.0-54.el7_2.1.x86_64
--> Running transaction check
. . .
. . .
. . .
Error: Trying to remove "systemd", which is protected
Error: Trying to remove "yum", which is protected

আপনি দেখতে পাচ্ছেন যে কিছু অন্যান্য প্যাকেজ সরাসরি প্যাকেজের উপর নির্ভর করে না, তবে libdb-5.3.so()(64bit)এটির দ্বারা সরবরাহ করা ফাইলের উপর নির্ভর করে।

অবশেষে, প্যাকেজগুলির আসল তালিকা এখানে নির্ভর করে libdb:

# repoquery -q --installed --whatrequires libdb
cyrus-sasl-lib-0:2.1.26-20.el7_2.x86_64
iproute-0:3.10.0-54.el7_2.1.x86_64
libdb-utils-0:5.3.21-19.el7.x86_64
pam-0:1.1.8-12.el7_1.1.x86_64
postfix-2:2.10.1-6.el7.x86_64
python-libs-0:2.7.5-39.el7_2.x86_64
rpm-0:4.11.3-17.el7.x86_64
rpm-build-libs-0:4.11.3-17.el7.x86_64
rpm-devel-0:4.11.3-17.el7.x86_64
rpm-libs-0:4.11.3-17.el7.x86_64
rpm-python-0:4.11.3-17.el7.x86_64

1
এই উত্তর গৃহীত উত্তরের চেয়ে ভাল
পঞ্চো

11

ডিএনএফ (ইয়ামের নতুন সংস্করণ) এর জন্য আপনি রেপোক্রি র‍্যাপার কমান্ড দিয়ে চেষ্টা করতে পারেন:

dnf repoquery --whatrequires sqlite

এটি উপলভ্য না হলে আপনি এটি কমান্ড দিয়ে ইনস্টল করতে পারেন:

dnf -y install dnf-plugins-core

--installed --recursiveআপনার শেষে দরকার তাই এটি কেবল যা ইনস্টল করা আছে কেবল তা ফেরত দেয় এবং সংগ্রহস্থলগুলি থেকে টান না
হ্যাশব্রাউন


3

আমি মনে করি আপনি যা জানতে চান তা হ'ল "স্কেলাইট -৩.৩..6 প্রয়োজন এমন প্যাকেজগুলি কী, তবে স্ক্লাইট -৩.৪.জেজে খুশি হবে না" ... এবং এটি খুঁজে পাওয়ার একমাত্র ভাল উপায় হ'ল এটি চেষ্টা করুন। ভালো লেগেছে:

echo | yum upgrade sqlite

1

ওয়েস হার্ডকার যেমন বলেছিলেন , একটি ভাল অন্তর্নির্মিত পদ্ধতি হ'ল ব্যবহার করা rpm -q --whatrequires <package>। বিষয়টি হ'ল নির্ভরতা রেজোলিউশনের জন্য ক্ষমতাগুলিrpm পরিচালনা করে , কেবল প্যাকেজগুলিতেই নয়, যেমন লিনাক্স বিতরণের ডিবিয়ান / উবুন্টু পরিবারে। অন্যরা যেমন উল্লেখ করেছে, কেবল পুরো কাজটি বলে না, তাই কেন কেউ কেউ ব্যবহার করার পরামর্শ দিয়েছিল । তবে, আরএইচইএল / সেন্টোজ 7 ন্যূনতম (সম্ভবত ডেস্কটপটিও?) এ ডিফল্টরূপে ইনস্টল করা নেই, তাই এটি সবার জন্য নাও পাওয়া যেতে পারে।dpkgrpm -q --whatrequires sqliterepoqueryrepoquery

rpm -q --provides <pkgname>প্যাকেজ সরবরাহ করে এমন সমস্ত ক্ষমতা দেখতে একজন ব্যবহারকারী করতে পারেন , তারপরে rpm -q --whatrequires <capability>ইনস্টলড প্যাকেজগুলির কী কী সক্ষমতার প্রয়োজন তা দেখতে ব্যবহার করুন । এই তথ্যটি একটি বেস বেস ও লাইনার (দৈর্ঘ্যের জন্য এখানে দুটি লাইনে বিভক্ত) ব্যবহার করে সংক্ষিপ্তভাবে অনুসন্ধান করা যেতে পারে:

capabilities=($(rpm -q --provides sqlite | awk -F= '{print $1}'));
for c in "${capabilities[@]}"; do rpm -q --whatrequires "$c"; done

এটি কেবল rpmনিজের মধ্যে অন্তর্নির্মিত বিকল্পগুলি ব্যবহার করে এবং সুতরাং এটির জন্য কোনও অতিরিক্ত প্যাকেজ ইনস্টল করার প্রয়োজন হয় না (উদাঃ yum-utilsCentOS 7 এ, যা প্যাকেজ ধারণ করে repoquery)।

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