এই আর্টিকেলে আমরা YUM প্যাকেজ ম্যানেজার নিয়ে আলোচনা করব যা প্রোগ্রাম (RPM প্যাকেজ) ইনস্টলেশন, রিমUভাল এবং আপডেটিং ম্যানেজ করতে দেয়, স্বয়ংক্রিয়ভাবে ডিপেন্ডেন্সি রিজলভ করে এবং অতিরিক্ত রিপোজিটরি ম্যানেজ করে। এই আর্টিকেল নতুন লিনাক্স অ্যাডমিনিস্ট্রেটরদের জন্য yum চিট শিট হিসেবে উপকারী হবে।
Yum (Yellowdog Updater Modified) হলো RPM প্যাকেজ-ভিত্তিক লিনাক্স ডিস্ট্রোদের জন্য একটি কনসোল প্যাকেজ ম্যানেজার (RedHat Package Manager)। এতে RedHat, CentOS, Fedora, Oracle Linux, Scientific Linux-এর মত জনপ্রিয় OS গুলো অন্তর্ভুক্ত।
YUM ব্যবহার করে প্যাকেজ ইনস্টল, আপডেট এবং রিমUভ
কী দিয়ে শুরু করব? অন্যান্য কেসের মত, হেল্প দিয়ে শুরু করি:
yum help — yum-র পূর্ণ হেল্প
আমি সবচেয়ে জনপ্রিয় yum কমান্ডগুলো হাইলাইট করছি:
yum clean all — সকল প্যাকেজের ক্যাশ ক্লিয়ার করে (সাধারণত yum-এ কোনো সমস্যা হলে ব্যবহার করা হয়)
yum makecache — প্যাকেজ ক্যাশ পুনরায় তৈরি করে
yum repolist — সকল সংযুক্ত রিপোজিটরির তালিকা প্রদর্শন করে, আউটপুট এভাবে দেখায়:
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: * extras: * updates: repo id repo name status base/7/x86_64 CentOS-7 - Base 10,019 extras/7/x86_64 CentOS-7 - Extras 435 updates/7/x86_64 CentOS-7 - Updates 2,500 repolist: 12,954
আমার সিস্টেমে শুধু স্ট্যান্ডার্ড CentOS 7 রিপোজিটরি ইনস্টল করা আছে: Base, Extras এবং Updates।
yum list available — ইনস্টলেশনের জন্য উপলব্ধ সকল প্যাকেজের তালিকা দেখায়
yum list installed — সিস্টেমে ইনস্টল করা সকল প্যাকেজের তালিকা দেখায়
yum list kernel — লিনাক্স কার্নেল সংক্রান্ত প্যাকেজের তালিকা দেখায়
আপনি আপনার CentOS সার্ভারে কোন নির্দিষ্ট প্যাকেজ ইনস্টল করা আছে কিনা চেক করতে পারেন (উদাহরণস্বরূপ, apache প্যাকেজের স্ট্যাটাস চেক করুন):
yum list installed httpd
Installed Packages httpd.x86_64 2.4.6-89.el7.centos.1 @updates
আপনি কোন নির্দিষ্ট প্যাকেজের বিস্তারিত তথ্য পেতে পারেন। উদাহরণস্বরূপ, MariaDB প্যাকেজ সম্পর্কে আরও তথ্য পাই:
yum info mariadb
একটি প্যাকেজ ইনস্টল করতে yum install ব্যবহার করা হয়। Apache ওয়েব সার্ভার ইনস্টল করতে এই কমান্ডটি চালান:
yum install httpd
যদি যেকোনো yum কমান্ড চালানোর সময় "Traceback (most recent call last):thread.error: can’t start new thread" এরর দেখতে পান, তবে সম্ভবত আপনার সার্ভারে পর্যাপ্ত RAM নেই। কিছু RAM যোগ করার চেষ্টা করুন বা yum প্লাগইন ডিজেবল করুন (/etc/yum.conf-এ plugins=0 নির্দিষ্ট করুন)।
প্যাকেজ ইনস্টল করার আগে, এর ডিপেন্ডেন্সি চেক করতে এই কমান্ডটি ব্যবহার করতে পারেন:
yum deplist httpd
আপনি যদি একটি প্যাকেজ ইনস্টল করতে চান কিন্তু এর পূর্ণ নাম ভুলে যান, তবে * ওয়াইল্ডকার্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
yum install epel-*
Resolving Dependencies --> Running transaction check ---> Package epel-release.noarch 0:7-11 will be installed --> Finished Dependency Resolution Install 1 Package Total download size: 15 k Installed size: 24 k Is this ok [y/d/N]:
আপনি যদি শুধু লিখেন:
yum install epel
No package epel available. Error: Nothing to do
তবে কোনো প্যাকেজ উপলব্ধ দেখাবে না।
Yum একবারে একাধিক প্যাকেজ ইনস্টল করতে পারে:
yum install httpd php wget rsyslog
একটি প্যাকেজ রিইনস্টল করতে:
yum reinstall proftpd
Yum-এ ইনস্টল করা একটি প্যাকেজ রিমUভ করতে remove প্যারামিটার ব্যবহার করা হয়:
yum remove httpd
যেকোনো প্যাকেজ রিমUভ করার আগে, এর ডিপেন্ডেন্সি চেক করার পরামর্শ দেওয়া হয় (কিছু প্যাকেজ আছে যা রিমUভ করার চেষ্টা করলে কিছু অন্যান্য প্যাকেজও মুছে ফেলা হয়)।
yum deplist proftpd
নাম বা বর্ণনা অনুযায়ী প্যাকেজ খুঁজতে:
yum search nginx
provides অপশন ব্যবহার করে আপনি নির্দিষ্ট ফাইল ধারণকারী প্যাকেজ খুঁজে পেতে পারেন, উদাহরণস্বরূপ:
yum provides */squid.conf
সকল ইনস্টল করা প্যাকেজ আপডেট করতে এই কমান্ডটি চালান:
yum update
আপনি নাম অনুযায়ী একটি প্যাকেজ আপডেট করতে পারেন:
yum update php
আপনার সিস্টেমের জন্য কোনো উপলব্ধ আপডেট আছে কিনা চেক করতে এই কমান্ডটি ব্যবহার করুন:
yum check-update
উপলব্ধ সিকিউরিটি আপডেট সম্পর্কে তথ্য পেতে:
yum updateinfo list security
কিছু কেসে, একটি প্যাকেজ বা সার্ভিস আপডেট করার পর সমস্যা হতে পারে। উদাহরণস্বরূপ, php সংস্করণ আপডেট করার পর আপনার সাইট কাজ করা বন্ধ করেছে। Yum ব্যবহার করে আপনি পূর্বের প্যাকেজ সংস্করণে ফিরে যেতে পারেন:
yum downgrade php
আপনি রিপোজিটরিতে প্রিডিফাইনড প্যাকেজ গ্রুপের সাথে গ্রুপ ইনস্টলেশনও ব্যবহার করতে পারেন grouplist। রিপোজিটরিতে বিভিন্ন প্রোগ্রাম সেট সহ কিছু প্রিডিফাইনড প্যাকেজ গ্রুপ থাকে। আপনি এই গ্রুপগুলোর তালিকা দেখতে পারেন:
yum grouplist
আসুন "Basic Web Server" লিস্টের উদাহরণে দেখি কীভাবে কাজ করে। গ্রুপ এবং এর প্যাকেজ সম্পর্কে আরও জানতে:
yum groupinfo "Basic Web Server"
চেক করার পর আমরা দেখতে পাই যে ওয়েব সার্ভারের জন্য প্যাকেজ এবং সার্ভিসের সেট ইনস্টল হবে।
এখানে আরেকটি উপকারী গ্রুপ লিস্ট — "System Administration Tools":
yum groupinfo "System Administration Tools"
আপনি দেখতে পাচ্ছেন, লিস্টে মনিটরিং এবং ডিবাগিং টুলস রয়েছে।
গ্রুপ লিস্ট ইনস্টল করতে এই কমান্ডটি ব্যবহার করুন:
yum groupinstall "System Administration Tools"
ইনস্টল করা প্যাকেজগুলো একটি আলাদা ব্লকে ("Installed Groups") প্রদর্শিত হবে।
YUM History কমান্ড ব্যবহার
আপনি yum ইনস্টলেশন হিস্টরি (ট্রানজ্যাকশনের তালিকা) দেখতে পারেন:
yum history list
আউটপুটে ৫টি কলাম থাকে, প্রথমটি ট্রানজ্যাকশন ID দেখায় যা আপনি ট্রানজ্যাকশন ডিটেইলস (ইনস্টল করা প্যাকেজ, ডিপেন্ডেন্সি) देखने ব্যবহার করতে পারেন।
উদাহরণস্বরূপ:
yum history info 10
বільভাত, আপনি ট্রানজ্যাকশন анডゥ করতে পারেন এই কমান্ড দিয়ে:
yum history undo 10
আমার কেসে, ৪টি প্যাকেজ রিমUভ হতো:
আপনি /var/log/yum.log-এ yum প্যাকেজ ইনস্টলেশন/রিমUভ সম্পর্কে তথ্য দেখতে পারেন:
cat /var/log/yum.log
উপকারী YUM কমান্ড অপশন
Yum-এ কিছু উপকারী অপশন আছে যা আপনি প্যাকেজ ম্যানেজ করার জন্য প্রায়শই ব্যবহার করতে পারেন। শুধু এরর ছাড়া সকল yum আউটপুট সাপ্রেস করতে -y অপশন ব্যবহার করুন। উদাহরণস্বরূপ:
yum update -y
yum install httpd -y
না বলতে এই অপশনটি ব্যবহার করুন:
--assumeno
যেকোনো প্লাগইন ছাড়া yum ব্যবহার করতে বা 그중 একটি ডিজেবল করতে এই প্যারামিটারগুলো ব্যবহার করুন:
--noplugins
--disableplugin=fastestmirror
একটি ডিজেবল্ড প্লাগইন সক্ষম করতে:
--enableplugin=fastestmirror
একটি ডিজেবল্ড রিপো ব্যবহার করতে:
yum update --enablerepo=atomic
Yum-এ একটি নির্দিষ্ট রিপোজিটরি ডিজেবল করতে:
yum update --disablerepo=atomic
YUM কনফিগারেশন ফাইল /etc/yum.conf
YUM কনফিগারেশন ফাইল হলো /etc/yum.conf।
মূল কনফিগারেশন ফাইল প্যারামিটারগুলো:
- cachedir — লোকাল প্যাকেজ ক্যাশ (ডিফল্ট, /var/cache/yum)
- logfile — yum লগ ফাইলের পাথ
- obsoletes — পুরনো প্যাকেজ আপডেট করা হবে কিনা (১ — হ্যাঁ, ০ — না)
- gpgcheck — ইনস্টলেশনের আগে প্যাকেজ ভেরিফাই করা হবে কিনা (১ — হ্যাঁ, ০ — না)
- keepcache — ক্যাশ রাখা হবে কিনা (১ — হ্যাঁ, ০ — না)
- cachedir — yum ক্যাশ সংরক্ষণের ডিরেক্টরি (ডিফল্ট, /var/cache/yum)
- debuglevel — ডিবাগ লেভেল ১-১০
- plugins — yum প্লাগইন সক্ষম (১ — হ্যাঁ, ০ — না)
- bugtracker_url — yum এরর রেজিস্টার করার লিংক
- installonly_limit — একটি প্যাকেজের জন্য ইনস্টল করা যেতে পারে সর্বোচ্চ সংস্করণের সংখ্যা
উপকারী YUM প্লাগইন
Yum-এ প্লাগইন কেন দরকার? সব জায়গার মত, এগুলো আমাদের কাজ সহজ করে তোলে।
খুব জনপ্রিয় কিছু প্লাগইন এবং তাদের বর্ণনা:
- yum-plugin-fastestmirror — মিরর স্পিড পরিমাপ করে প্যাকেজ ইনস্টল করার জন্য দ্রুততম মিরর অফার করে।
- yum-plugin-security — শুধু সিকিউরিটি আপডেটের তালিকা প্রদান করে।
- yum-plugin-keys — keys, keys-info, keys-data, keys-remove প্যারামিটার ব্যবহার করতে দেয়।
সকল প্লাগইন সংরক্ষিত থাকার ডিরেক্টরি হলো /etc/yum/।
yum-plugin-versionlock — নির্বাচিত প্যাকেজকে আপডেট হতে বাধা দেয়।
উপলব্ধ yum প্লাগইনগুলোর তালিকা দেখতে এই কমান্ডটি চালান:
yum search yum-plugin
আপনি যেকোনো অন্যান্য প্যাকেজের মত yum install ব্যবহার করে প্লাগইন ইনস্টল করতে পারেন:
yum install yum-plugin-changelog
yum -y install yum-versionlock
প্লাগইন ব্যবহার করে একটি প্যাকেজ আপডেট ব্লক করতে এই কমান্ডটি চালান:
yum versionlock nginx
ব্লক করা প্যাকেজের তালিকা দেখতে:
yum versionlock list
ব্লক লিস্ট থেকে একটি প্যাকেজ সরাতে:
yum versionlock delete nginx
আপনি যদি একটি প্লাগইন ব্যবহার না করতে চান, তবে yum কমান্ডে নিচের অপশন যোগ করে ডিজেবল করতে পারেন:
--disableplugin=fastestmirror
অথবা আপনি সকল yum প্লাগইন ডিজেবল করতে পারেন:
--noplugins
YUM-এ প্রক্সি কনফিগারেশন কিভাবে করবেন?
Yum প্যাকেজ রিপোজিটরির সাথে ইন্টারঅ্যাক্ট করার জন্য HTTP/1.1 প্রোটোকল ব্যবহার করে। আপনার লিনাক্স সার্ভার যদি শুধু HTTP প্রক্সি সার্ভারের মাধ্যমে ইন্টারনেট অ্যাক্সেস করতে পারে, তবে আপনার /etc/yum.conf ফাইলের [main] সেকশনে প্রক্সি সার্ভারের নাম নির্দিষ্ট করতে পারেন:
proxy=https://proxy_server_name:3128
আপনার প্রক্সি সার্ভার যদি প্রমাণীকরণ চায়, তবে এই লাইনগুলোও যোগ করুন:
proxy_username=proxy_user proxy_password=proxy_user_passw0rd
Yum প্রক্সি সার্ভারের মাধ্যমে কাজ করছে কিনা নিশ্চিত করতে এই কমান্ডটি ব্যবহার করুন:
yum clean all && yum search nginx
চেক করার জন্য, আমি একটি জার্মান পাবলিক প্রক্সি সার্ভার ঠিকানা নির্দিষ্ট করেছিলাম, এবং ইনস্টলেশনের সময় fastestmirror প্লাগইন ট্রিগার হয়ে সবচেয়ে দ্রুত স্পিডের মিরর খুঁজে পেয়েছিল।
আপনি যদি শুধু কিছু রিপোজিটরির জন্য প্রক্সি ব্যবহার করতে চান, তবে /etc/yum.conf ফাইলে পরিবর্তন আনার দরকার নেই। আপনি রিপোজিটরি কনফিগারেশন ফাইলে /etc/yum.repos.d/your_config.repo প্রক্সি সার্ভার সেটিংস নির্দিষ্ট করতে পারেন।
তো আমরা লিনাক্স CentOS/RHEL-এ RPM প্যাকেজ ম্যানেজার yum-এর বেসিক ফিচারগুলো দেখেছি। পরবর্তী আর্টিকেলে আমরা YUM/DNF রিপোজিটরি আরও বিস্তারিতভাবে কীভাবে ম্যানেজ করতে হয় সেটি দেখাব।