আরপিএম নির্ভরতা কীভাবে তালিকাভুক্ত করবেন?


36

আমাদের প্রোডাকশন সার্ভারটি সেন্টোস রিলিজ 5.2 (ফাইনাল) চলছে।

ইতিমধ্যে ইনস্টল হওয়া আরপিএম প্যাকেজের সমস্ত নির্ভরতা আমি কীভাবে দেখছি / পাব / তালিকা করব ?

উদাহরণস্বরূপ: এসকিউলাইট v3.3.6 ইতিমধ্যে সার্ভারে ইনস্টল করা আছে। আমি এই বিশেষ প্যাকেজের সমস্ত নির্ভরতা দেখতে চাই।

কমান্ডের আউটপুট এখানে দেওয়া হল: rpm -qa |grep sqlite

python-sqlite-1.1.7-1.2.1
sqlite-3.3.6-2
sqlite-3.3.6-2

এছাড়াও, কেন এটি sqlite-3.3.6-2এখানে 2 টি এন্ট্রি তালিকাবদ্ধ করছে ?

উত্তর:


28
  1. rpm -q --requires somepackagehere

  2. একটি হ'ল i?86প্যাকেজ, অন্যটি x86_64প্যাকেজ।


আমার ওএস 64৪-বিট। 2 আর্কিটেকচার প্যাকেজগুলি কি একই সার্ভারে সহ-বিদ্যমান থাকতে পারে? একই সময়ে ২ টি আর্কিটেকচার প্যাকেজ থাকার উদ্দেশ্য / প্রয়োজন কী?
জ্ঞানাম

2
আরএইচ- / ফেডোরা থেকে প্রাপ্ত ডিগ্রোগুলি মাল্টিআরচকে সমর্থন করে , যার মাধ্যমে "বিভিন্ন-তবু-সমান-যথেষ্ট" খিলানের অন্তর্ভুক্ত একাধিক প্যাকেজ একসাথে থাকতে পারে যাতে উভয়ই খিলানের জন্য নির্মিত এক্সিকিউটেবলকে চালনার অনুমতি দেয়।
Ignacio Vazquez-Abram

দুর্ভাগ্যক্রমে এর জন্য প্যাকেজটি ইতিমধ্যে স্থানীয়ভাবে ইনস্টল করা প্রয়োজন: \
রজারডপ্যাক

@ আরগারডপ্যাক: আচ্ছা, হ্যাঁ ঠিক এটাই প্রশ্নটি চেয়েছিল।
Ignacio Vazquez-Abram

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

34

yum deplistকমান্ড আপনাকে দেখাবে যা RPM এর নির্ভরতা হয়, এখানে একটি উদাহরণ expect(এই এমনকি যদি আপনি এখনো প্যাকেজ স্থানীয়ভাবে ইনস্টল না কাজ করবে) প্যাকেজ:

# yum deplist expect
..
..
package: expect.i386 5.43.0-5.1
 dependency: libc.so.6
  provider: glibc.i686 2.5-49
  provider: glibc.i686 2.5-49
 dependency: libtcl8.4.so
  provider: tcl.i386 8.4.13-4.el5

এই আদেশটি কাজ করছে না। আমি কি কিছু মিস করছি বা আপনার আদেশে কিছু অনুপস্থিত আছে?
জ্ঞানাম

দুঃখিত একটি জায়গা অনুপস্থিত ছিল, কমান্ডটি হ'ল yum ডিপলিস্ট প্যাকেজ।
ডেভি

1
এখানে YUM- এর ব্যবহারটি +1 চমৎকার এটি পুনরাবৃত্ত এবং এটি 'পার্ল (COnfig :: ক্ষুদ্র)' বা 'libc.so (64 বিট)' এর মতো জিনিসগুলির সমাধান করে।
djhaskin987

6

Ignacio এর উত্তর অনুসরণ করে, আপনি নিম্নলিখিতগুলি দ্বারা প্যাকেজগুলির নির্দিষ্ট আর্কিটেকচার দেখতে পারেন:

$ rpm -qa --queryformat "%{NAME} %{ARCH}\n" sqlite
sqlite i686

আমার ক্ষেত্রে, আমার কাছে কেবল একটি, i686 প্যাকেজ রয়েছে ... তবে আপনি প্যাকেজগুলির সাথে এইভাবে যুক্ত আর্কিটেকচার পেতে পারেন। আপনি যদি --queryformat থেকে আর কি পেতে আগ্রহী হন তবে rpm --querytagsউপলব্ধ ভেরিয়েবলের তালিকা দেখতে একটি ইস্যু করুন ।


1
+1 আর্কিটেকচার ভিত্তিক তালিকাভুক্ত করার জন্য আপনার আদেশটিও সহায়ক।
জ্ঞানাম

3

আমার কাছে দ্রুত শেল স্নিপেট রয়েছে যা সমস্ত ইনস্টল করা প্যাকেজগুলির নির্ভরতা সহ প্রিন্ট করে:

for i in `rpm -qa` ; do echo "Package [$i]:"; rpm -q --requires $i ; echo ; done

3

লোকেরা ইতিমধ্যে এর সাথে প্রতিক্রিয়া জানিয়েছে:

  1. rpm -q --requires PKG
  2. yum -q deplist PKG

হ্যাঁ, হয় rpmবা yumকাজ করে এবং প্রশ্নের সঠিক উত্তর দেয়। rpmএবং এর মধ্যে প্রধান পার্থক্য yumহ'ল লাইব্রেরি এবং / অথবা ফাইলের প্রয়োজনীয়তা পূরণের জন্য আপনি কি প্যাকেজ ইনস্টল করতে পারবেন তাও ইউম দেখায়। দুর্ভাগ্যক্রমে, যদি প্যাকেজটি ইনস্টল না করা হয় তবে এর মধ্যে একটিও পদ্ধতি কার্যকর নয়। যেহেতু মূল পোস্টার ইতিমধ্যে নির্দিষ্ট করেছে যে আপনি যে প্যাকেজটি পরীক্ষা করছেন সেটি ইনস্টল করা আছে, এটি একটি নিঃশব্দ পয়েন্ট।

আপনি যদি প্যাকেজ ইনস্টল না করে থাকেন? yumএখনও ব্যবহার করা যেতে পারে, কিন্তু পরোক্ষভাবে। আপনি ইনস্টল অপারেশন বাতিল করে একটি মক ইনস্টল করতে পারেন।

printf n  |  yum install PKG  |  grep -- "---> Package"

এখানে একটি উদাহরণ:

printf n  |  yum install php  |  grep -- "---> Package"
---> Package php.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-cli.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-common.x86_64 0:5.4.16-45.el7 will be installed
---> Package libzip.x86_64 0:0.10.1-8.el7 will be installed

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