প্যাকম্যান "ফাইল সিস্টেমে বিদ্যমান" ত্রুটি


38

আমি দৌড়ে এসেছি sudo pacman -Syuএবং পড়তে কিছু আকর্ষণীয় ত্রুটি পেয়েছি:

ত্রুটি: লেনদেন করতে ব্যর্থ হয়েছে (বিরোধী ফাইলগুলি)

এবং তারপরে ফাইলগুলির একটি দীর্ঘ তালিকা exists in filesystem। সম্পূর্ণ আউটপুট এখানে: http://ix.io/lLw

দেখা যাচ্ছে যে এই ফাইলগুলির মধ্যে অনেকগুলি প্যাকেজের সাথে জড়িত নয় যখন আমি সেগুলি পরীক্ষা করেছিলাম pacman -Qo <path-to-file>, তবে আমি সেগুলি চেক করি নি। আমি দৌড়ানোর সময় আমার একটি দুর্বল সংযোগ ছিল pacman -Syu, তবে পরে আপডেট করার সময় আমি একই ত্রুটিগুলি পেয়েছি: http://ix.io/lLx

আমার কি করা উচিৎ? আমার কি সমস্ত ফাইল চেক করা উচিত এবং এর সাথে যুক্ত প্যাকেজ নেই এমন ফাইলগুলি মুছে ফেলা উচিত? আমি আপডেট জোর করা উচিত (সঙ্গে sudo pacman -S --force <package-name>?)

হালনাগাদ

আমি দৌড়ানোর চেষ্টা করেছি sudo pacman -S --force <package-name>এবং পেয়েছি:

[my-pc]/home/average-joe$ pacman -Qo /usr/lib/python3.5/site-packages/PyYAML-3.11-py3.5.egg-info
error: No package owns /usr/lib/python3.5/site-packages/PyYAML-3.11-py3.5.egg-info

দেখে মনে হচ্ছে pacman -S --force <packageযে ফাইলগুলি রয়েছে এমন ডিরেক্টরিগুলি ওভাররাইট করে না। লোকটির কাছ থেকে:

- ফোর্স ব্যবহার করে কোনও ফাইলের সাহায্যে ডিরেক্টরি ওভাররাইট করা বা বিরোধী ফাইল এবং ডিরেক্টরি সহ প্যাকেজ ইনস্টল করার অনুমতি দেওয়া হবে না।

আমি কি কেবল বিরোধী ডিরেক্টরিগুলি মুছব? (তাদের সাথে সম্পর্কিত প্যাকেজ নেই)


