লিনাক্স প্যাকেজ ম্যানেজার, যেমন Apt এবং DNF, অত্যন্ত শক্তিশালী এবং স্বজ্ঞাত, কিন্তু এর অর্থ এই নয় যে জিনিসগুলি ভুল হতে পারে না। মাঝে মাঝে, একটি প্যাকেজ ইনস্টল ভুল হয়ে যায় এবং আপনি টুকরোগুলি বাছাই করতে বাকি থাকেন। আপনার সিস্টেমকে আবার কাজ করতে এবং ভবিষ্যতে সমস্যাগুলি এড়াতে প্যাকেজ পরিচালকদের ভাঙা প্যাকেজগুলি ঠিক করার এবং ভাঙা আপডেটগুলি এড়িয়ে যাওয়ার ক্ষমতা রয়েছে৷ এই নিবন্ধটি লিনাক্সে ভাঙা প্যাকেজগুলি কীভাবে ঠিক করতে হয় তা কভার করে।
এই টিপস এবং কৌশলগুলি আপনাকে বেশিরভাগ ক্ষেত্রেই আটকাতে সাহায্য করবে। এগুলি সবই মোটামুটি সর্বজনীন, তবে প্রতিটি পরিস্থিতি আলাদা, তাই আপনার নিজের পরিস্থিতি ডিবাগ করার চেষ্টা করার সময় এটি মনে রাখবেন।
উবুন্টু/মিন্ট/ডেবিয়ানে ভাঙা প্যাকেজ ঠিক করা
Apt-এর কয়েকটি পতাকা রয়েছে যা আপনি অনুপস্থিত নির্ভরতা বা প্যাকেজগুলি ঠিক করতে ব্যবহার করতে পারেন যা ইনস্টল করার সময় এক বা অন্য কারণে ভেঙে যায়। এখানে একটি সাধারণ ব্যবহার একটি তৃতীয় পক্ষের .deb ইনস্টল করা এবং এটির নির্ভরতা রয়েছে যা আপনি জানেন না তা খুঁজে বের করা। এই নির্ভরতাগুলি সম্ভবত তাদের নিজের থেকে নেওয়া হবে না, এবং dpkg
তাদের মধ্যে প্যাকেজ অনুপস্থিত যে অভিযোগ করবে. যে কোনো ক্ষেত্রে, আপনি নিম্নলিখিত পদক্ষেপগুলি চেষ্টা করতে পারেন৷
প্রথমে, প্রয়োজনীয় প্যাকেজগুলির নতুন সংস্করণ নেই তা নিশ্চিত করতে একটি আপডেট চালান৷
৷sudo apt --fix-missing update
এরপরে, আপনি যখন আপত্তিকর প্যাকেজ আবার ইনস্টল করার চেষ্টা করেন তখন আপনি Apt-কে কোনো অনুপস্থিত নির্ভরতা বা ভাঙা প্যাকেজগুলি সন্ধান করতে এবং সংশোধন করতে বাধ্য করতে পারেন। এটি আসলে কোনো অনুপস্থিত নির্ভরতা ইনস্টল করবে এবং বিদ্যমান ইনস্টলগুলি মেরামত করবে।
sudo apt install -f
আরেকটি জায়গা যেখানে প্যাকেজ ইনস্টলেশনে ত্রুটি দেখা দিতে পারে সেটি হল কনফিগারেশন প্রক্রিয়া। পর্দার আড়ালে, dpkg এই অংশটির যত্ন নিচ্ছে, Apt নয়, তাই এটি যুক্তিযুক্ত হবে যে যখন একটি প্যাকেজ কনফিগারেশনের সময় ব্যর্থ হয়, তখন এটি ঠিক করার জন্য dpkg হল একটি টুল।
যেকোনো ভাঙা বা আংশিকভাবে কনফিগার করা প্যাকেজ পুনরায় কনফিগার করতে dpkg-কে জোর করার চেষ্টা করে শুরু করুন।
sudo dpkg --configure -a
যদি এটি সমস্যার সমাধান না করে তবে আপনি আরও জোরদার পদ্ধতি নিতে পারেন। dpkg পুনঃস্থাপনের প্রয়োজন হিসাবে চিহ্নিত যে কোনো প্যাকেজ তালিকাভুক্ত করে শুরু করুন।
sudo dpkg -l | grep ^..r
আপনি সেখানে সমস্যাযুক্ত প্যাকেজ(গুলি) দেখতে পাবেন। যতক্ষণ না এমন কিছু না থাকে যা সেখানে অন্তর্গত বলে মনে হয় না, আপনি ভাঙা প্যাকেজগুলিকে জোরপূর্বক অপসারণ করতে পারেন৷
sudo dpkg --remove --force-remove-reinstreq [package name]
dpkg হয়ে গেলে, Apt দিয়ে পরিষ্কার করার চেষ্টা করুন।
sudo apt clean sudo apt update
যেকোন ভাগ্যের সাথে, এটি আপনাকে যেখানে শুরু করেছিল সেখানে ফিরিয়ে আনবে। এটি আপনাকে ভাঙা প্যাকেজগুলি পাবে না যা আপনি ইনস্টল করার চেষ্টা করেছেন, তবে কমপক্ষে Apt আবার কার্যকরী হবে এবং আপনি প্যাকেজ এবং এর নির্ভরতা ইনস্টল করার চেষ্টা করার জন্য এটি ব্যবহার করতে ফিরে যেতে পারেন।
স্থায়ী DPKG লক
dpkg লকগুলির সাথে একটি কম সাধারণ সমস্যা রয়েছে যা আপনাকে কিছু করতে বাধা দেয়। আপনি যতবার Apt বা dpkg ব্যবহার করার চেষ্টা করবেন, আপনি একটি ত্রুটি পাবেন যে অন্য একটি অ্যাপ্লিকেশন ইতিমধ্যেই আছে … যখন এটি নেই।
লক ফাইলটি মুছে ফেলা আসলেই সহজ যা আপনাকে Apt ব্যবহার করতে বাধা দেয় এবং আপনার যা প্রয়োজন তা করতে ফিরে আসে। কখনও কখনও এই লক ফাইলগুলি একটি ইনস্টলে ত্রুটি বা পাওয়ার বিভ্রাটের পরে জায়গায় থাকে, প্রক্রিয়াটি লাইনচ্যুত করে এবং ফাইলটিকে স্বয়ংক্রিয়ভাবে সরানো থেকে বাধা দেয়। এই ক্ষেত্রে, আপনাকে এটি নিজে করতে হবে।
sudo rm /var/lib/apt/lists/lock
ভাল পরিমাপের জন্য, ক্যাশে লক মুছুন।
sudo rm /var/cache/apt/archives/lock
ফেডোরা/সেন্টস/আরএইচইএল-এ ভাঙা প্যাকেজগুলি ঠিক করা হচ্ছে
Fedora/CentOS/RHEL-এ ভাঙা প্যাকেজগুলি ঠিক করা কম সাধারণ, কারণ প্যাকেজগুলি সঠিকভাবে ইনস্টল করা হয়েছে কিনা তা নিশ্চিত করতে yum এবং dnf সত্যিই দুর্দান্ত কাজ করে। যাইহোক, কখনও কখনও জিনিসগুলি প্যাকেজ ব্যবহারে মিশে যায়। rpm-ভিত্তিক সিস্টেমে এটি করার কমান্ড হল:
sudo rpm -Va
-V
বিকল্পটি যাচাই করার জন্য, যার অর্থ এটি ইনস্টল করা ফাইলগুলির তথ্যের মাধ্যমে যাবে এবং rpm
-এ সংরক্ষিত তথ্যের সাথে তুলনা করবে তথ্যশালা. এটি কিছুটা অসহায়, কারণ এটি সাধারণত আপনাকে ফাইলগুলির একটি দীর্ঘ তালিকা দেয়, তবে এটি আপনাকে শুরু করার জন্য কোথাও দিতে পারে যদি আপনার কোনও নির্দিষ্ট অ্যাপ্লিকেশনে সমস্যা হয়। আপনি একটি dnf reinstall
চালাতে পারেন আপনি সেই তালিকায় যে কোনো প্যাকেজ দেখেন যা আপনাকে সমস্যা দিতে পারে।
sudo dnf --refresh reinstall PACKAGE_NAME
এটি মেয়াদোত্তীর্ণ হিসাবে সমস্ত মেটাডেটা সেট করবে, তাই এটি আপনার সক্ষম করা প্রতিটি সংগ্রহস্থলের মাধ্যমে ক্রল করবে এবং সেই প্যাকেজের একটি নতুন সংস্করণ সন্ধান করবে। আপনি যদি দেখেন যে সেই প্যাকেজের সাথে ভাঙা নির্ভরতা আছে, DNF সম্ভবত অভিযোগ করবে এবং আপনাকে --skip-broken
ব্যবহার করতে বলবে পতাকা এর মানে এটাও হতে পারে যে আপনার কাছে নির্ভরশীলতা টেনে নেওয়ার জন্য কোনো নির্দিষ্ট সংগ্রহস্থল সক্রিয় নেই, তাই আপনাকে সেখানে কিছু গবেষণা করতে হতে পারে।
আর্চে ভাঙা প্যাকেজ ঠিক করা হচ্ছে
যদিও আর্চের প্যাকেজ ম্যানেজারের সাথে ডেবিয়ানের অনেক মিল রয়েছে, এটি একটি সম্পূর্ণ ভিন্ন জন্তু। আপনার সমস্যা নির্ণয়ের প্রথম ধাপ হল সংগ্রহস্থলগুলি আপ টু ডেট এবং সম্পূর্ণ আপগ্রেড করার চেষ্টা করা নিশ্চিত করা:
sudo pacman -Syu
যদি আপনার প্যাকেজ ইনস্টল করার বা সিস্টেম আপগ্রেড করার প্রচেষ্টা এখনও ব্যর্থ হয়, তাহলে টার্মিনাল আপনাকে যা বলেছে সে অনুযায়ী আমাদের কারণটি আলাদা করতে হবে:
"অবৈধ বা দূষিত প্যাকেজ"
"pacman.conf" এ যেকোন উপায়ে পরিবর্তন করা হলে pacman
সমস্যা সৃষ্টি হতে পারে ভুলভাবে প্যাকেজগুলিকে দুর্নীতিগ্রস্ত হিসাবে লেবেল করতে। এখানে সম্ভবত অপরাধী হল প্যাকেজ ম্যানেজার ক্যাশে একটি আংশিক (“.part”) ফাইল, এবং আপনার সমাধান হল এটি অপসারণ করা:
sudo find /var/cache/pacman/pkg/ -iname "*.part" -delete
আপনি যে প্যাকেজটি ইনস্টল করার চেষ্টা করছেন সেটি সত্যিই দূষিত এবং আর্কে বৈধ মেটাডেটা প্রদান করে না এমন একটি সুযোগ সর্বদাই থাকে। সেই ক্ষেত্রে, আপনাকে প্যাকেজ রক্ষণাবেক্ষণকারীর এটি আপডেট করার জন্য অপেক্ষা করতে হবে। যদি প্যাকেজটি আপনার সিস্টেমে ইনস্টল করা থাকে এবং একটি আপগ্রেডের সময় সমস্যা সৃষ্টি করে, তাহলে এটির সাথে এটি সরান:
sudo pacman -Rns [package name]
"ডাটাবেস লক করতে অক্ষম"
ডেবিয়ানের অ্যাপটির মতো, আর্চের প্যাকেজ ম্যানেজার অপারেশন চলাকালীন একটি লক ফাইল তৈরি করে। আপনি যদি বিদ্যুৎ বিভ্রাট বা pacman
অনুভব করেন একটি কঠিন বাধার সম্মুখীন হয়েছে এটি থেকে লকটি সরাতে পারেনি, এটি একটি লক ফাইলের পিছনে ফেলে যাওয়ার সম্ভাবনা খুব বেশি৷
প্রথমে, আপনার কম্পিউটারে কিছু প্রক্রিয়া এখনও ফাইলটি ব্যবহার করছে কিনা তা খুঁজে বের করুন:
sudo fuser /var/lib/pacman/db.lck
উপরের ছবিতে, আইডি 121497 সহ একটি প্রক্রিয়া ফাইল লক ব্যবহার করছে। আপনি যদি প্রক্রিয়া সম্পর্কে আগ্রহী হন এবং আরও তথ্য চান, তাহলে ps
ব্যবহার করুন :
ps -p [PID#]
আমার ক্ষেত্রে, আরেকটি প্যাকম্যান উদাহরণ লক ফাইলের মালিক। লকটি সরানোর সবচেয়ে নিরাপদ উপায় হল প্রথমে সেই প্রক্রিয়াটিকে মেরে ফেলা:
sudo kill [PID#]
এখন প্রক্রিয়াটি শেষ হয়ে গেছে, লক ফাইলটি সরান:
sudo rm /var/lib/pacman/db.lck
আপনি এখন যেতে ভাল!
"ফাইলসিস্টেমে বিরোধপূর্ণ ফাইল/ফাইল বিদ্যমান"
এটি আপগ্রেড করার সময় ঘটে যেখানে pacman
একটি দ্বন্দ্ব সনাক্ত করে। কোনো কিছু ঠিক করার আগে, প্যাকেজ ম্যানেজার যে ফাইলটির বিষয়ে অভিযোগ করছেন সেটির দিকে মনোযোগ দিন৷
প্রথম জিনিসটি আমাদের খুঁজে বের করতে হবে কে ফাইলটির মালিক:
pacman -Qo [path to the file]
যদি এটি কোনও ব্যবহারকারীর মালিকানাধীন হয় এবং অন্য কোনও প্যাকেজ না হয় তবে এটিকে সরিয়ে দিন:
sudo rm [path to the file]
যদি এটি অন্য প্যাকেজের মালিকানাধীন হয়, তবে আপনি যা করতে পারেন তা হল সবচেয়ে নিরাপদ জিনিসটি হল প্যাকেজের রক্ষণাবেক্ষণকারীর জন্য এই দ্বন্দ্বটি নিজেরাই ঠিক করার জন্য অপেক্ষা করা। যদিও কখনও কখনও এটি একটি বিকল্প নয়, এবং আপনি এখনই জিনিসগুলি সম্পন্ন করতে চান৷
এটি সম্পন্ন করার সবচেয়ে সহজ উপায় হল --overwrite
ব্যবহার করা pacman
-এ পতাকা . শুধু জেনে রাখুন যে এটি সাধারণত অনিরাপদ এবং কিছু অ্যাপ্লিকেশন আপনার সিস্টেমে সঠিকভাবে কাজ না করতে পারে। আমি এটি চালানোর আগে ব্যাকআপ করার পরামর্শ দিচ্ছি৷
--overwrite
পতাকা আর্চের প্যাকেজ ম্যানেজারকে একটি নির্দিষ্ট ফাইলের মালিকানা নিয়ম উপেক্ষা করতে এবং আপডেটের মাধ্যমে স্টিমরোল করার অনুমতি দেয়। উদাহরণ:
pacman -Syu --overwrite [file name]
উপরের কমান্ডটি কাজ না করলে, ফাইলের নামটি তার পরম পাথ দিয়ে প্রতিস্থাপন করুন। কিছু ব্যবহারকারী রিপোর্ট করেছেন যে পথের সামনে থেকে লিডিং স্ল্যাশ (“/”) সরিয়ে দিলে কমান্ডটি কাজ করে যখন এটি একগুঁয়ে থাকে।
প্রায়শই জিজ্ঞাসিত প্রশ্নগুলি
1. আমি কি একজন AUR সাহায্যকারীর সাথে আর্চ ফিক্স প্রয়োগ করতে পারি?
সাধারণত, হ্যাঁ। এই নির্দেশিকায় আপনার AUR সাহায্যকারীর সাথে "pacman" প্রতিস্থাপন করুন। উদাহরণ:
yay -Qo /path/to/file
2. এই নির্দেশাবলী কি নিরাপদ?
বেশিরভাগ অংশের জন্য, এখানে প্রতিটি নির্দেশনা অন্য যেকোনো প্যাকেজ পরিচালনা অপারেশনের মতোই নিরাপদ। প্রধান ব্যতিক্রম হল যখন আপনি লক ফাইলগুলি সরান। যদি আপনার কাছে এটি করার একটি উপায় থাকে তবে সেগুলি সরানোর আগে সেই ফাইলগুলি ব্যবহার করতে পারে এমন কোনও প্রক্রিয়াকে মেরে ফেলা সর্বদা গুরুত্বপূর্ণ৷ আপনার সিস্টেম কি করছে সে সম্পর্কে সচেতন থাকুন। আপনি কোথাও apt বা pacman চালানোর একটি উদাহরণ ভুলে গেছেন!
কোন আপগ্রেড করার আগে সর্বদা আপনার সিস্টেমের ব্যাক আপ নেওয়া সর্বোত্তম অনুশীলন হবে।
3. আমি কোন আপডেটে বাধা দিলে আমার কি করা উচিত?
Ctrl টিপে একটি আপডেট প্রক্রিয়া ভাঙা + C , প্যাকেজ ম্যানেজারের প্রক্রিয়াটি মেরে ফেলা, বা সময়ের আগে টার্মিনাল বন্ধ করার ফলে আপনার প্যাকেজ ডাটাবেসে কিছু স্তরের দুর্নীতি হবে যা আপনি অন্য কিছু ইনস্টল করার চেষ্টা করার সময় আপনার জন্য জিনিসগুলিকে জটিল করতে পারে। এটি ঠিক করতে, ক্যাশে সাফ করুন এবং আপডেটটি পুনরাবৃত্তি করুন৷
৷ডেবিয়ান/উবুন্টু/মিন্ট/পপ!_OS/ইত্যাদিতে:
sudo apt-get clean
Fedora/CentOS/RHEL:
-এsudo dnf clean all
খিলানে:
sudo pacman -Scc
র্যাপিং আপ
আশা করি, এই সংশোধনগুলির মধ্যে একটি আপনার জন্য কাজ করেছে এবং আপনি আপনার লিনাক্স সিস্টেমে স্বাভাবিকভাবে কাজ করছেন। মনে রাখবেন যে সম্পূর্ণভাবে হাতের বাইরে থাকা পরিস্থিতি পরিচালনা করার সর্বোত্তম উপায় হল এটি আগের মতো ফিরে আসার চেষ্টা করা। আপনি ঠিক কী করছেন তা না জানলে আরও কিছু যোগ করে একটি ভাঙ্গন সমাধানের জন্য আরও কিছু যোগ করার চেষ্টা করবেন না। সম্ভবত আপনি ভাঙা জিনিসগুলির একটি জটিল জগাখিচুড়ির সাথে শেষ হয়ে যাবেন যা সাজানো কঠিন হবে৷
অপ্রয়োজনীয় এবং ভাঙা প্যাকেজগুলি থেকে পরিত্রাণ পেতে আপনাকে আপনার লিনাক্স সিস্টেম পরিষ্কার করতে হতে পারে। কারণটি যদি একটি পুরানো পিসি নতুন সফ্টওয়্যার সমর্থন করতে অক্ষম হয়, তাহলে আপনি আপনার পুরানো পিসিকে ভাল ব্যবহার করতে এই তিনটি উপায় ব্যবহার করতে পারেন৷