অফলাইনে ব্যবহারের জন্য প্রয়োজনীয় সমস্ত আরপিএম পেতে ইয়াম কীভাবে ব্যবহার করবেন?


30

নেট কানেক্টিভিটির সাথে আমার একটি সার্ভার রয়েছে, যেখানে আমি "ইয়াম ইনস্টল $ প্যাক" ব্যবহার করতে পারি।
আমি কিছু ইয়াম কমান্ড চাই, yum cache-rpms $PACKAGE $DIRECTORYযেমন প্রয়োজনীয় সমস্ত RPM ফাইলগুলি $ DIRECTORY এ ডাউনলোড করা হবে, এতে একটি ফাইল ( Install.sh) থাকবে যাতে এই আরপিএম ইনস্টল করার আদেশটি লেখা থাকবে, নেট কানেকটিভিটি ব্যতীত অন্য অনেক সার্ভারে।
Install.shএমনকি একটি শেল স্ক্রিপ্ট, যা একই আচরণ করল হতে পারে yum install $PACKAGEছাড়া এটি নেটওয়ার্ক ব্যবহার করবে না, কিন্তু শুধুমাত্র ব্যবহার করা হবে $DIRECTORY

সম্ভব?

আমি একটি সাধারণ সমাধান সন্ধান করছি যেখানে ইয়াম এবং আরপিএম উপলব্ধ, তবে নির্দিষ্টতার জন্য: এটি সেন্টোস 6.7 সার্ভারের একটি সেটে রয়েছে।


আমি বেশ কয়েকটি সমাধান সম্পর্কে ভাবতে পারি - যা আপনার পক্ষে আরও ভাল কাজ করে? (1) একক প্যাকেজ পদ্ধতির। এটি ডাউনলোড কম হয়, তবে আরও ম্যানুয়াল কাজের প্রয়োজন। বা ... (2) সম্পূর্ণ রেপো পদ্ধতির। এটি প্রচুর ডাউনলোড করে তবে আরও অটোমেশন দিয়ে করা যায়।
স্টিভ বন্ডস

@ স্টিভবন্ডস, আমি (1) "একক প্যাকেজ" চাই, কারণ (2) "পুরো রেপো" ডাউনলোড করতে এবং খুব বেশি জায়গা ব্যবহার করতে সময় নিতে হবে।
প্রেম

স্পেসওয়াকের দিকে তাকিয়েছ?
fpmurphy

উত্তর:


40

ডাউনলোড এবং ইনস্টল করার জন্য প্যাকেজ হিসাবে "httpd" ব্যবহার করে এখানে একটি নির্দিষ্ট উদাহরণ। এই প্রক্রিয়াটি CentOS6 এবং CentOS7 উভয়তেই পরীক্ষা করা হয়েছিল।

আপনার প্রয়োজনীয় জিনিসগুলি ইনস্টল করুন এবং ডাউনলোড করা আরপিএমগুলি রাখার জন্য একটি জায়গা তৈরি করুন:

# yum install yum-plugin-downloadonly yum-utils createrepo
# mkdir /var/tmp/httpd
# mkdir /var/tmp/httpd-installroot

আরপিএমগুলি ডাউনলোড করুন। এই খালি মূলটিতে কিছুই ইনস্টল না হওয়ায় এটি সমস্ত নির্ভরতার সম্পূর্ণ ডাউনলোডকে বাধ্য করার জন্য এখানে প্রস্তাবিত ইনস্টলট ট্রিক ব্যবহার করে । ইউম সেখানে কিছু মেটাডেটা তৈরি করবে, তবে আমরা এটিকে সব ফেলে দেব। মনে রাখবেন CentOS7 এর জন্য releasever"7" হবে।

# yum install --downloadonly --installroot=/var/tmp/httpd-installroot --releasever=6 --downloaddir=/var/tmp/httpd httpd

হ্যাঁ, এটি ছিল ছোট সংস্করণ। আপনি সম্পূর্ণ-রেপো ডাউনলোডগুলির আকারটি দেখেছেন!

আমাদের আরপিএমগুলির নতুন গাদাটি ইউইউএম রেপোতে পরিণত করার জন্য প্রয়োজনীয় মেটাটাটা তৈরি করুন এবং আমাদের আর প্রয়োজনীয় জিনিসগুলি পরিষ্কার করতে হবে:

# createrepo --database /var/tmp/httpd
# rm -rf /var/tmp/httpd-installroot

ডাউনলোড ডিরেক্টরিটি রেপো হিসাবে কনফিগার করুন। দ্রষ্টব্য যে CentOS7 এর জন্য জিপিগিকে "6" এর পরিবর্তে "7" নামকরণ করা হবে:

# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

নিখোঁজ নির্ভরতা পরীক্ষা করতে:

# repoclosure --repoid=offline-httpd

কেন CentOS7 এ এই বিষয়গুলি প্রতিবেদনের বাইরে libssl.so.10(libssl.so.10)(64bit)থেকে httpd-toolsযখন openssl-libs-1.0.1e-51.el7_2.2.x86_64.rpm(সেই লাইব্রেরির সরবরাহকারী) স্পষ্টভাবে ডিরেক্টরিতে উপস্থিত রয়েছে সে কারণটি প্রতিবেদন করিনি । তবুও, আপনি যদি কিছু স্পষ্টতই নিখোঁজ দেখতে পান তবে yum install --downloadonlyউপরের একই পদ্ধতিটি ব্যবহার করে এটি ফিরে যাওয়ার পক্ষে ভাল সুযোগ হতে পারে ।