5
আপনি কেন প্রথম স্থানে বিবাদী ফাইল রাখবেন? প্যাকেজ ম্যানেজারটি ব্যবহার করার সময়, এর পায়ের আঙ্গুলগুলিতে ট্যাপ না করার চেষ্টা করুন (উদাহরণস্বরূপ প্যাকেজ ম্যানেজার /usr/local//usr/
যথাযথভাবে

1
@ umläute আমি বিবাদী ফাইলগুলি কোথা থেকে এসেছে তা আমি ঠিক নিশ্চিত নই, তবে আমার সন্দেহ হয় যে তারা এই পৃষ্ঠায় ব্যবহার করে আমি ইনস্টল করা ডকর-রচনা ইনস্টল করার সাথে সম্পর্কিত । পাকম্যানের সাথে সম্ভবত দ্বন্দ্ব? sudo pip install -U docker-compose==1.5.0rc3 sudo pip install
modulitos

2
@ umläute ভুল -Sআপডেটগুলি (আংশিক ইনস্টলগুলি, ইত্যাদি) পাওয়ার ফলে আপনি সেই দৃশ্যটি সঞ্চার করতে পারবেন। আমার কেস --forceসব সময় কাজ করে।
erm3nda

উত্তর:


28

ঠিক আছে, এটি চলমান sudo pacman -S --force <package-name>কাজগুলির মতো দেখায় , তবে এটি বিরোধী ডিরেক্টরিগুলি সমাধান করে না। এই ধরনের ক্ষেত্রে, sudo rm -rfবিবাদী ডিরেক্টরিতে চালানো, তার পরে sudo pacman -S --force <package-name>কাজগুলি।

এখন আমার pacman -Syuসমাধান ভাল।


6
--ফোর্স অবচিত হয়; পরিবর্তে --overwrit ব্যবহার করুন।
অঙ্কিত বাল্যান


2
sudo pacman -Syu --forceআমার জন্য কাজ করেছে, তবে ওভাররাইটটি চিহ্নিত করা যায়নি।
স্পাইডন

21

tl; dr: চলমান আগে বিরোধী অ্যাপ্লিকেশন আনইনস্টল করুন pacman

pacman(এবং অন্যান্য প্যাকেজ পরিচালক) তারা যে প্যাকেজগুলি এবং ফাইল পরিচালনা করে তার সূচি রাখে ( pacman --query --list)। কনফিগারেশনের মতো কিছু ফাইল পরিবর্তিতযোগ্য হিসাবে চিহ্নিত হবে এবং আপগ্রেড করার সময় ওভাররাইট করা হবে না (বিশেষ পরিস্থিতিতে ব্যতীত, যেখানে প্যাকেজ ব্যবস্থাপক সাধারণত নতুন ফাইল তৈরির আগে পুরানো ফাইল সরিয়ে ফেলবেন)। অন্যান্য ফাইলগুলি অশোধিত হিসাবে চিহ্নিত করা হবে। অন্য কোনও অ্যাপ্লিকেশন যদি সেই সূচিগুলি আপডেট না করে কোনওভাবে সেই ফাইলগুলিকে পরিবর্তন করে তবে প্যাকেজ পরিচালকের পক্ষে কোনও আপগ্রেডের সময় সেই ফাইলগুলি কী করবেন তা জানার উপায় নেই।

স্ট্যান্ডার্ড ./configure && make && sudo make installপ্যাটার্ন ব্যবহার করে ইনস্টল করা অনেক অ্যাপ্লিকেশন ব্যবহার করে আনইনস্টল করা যায় sudo make uninstall। আপনি যদি অন্য কোনওভাবে অ্যাপ্লিকেশনটি ইনস্টল করে থাকেন তবে এটি আনইনস্টল করার জন্য আপনার অন্য কিছু হতে পারে। সাধারণভাবে এ জাতীয় ক্ষেত্রে নির্ভরযোগ্যভাবে আনইনস্টল করতে সক্ষম হওয়ার জন্য ইনস্টলেশন ফাইলগুলির একটি অনুলিপি কোথাও রাখা (উদাহরণস্বরূপ ~/install) রাখা ভাল ধারণা হতে পারে। বিরোধী ফাইলগুলি সরিয়ে ফেলার ফলে সম্ভবত অন্যান্য ফাইলগুলি পড়ে থাকবে যা সম্ভবত অন্যান্য সমস্যার কারণ হতে পারে।

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


2
উপরে আমার উপর ক্লিক করুন আমার মন্তব্য দেখুন। আমার ধারণা দ্বন্দ্বটি একটি sudo pip installআদেশ থেকে হয়েছিল । সম্ভবত আমার কি সুডোর সাথে পিপ ব্যবহার করা এড়ানো উচিত?
modulitos

3

আমি প্যাকেজগুলি ইনস্টল করছিলাম যা আমি সাধারণত প্যাকম্যানের মাধ্যমে পাইপ দিয়ে ইনস্টল করি। তবে কিছু প্যাকেজ প্যাকম্যান রেপোতে পাওয়া যায় নি। আমি মনে করি আমাদের sudo সুবিধাগুলি এবং স্থিতাবস্থা সহ পাইপ ইনস্টল করা উচিত:

pip install pillow --user

- ব্যবহারকারীর ফ্ল্যাগ পরিবর্তে আপনার হোম ডিরেক্টরিতে পাইপ ইনস্টল করার প্যাকেজ তৈরি করে, যার জন্য কোনও বিশেষ সুবিধার দরকার নেই। https://stackoverflow.com/questions/42988977/what-is-the-purpose-pip-install-user


2

TLDR;

  1. আপত্তিজনক ফাইলের একটি তালিকা পান (একটি ফাইলের মধ্যে প্যাকম্যানের আউটপুট অনুলিপি করুন এবং পেস্ট করুন)।
  2. নতুন তালিকাতে ফাইলের পথ বাদ দিয়ে সবকিছু ছিটকে ফেলার জন্য বিশ্রী ব্যবহার করুন ।
  3. ব্যবহারের সময় তালিকার উপর ভিত্তি পথ থেকে আপত্তিকর ফাইল স্থানান্তর করার জন্য।
  4. sudo pacman -Syuআবার দৌড়াও ।

    টিএলডিআর যুক্ত করতে এবং টাইপগুলি ঠিক করতে সম্পাদিত

যদিও আমি বেশ নিশ্চিত যে আমি বোকা কিছু করি নি, মাঞ্জারো ব্যবহার করার পর থেকে প্রতিবারই আমি আপডেট করার চেষ্টা করেছি এই সমস্যাটি; দুই মাসের মধ্যে তিন বা চারবার। পয়েন্ট হচ্ছে, এটি এটি স্থির করে।

আপনার ফাইলগুলির একটি তালিকা পান।

আপডেটটি যখন আপনার টার্মিনাল উইন্ডোতে ব্যর্থ হয়, আপনি এটি পান:

error: failed to commit transaction (conflicting files)
evilfile: /usr/bin/evilfile exists in filesystem
libx000: /usr/lib/libx000.so.f.u.loser exists in filesystem
accountsservice: /usr/share/locale/ru/LC_MESSAGES/accounts-service.mo.yu.dnt.evn.spk.russian exists in filesystem

... এবং আরো অনেক কিছু.

  • টার্মিনাল থেকে আউটপুট অনুলিপি করুন, এবং এটি একটি ফাইলে রাখুন। আমি ন্যানো ব্যবহার করেছি এবং আমার নাম "ফাইল" রেখেছি ~ / ওয়ার্ক / ফাইল হিসাবে

  • বহির্মুখী তথ্য স্ট্রিপ:

    cat files | awk '{print $2}' >> ~/work/files2

    এটি প্রতিটি লাইন থেকে দ্বিতীয় "শব্দ" নেয় এবং এটি ফাইল 2 এ মুদ্রণ করে।

ফাইলগুলির সাথে ডিল করুন

  • আপনি এগুলি মুছতে, সেগুলি সরাতে বা তাদের নাম পরিবর্তন করতে পারেন।

  • যদি কিছু কিছু ভেঙে যায় তবে এটি মুছে ফেলা বা নাম পরিবর্তন করার পরিবর্তে এটিকে সরিয়ে দিয়ে যদি এটি ভেঙে যায় তবে এটি ঠিক করা সবচেয়ে সহজ:
    mkdir ~/work/oldfiles while read -r file; do sudo mv -- "$file" ~/work/oldfiles/$file; done < files2

  • আপনি যদি সত্যিই সেগুলি মুছতে চান, যা করার কোনও কারণ নেই ( ড্যাংজার ড্যাঞ্জার ): -আর পড়ার সময় ফাইল; do sudo rm - "$ ফাইল"; সম্পন্ন <ফাইল 2

আপডেট করা হচ্ছে

  • প্যাকেজটি ভাঙা হয়নি বুঝতে পেরে প্যাকম্যান পেতে আমাদের কাজ করতে - ওভার রাইট পেতে, আপনার নিম্নলিখিত বাক্য গঠনটি প্রয়োজন:

    sudo pacman -S package_name --overwrite /location/of/thing

    • আমার ক্ষেত্রে: sudo pacman -S libidn2 --overwrite /usr/lib/libidn2.so.0
    • উদাহরণ অনুসরণ করে: sudo pacman -S libx000 --overwrite /usr/lib/libx000.so.f.u.loser
  • আমার খুব সুন্দর সমস্যা হয়েছিল যেখানে আমি যদি libidn2.so.0 সিমিলিংকটি মুছে ফেলি, কিছুই কাজ করে না, এবং যখন আমি এটি ফিরিয়ে রাখি তখন আমার "ফাইল সিস্টেমে বিদ্যমান" ত্রুটি ঘটেছে। ওভারওরাইট সহ উপরেরটি, আমার পক্ষে কাজ করে।

  • অবশেষে:

    sudo pacman -Syu


0

আমার মতো আপনার যদি অনেক ফাইল থাকে,

sudo pacman --force -Syyu  

সমস্ত সমস্যার সমাধান করে।


বিকল্প - বল অবচিত করা হয়; পরিবর্তে
মাহমুদ খালেদ

- ওভাররাইটে কী ওভাররাইট করা উচিত তা অবশ্যই উল্লেখ করতে হবে। বর্তমানে ব্যবহার করুন
xsilen T

0

প্যাকম্যান অবশেষে --forceবিকল্পটি অবমূল্যায়ন করার পরে এবং সারোগেট --overwriteবিকল্পটি প্রত্যাশার মতো কাজ করার জন্য, নিম্নলিখিত ব্যবহারের ধরণটি লক্ষ্য করা উচিত।

--forceবিকল্পটি পুনরুত্পাদন করার জন্য একটি সমতুল্য কমান্ড যা দ্বন্দ্বের সাথে অন্ধভাবে সংঘর্ষের যে কোনও বিষয় হতে পারে:

sudo pacman -S --overwrite \*

অথবা

sudo pacman -S --overwrite "*"

প্রথমে শেলটি প্রসারিত করা এড়ানোর জন্য ছদ্মবেশী অংশটি গ্লোব থেকে বাঁচছে।

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