কোন আরএমএম প্যাকেজটি আমি খুঁজছি এমন কোনও ফাইল সরবরাহ করে তা কীভাবে খুঁজে পাব?


207

উদাহরণ হিসাবে, আমি এমন একটি mod_files.shফাইল সন্ধান করছি যা সম্ভবত php-develপ্যাকেজটি নিয়ে আসে । আমি অনুমান করেছি যে প্যাকেজটি দিয়ে ফাইলটি yumইনস্টল করবে তবে ফাইলটি আমার ফাইল সিস্টেমে ইনস্টল করা হবে না বলে মনে হচ্ছে।mod_files.shphp-devel x86_64 5.1.6-23.2.el5_3

কোন প্যাকেজ একটি নির্দিষ্ট ফাইল ইনস্টল করে তা আমি কীভাবে জানতে পারি? আমি সন্ধান করছি যেখানে আমি অগত্যা স্থানীয়ভাবে প্যাকেজটি স্থানীয়ভাবে ডাউনলোড করি নি যা আমি খুঁজছি ফাইলটি অন্তর্ভুক্ত থাকতে পারে।

আমি CentOS 5 ব্যবহার করছি।



@ গ্রজেগোর্জ ভাল কথা, আমি সরানোর জন্য একটি ভোট দিয়েছি।
rjh

এখানে আরও ভাল উত্তর দেওয়া হয়েছে: unix.stackexchange.com/a/4706/39281
স্যাম ওয়াটকিন্স

1
@ স্যাম ওয়াটকিন্স উত্তরটি কেবল তখনই কাজ করবে যদি আপনি যে ফাইলটি সন্ধান করছেন তা সরবরাহ করে এমন প্যাকেজটি ইতিমধ্যে সিস্টেমে ইনস্টল করা আছে। যদি প্যাকেজটি ইনস্টল না করা থাকে (যেমন ওপি বলেছেন) তবে আপনি ব্যবহার করতে পারবেন না rpm, আপনাকে ব্যবহার করা দরকার yum
rjh 4'16

উত্তর:


266

এটি একটি পুরানো প্রশ্ন, তবে বর্তমান উত্তরগুলি ভুল আছে :)

আপনি যে ফাইলটি চান তার নিখুঁত পাথ (যা ওয়াইল্ডকার্ডযুক্ত হতে পারে) সহ ইয়াম হোয়াটপ্রোভাইডগুলি ব্যবহার করুন । উদাহরণ স্বরূপ:

yum whatprovides '*bin/grep'

রিটার্নস

grep-2.5.1-55.el5.x86_64 : The GNU versions of grep pattern matching utilities.
Repo        : base
Matched from:
Filename    : /bin/grep

আপনি প্যাকেজে repoqueryউপলব্ধ সরঞ্জামটির আউটপুট এবং গতি পছন্দ করতে পারেন yum-utils

sudo yum install yum-utils
repoquery --whatprovides '*bin/grep'
grep-0:2.5.1-55.el5.x86_64
grep-0:2.5.1-55.el5.x86_64

repoquery প্যাকেজ সামগ্রী, নির্ভরতা, বিপরীত-নির্ভরতা ইত্যাদির তালিকা ইত্যাদির মতো অন্যান্য প্রশ্নগুলি করতে পারে


199

ইতিমধ্যে ইনস্টল করা ফাইলটির প্যাকেজটির মালিকানা রয়েছে (বা সরবরাহ করা):

rpm -qf myfilename

4
এই কমান্ডটি ইয়াম হোয়াটপ্রোভাইডগুলির চেয়ে আরও দক্ষ বলে মনে হচ্ছে - সম্ভবত ধীর সংগ্রহস্থলগুলির থেকে আপডেট পাওয়ার দরকার নেই।
80x25

এই সংস্করণটি রেডহ্যাট ভিত্তিক ডিস্ট্রোতেও কাজ করে যা এখনও আরপিএম এর যেমন
ওপেনসুএস

5
এটা আমার মনে হচ্ছে যে rpm -qf <filename>সেরা নির্ধারণের প্যাকেজ একটি ইনস্টল অ্যাপ্লিকেশন (যেহেতু এটি কি বর্তমান ইস সংগ্রহস্থলের ক্যাশের মধ্যে হয় থেকে আলাদা হতে পারে) প্রদান করে জন্য উপযুক্ত, এবং yum whatprovides <filename>শ্রেষ্ঠ নির্ধারণের যা প্যাকেজের মাধ্যমে একটি করা-ইনস্টল করা এখনো টু উপলব্ধ জন্য উপযুক্ত আবেদন। প্রত্যেকেরই নিজস্ব উদ্দেশ্য রয়েছে।
স্টকবি

তদ্ব্যতীত, yum whatprovides ...অ্যাপ্লিকেশনটি একটি রুট প্যাকেজ হলেই মূলের প্রয়োজন (যেমন এটি এতে থাকে /sbin)। তবে, rpm -qf ...থেকে আরপিএমএস পড়ার জন্যও মূলের প্রয়োজন /sbin। অতএব, আমি প্রস্তাব দিচ্ছি যে মূল প্রয়োজনীয়তাগুলি উভয় পদ্ধতির জন্য কার্যত সমতুল্য।
স্টকবি