অফলাইনে বা /var/tmp/httpdঅন্য সার্ভারে রেপো ডিরেক্টরিটি অনুলিপি করার পরে সেখানে রেপো সেটআপ করুন:

# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# yum --disablerepo=\* --enablerepo=offline-httpd install httpd

আশা করি কোনও অনুপস্থিতি নেই!


3
আমি সেন্টোস 7 এ ফোল্ডারটি তৈরি করতে এবং এটি রেড হ্যাট 7 এ ইনস্টল করার জন্য আপনার গাইড অনুসরণ করার চেষ্টা করেছি, এটি সমস্ত ত্রুটি ছাড়াই কাজ করেছে
পিয়িন

1
যদিও দুটি ওএসের মধ্যে সামঞ্জস্যতা সেইরকম ভালো কাজ করে তবে রেডহ্যাট সমর্থন নিশ্চিত করতে আপনার অনুরূপ প্রক্রিয়া ব্যবহার করে রেডহ্যাট সার্ভারগুলি থেকে রেডহ্যাট সফ্টওয়্যারটি ডাউনলোড করা উচিত।
স্টিভ বন্ডস

1
হ্যাঁ আপনি ঠিক. তবে এই ক্ষেত্রে এটি নেটওয়ার্কের নিয়মগুলির সাথে একটি ঘনিষ্ঠ পরিবেশ ছিল যা আমি পরিবর্তন করতে পারি না। কিছু লোকের মতো বলে: "গ্রাহক সর্বদা সঠিক"
পিয়িন

1
7 সেন্টোস খুব ভাল কাজ, ধন্যবাদ!
কার্লোস ভেগা

4

দেখে মনে হচ্ছে আপনি yumdownloaderপ্যাকেজের মধ্যে যা রয়েছে তার জন্য জিজ্ঞাসা করছেন yum-utils। এটি সম্পর্কে ইতিমধ্যে কয়েকটি প্রশ্নোত্তর রয়েছে, উদাহরণস্বরূপ , ইতোমধ্যে ইনস্টল থাকা সত্ত্বেও, ইউমডাউনডারের সাথে সমস্ত নির্ভরতা ডাউনলোড করুন? বা আমি ইউমের সাথে প্যাকেজ ইউআরএলগুলি কীভাবে খুঁজে পাব?

yumdownloaderপ্যাকেজগুলি ডাউনলোড করবে, যদিও এটি কোনও ফাইল তৈরি করবে না Install.shকারণ অর্ডারটি নিজেই নির্ধারণ করতে পারে, তাই আপনি
yum install ./*rpmডাউনলোডকৃত প্যাকেজগুলির সাথে ফোল্ডারের মাধ্যমে লক্ষ্য বাক্সে প্যাকেজগুলি ইনস্টল করতে পারেন (যার তুলনায় সমস্ত নির্ভরতা অন্তর্ভুক্ত করতে হবে) বেস ইনস্টলেশন - উপরের প্রথম লিঙ্কটি দেখুন repotrack)


+1, আমি যা চাই তার মতো লাগে! আমি যা চাই তার সাথে মেলে তা পরীক্ষা করে আপডেট করব!
প্রেম

4

আমার এটি বেশ কয়েকবার দরকার ছিল, তাই আমি @ স্টিভ বন্ডের উত্তর স্বয়ংক্রিয়ভাবে দিয়েছি। PKGউভয় মেশিনে ইনস্টল করার জন্য প্যাকেজ হিসাবে সংজ্ঞায়িত করার বিষয়টি নিশ্চিত করুন (দাবি অস্বীকার: CentOS 7 এর জন্য, CentOS 6 এর জন্য, স্থান --releaseverএবং CentOS-7স্থানটি পরিবর্তন করুন ।

অনলাইন মেশিন

PKG=... # NAME OF THE PACKAGE TO INSTALL ON OFFLINE MACHINE
yum install --downloadonly --installroot=/tmp/$PKG-installroot --releasever=7 --downloaddir=/tmp/$PKG $PKG
createrepo --database /tmp/$PKG
rm -rf /tmp/$PKG-installroot
rsync -arv /tmp/$PKG/ [IP of the machine]:/tmp/$PKG

অফলাইন মেশিনে:

PKG=... # NAME OF THE PACKAGE
echo "[offline-$PKG]
name=CentOS-\$releasever - $PKG
baseurl=file:///tmp/$PKG/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7" >  /etc/yum.repos.d/offline-$PKG.repo

# install package offline:
yum --disablerepo=\* --enablerepo=offline-$PKG install --nogpgcheck $PKG

1
-yপটভূমিতে রান করার সময় প্যাকেজগুলির ইনস্টলেশন নিশ্চিত করতে আপনি শেষ কমান্ডটি যুক্ত করতে চাইতে পারেন ।
টনি টর্নেডো

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