নিখোঁজ / দূষিত ফাইল সহ প্যাকেজগুলি পুনরায় ইনস্টল করা হচ্ছে


17

একটি অশুভ শাটডাউন এবং একটি রঙিন fsck অনুসরণ করে, পুরো গোছা ফাইল হারিয়ে গেছে। 'আরপিএম-ভি'এর আউটপুট কয়েকশ লাইন দীর্ঘ (বেশিরভাগ ফাইল অনুপস্থিত তবে কিছুটা চেকসাম এবং অন্যান্য মিল নেই)। হারিয়ে যাওয়া এবং / অথবা ফাইলগুলি দূষিত প্যাকেজগুলির পুনরায় ইনস্টল করার কি সহজ উপায় আছে?

প্রশ্নে থাকা ওএস হ'ল ফেডোরা 22।


3
অবশ্যই সম্ভব, তবে আউটপুট পার্স করা এবং প্রতিটি ফাইলের জন্য প্যাকেজটির কোয়েরি করতে খুব ক্লান্তিযুক্ত যা সেই ফাইলটি ধারণ করে এবং সম্ভবত কিছুটা সময় নেয়। কেন কেবল সমস্ত প্যাকেজ পুনরায় ইনস্টল করবেন না? yum reinstall $(rpm -qa --qf="%{N}-%{V}\n" | sort)
doktor5000

প্রিলিংকের কারণে সৃষ্ট সমস্ত অতিরিক্ত সমস্যাগুলি ফিল্টার করাও বেশ কুৎসিত হতে পারে, যদি আমি ভুল না হয়ে থাকি তবে ফেডোরাহস্টেড.আর.
ফেস্কো /

আমি প্রকৃতপক্ষে সবকিছু পুনরায় ইনস্টল করেছিলাম - সমস্যাটি হ'ল আমি ডিএনএফ-এর জন্য কী-ক্যাশে সক্ষম করতে ভুলে গিয়েছিলাম, এটি 2 জিবি প্যাকেজের (এবং আমি ইন্টারনেট
সংবিধানযুক্ত

উত্তর:


16

রেফারেন্স এবং সম্পূর্ণতার জন্য, একটি কমান্ড যা প্রাথমিকভাবে যা জিজ্ঞাসা করেছিল তা অর্জন করতে সক্ষম হবে এটি এমন কিছু হতে পারে (দ্রুত একসাথে বিস্মৃত, তবে এটি কাজ করছে)

rpm -qf $(rpm -Va 2>&1 | grep -vE '^$|prelink:' | sed 's|.* /|/|') | sort -u

এখানে বিভিন্ন অংশের একটি সংক্ষিপ্ত ব্যাখ্যা:

rpm -Va 2>&1

বর্তমানে ইনস্টল করা / আরপিএম ডাটাবেসে তালিকাভুক্ত সমস্ত প্যাকেজগুলিতে সম্পূর্ণ যাচাইকরণ চালাবে। এটি স্টার্ডারকেও স্টডআউটে পুনর্নির্দেশ করবে, কারণ এখানে আমার বাক্সে প্রিলিংক সক্ষম হওয়ার কারণে ঘটে যাওয়া কিছু ত্রুটি হিসাবে ত্রুটি হিসাবে রিপোর্ট করা হয়েছে তবে আমরা সেগুলি স্টডআউটে চাই।
মনোযোগ: সমস্ত ফাইল, অনুমতি এবং মালিক / গ্রুপ চেক করতে সক্ষম হতে রুট হিসাবে চালানোর প্রয়োজন run

grep -vE '^$|prelink:'

এমটিপি লাইনগুলির প্রদর্শন এবং এই জাতীয় প্রেরিঙ্ক ত্রুটিগুলি দমন করে (যেমন ত্রুটির উদাহরণ
prelink: /tmp/#prelink#.B14JBi: Recorded 10 dependencies, now seeing -1:)

sed 's|.* /|/|')

rpm -Vaকেবলমাত্র ফাইলের নাম দেখানোর জন্য আউটপুট ফিল্টার করবে

rpm -qf $()

যে সমস্ত প্যাকেজে থাকা এই প্যাকেজের মধ্যে থাকা সমস্ত ফাইলের নাম জিজ্ঞাসা করবে এবং প্যাকেজের নাম এবং সংস্করণ আউটপুট দেবে

| sort -u

সদৃশ প্যাকেজের নাম / সংস্করণ সংমিশ্রণগুলি দমন করবে।

সামগ্রিকভাবে আপনি প্যাকেজগুলির একটি তালিকা পাবেন যা যাচাইকরণে ব্যর্থ হয়েছে।

rpm -Vaএটি এখনও কিছু অপ্রাসঙ্গিক সমস্যা দেখাতে পারে, কারণ এটি প্যাকেজগুলির মধ্যে নির্ভরতাও পরীক্ষা করে, যা যুক্ত করে দমন করা প্রয়োজন --nodeps


2

আমি সম্প্রতি ওপেনসুএস 13.2 এ হারিয়ে যাওয়া ফাইলগুলির সাথে একই ধরণের সমস্যা পেয়েছি এবং এটির সাথে এটি স্থির করেছি:

rpm -Va --nodeps --nodigest --noscripts --nosignature --nofiledigest --nosize --nomode --nordev --nouser --nogroup --nomtime\
| awk -e '($1=="missing") && ($2=="d") {system("rpm -qf "$3);}; ($1=="missing") && ($2!="d") && ($2!="c") {system("rpm -qf "$2);}'\
| sort -u | xargs zypper in -f

আরপিএম-এর বিকল্পগুলি এবং ডেকে পাঠানো বিকল্পগুলি আমার ক্ষেত্রে সময় বাঁচানোর উদ্দেশ্যে করা হয়েছে, কারণ কোনও দুর্নীতি হয়নি।


1
যদি কোনও ফাইল দুর্নীতি না ঘটে থাকে, আপনি এমনকি যুক্ত করতে পারেন --nofilesএবং তাই yum check dependenciesএটি নির্ভরতা বিষয়গুলির জন্য সমস্ত ইনস্টল করা আরপিএম প্যাকেজগুলি কেবলমাত্র পরীক্ষা করবে as --nofilesনন-এসএসডি সংস্থাগুলির জন্য প্রচুর সময় সাশ্রয় করবে তবে আপনি যে ফাইলগুলি অনুপস্থিত রয়েছে তার চেকটি বাদ দিতে পারেন। ... শুধু সম্পূর্ণতার জন্য! এবং দয়া করে মনে রাখবেন, আপনি যদি LC_ALL=C
ইংরাজী স্ট্রিংয়ের জন্য গ্রেপ করেন তবে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.