1
যে কেউ এই কমান্ডটি ব্যবহার করছেন, দয়া করে নোট করুন যে আপনাকে কেবল ফাইলের নাম নয়, পুরো ফাইল পাথ + ফাইলের নাম ব্যবহার করতে হবে।
আশীষ 11'18

31

সর্বাধিক জনপ্রিয় উত্তরটি অসম্পূর্ণ:

যেহেতু সাধারণত এই অনুসন্ধানটি কেবল ইনস্টল করা প্যাকেজগুলি থেকে ফাইলগুলির জন্য সম্পাদিত হবে, তাই সমস্ত বাহ্যিক রেপো অক্ষম করে ইয়ম হোয়াটপ্রোভিডগুলি দ্রুত ঝাপটায় তৈরি করা হয় (অন্তর্নিহিত "ইনস্টলড" রেপো অক্ষম করা যায় না)।

yum --disablerepo=* whatprovides <file>

4
এই ক্ষেত্রে, তবে, ওপি বিশেষত একটি অনুপস্থিত ফাইল সন্ধান করছে যা সিস্টেমে ইনস্টল করা হয়নি , এমনকি প্যাকেজটি ইনস্টল করার পরেও তার মনে হয়েছে যে এটি থাকবে, তাই সে ব্যবহার করতে পারবেন না--disablerepo=*
র্যান্ডাল

4

আপনি http://www.rpmfind.net এ যান এবং ফাইলটি অনুসন্ধান করুন।

আপনি বিভিন্ন ডিস্ট্রো এবং সংস্করণের জন্য ফলাফল পাবেন তবে সম্ভবত ফেডোরা এবং / অথবা সেন্টোসও পপ আপ হয়ে যাবে এবং আপনি প্যাকেজের নামটি yum দিয়ে ইনস্টল করতে পারবেন


এই ওয়েবসাইট অফলাইন!
পিটার

1
ওয়েবসাইটগুলি ফাইলগুলি অনুসন্ধান করার জন্য উপস্থিত হয় না; অনুসন্ধান শব্দটির সাথে কেবল প্যাকেজের নাম।
jww

1
@jww ফাইল অনুসন্ধান করা আমার পক্ষে কমপক্ষে কাজ করে। দস্তাবেজগুলি যেমন বলেছে, আপনি এক্সিকিউটেবলের জন্য তাদের একক পাথের নাম বা নিখুঁত পথের নাম সহ কোনও ফাইল অনুসন্ধান করতে পারেন।
টি

4

আপনি ইন্টারনেটের সাথে সংযুক্ত থাকাকালীন প্যাকেজটি সন্ধান করা (সংগ্রহস্থল) তবে সহজ যখন আপনি কেবল রেডহাট বা সেন্টোস ডিভিডি-র ভিতরে আরপিএম প্যাকেজগুলিতে অ্যাক্সেস পেয়ে থাকেন (যখন আমার কোনও সার্ভার পুনরুদ্ধার করতে হয় এবং আমার একটি অ্যাপ্লিকেশন প্রয়োজন তখন এটি আমার সাথে প্রায়শই ঘটে) আমি প্রস্তাব দিই নীচের কমান্ডগুলি ব্যবহার করে যা ইন্টারনেট এবং সংগ্রহস্থলগুলি থেকে সম্পূর্ণ স্বাধীন। (সম্ভবত আপনার ডিভিডিতে প্রচুর আনইনস্টল প্যাকেজ রয়েছে)। ধরা যাক যে আপনি Package / Cent_os_dvd এ প্যাকেজ ফোল্ডারটি মাউন্ট করেছেন এবং আপনি এমন একটি প্যাকেজ সন্ধান করছেন যা "বর্জ্য" সরবরাহ করে তবে আপনি চালাতে পারেন:

for file in `find ~/cent_os_dvd/ -iname '*.rpm'`;  do rpm -qlp $file |grep '.*bin/semanage';  if [ $? -eq 0 ]; then echo "is in";echo $file  ; fi;  done


0

আপনি এখানে একইভাবে করতে পারেন তবে আপনার প্যাকেজটি দিয়ে। আমার ক্ষেত্রে, এটি ছিলlsb_release

চালান: yum whatprovides lsb_release

প্রতিক্রিয়া:

redhat-lsb-core-4.1-24.el7.i686 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-24.el7.x86_64 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-27.el7.i686 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-27.el7.x86_64 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release`

ইনস্টল করতে চালান: yum install redhat-lsb-core

প্যাকেজের নাম নাম্বার এবং সিস্টেমের ধরণ ছাড়াই থাকা উচিত যাতে ইয়াম প্যাকেজকারী তার জন্য সবচেয়ে ভাল কি তা চয়ন করতে পারে।

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