/ বিন / সামগ্রীগুলিতে / ইউএসআর / বিনে সরানো হয়েছে, পূর্বে কী সম্ভব?


18

উবুন্টু ১ 17.০৪-তে চালাচ্ছি, আমি অ-সংগ্রহস্থল বিতরণ থেকে একটি সফ্টওয়্যার ইনস্টল করছিলাম, আমি সফ্টওয়্যার বিন-ফোল্ডার বিষয়বস্তুগুলিকে / ইউএসআর / বিনে স্থানান্তরিত করার কথা ছিল (যা ইতিমধ্যে ifif পরামর্শ ছিল)

এটি সেই দিনগুলির মধ্যে একটি, তাই আমি পরিবর্তে যা করেছি:

mv /bin/* /usr/bin

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

এখন আমার / বিন এবং / ইউএসআর / বিন সামগ্রীগুলি অভিন্ন এবং উভয়ই মূলত / বিন এবং / ইউএসআর / বিন পৃথক পৃথক ফাইলগুলি অন্তর্ভুক্ত করে।

  1. আমার উবুন্টু এখন কি ভাঙ্গা অবস্থায়? (কম্পিউটারটি এখনও রিবুট করার চেষ্টা করেন নি, এই মুহূর্তে এখনও সমস্ত কিছু কাজ করছে বলে মনে হচ্ছে)
  2. খুব সহজেই কোন ফাইলগুলি / ইউএসআর / বিনে অনুলিপি করা হয়েছে তা জানার কোনও উপায় আছে, তাই আমি নিজে নিজেই পরিস্থিতিটির যত্ন নিতে পারি? ২.১ সাধারণত / বিন এবং / ইউএসআর / বিনে ওভারল্যাপিং ফাইলগুলি থাকে?
  3. আমি যা করেছি তা পূর্বাবস্থায় ফেলার অন্যান্য উপায় আছে?

আমার টাইমশিফ্ট ইনস্টল করা নেই তাই ব্যাকআপগুলি পুনরুদ্ধার করা কোনও বিকল্প নয়, তবে বর্তমানে কম্পিউটারে সমালোচনার কিছু নেই, তাই আমি পুরো লিনাক্স পার্টিশনটি পুনরায় ইনস্টল করার জন্য স্ক্রুপআপে স্বীকার করতে পারতাম।


2
dpkg-query -l | awk '{system ("dpkg-query -L" $ 2 "| grep -E \" ^ / usr / bin /.*$ \ "")}' এটি আপনাকে সমস্ত ফাইল প্রাথমিকভাবে / usr / বিনের ভিত্তিতে প্রদান করবে প্যাকেজগুলি ইনস্টল করা হয়েছে
রমন সাইলোপাল

7
@ স্যাটাক্যাটসুরা /binসিস্টেম সমালোচনামূলক। এটির সামগ্রী অবশ্যই প্রাথমিক বুট পর্যায়ে উপস্থিত থাকতে হবে। আপনি কোনও পার্টিশনের ( /usrএখানে) চিহ্নের প্রতীকী লিঙ্ক তৈরি করতে চান না যা বুটে মাউন্ট করা যায় না।
xhienne

1
@ শিউইন আমি কখনও বলিনি যে এটি পুনরায় বুট থেকে বাঁচবে। সিস্টেমটি মেরামত করতে সক্ষম হওয়ার জন্য পর্যাপ্ত কার্যকারিতা পাওয়ার জন্য এটি একটি অস্থায়ী ফিক্স।
স্যাট কাটসুরা

1
আপনি কীভাবে ডিস্ট্রো সেট আপ করেন তার উপর নির্ভর করে @ xhienne। উদাহরণস্বরূপ, আর্চ /binডিফল্টরূপে পৃথক রক্ষণাবেক্ষণ করে না । উবুন্টুর ডিফল্ট বিভাজন পৃথক /usrপার্টিশন তৈরি করে না । আমি কৌতূহল বোধ করি কতজন লোক আসলে /usrআধুনিক ডিস্ট্রো দিয়ে আলাদা করে তোলে ।
মুরু

1
@ মুরু আমার মন্তব্যটি সাধারণ হিসাবে গ্রহণ করুন Take পার্টিশনের সংখ্যায় আপনি যা চান তা আপনি ধরে নিতে পারেন, আমি পছন্দ করি না এবং আমি / usr / bin / * সাথে / বিন সংযোগের বিরুদ্ধে হুঁশিয়ারি উচ্চারণ করি যা পুরোপুরি অকেজো এবং সবচেয়ে খারাপ দিক থেকে পরবর্তী বুটটিতে সিস্টেমকে ব্যবহারযোগ্য না করে দিতে পারে । এফএইচএস অনুসরণ করে এমন কোনও সিস্টেমে / usr / bin- তে সিমলিংক থাকা উচিত নয়। পরিবর্তে ফাইলগুলি অনুলিপি করতে ওপিকে ভাল পরামর্শ দেওয়া হয়েছিল।
xhienne

উত্তর:


19

আমার উবুন্টু এখন কি ভাঙ্গা অবস্থায়?

হ্যাঁ, আপনার উবুন্টু নষ্ট হয়ে গেছে

আপনি প্যাকেজ পরিচালনার জন্য গুরুত্বপূর্ণ কিছু নিয়ে গেছেন ।

সুতরাং অনুশীলনে, আপনার গুরুত্বপূর্ণ ডেটাটি ব্যাকআপ করুন (কমপক্ষে /etcএবং /home), সম্ভবত ইনস্টল করা প্যাকেজগুলির তালিকা যেমন dpkg -lউবুন্টুকে আউটপুট এবং পুনরায় ইনস্টল করুন।

(একজন অ-শিক্ষিত লোক পরিচালনা করার চেষ্টা করতে পারে - অন্যান্য উত্তরের মতো - তবে তখন সে এত বড় এবং মৌলিক ভুল করত না)

আমি শুধু স্ক্রুআপ পুরো লিনাক্স পার্টিশন পুনরায় ইনস্টল করতে স্বীকার করতে পারে।

এটি সম্ভবত আপনার সময়ের কম খরচ করবে। অন্যান্য উত্তরের সাহায্যে আপনার বর্তমান সিস্টেমটি রাখা এটি খুব অগোছালো অবস্থায় রাখছে (যা আপনাকে ভবিষ্যতের মাথাব্যথা দেয়)।

যেহেতু আপনি আপনার ডিস্কটি পুনরায় ফর্ম্যাট করছেন, /homeতাই আলাদা পার্টিশন স্থাপন বিবেচনা করুন (যাতে ভবিষ্যতে এই জাতীয় ভুলগুলি আপনার ডেটা হারাবে না)। কাগজে সেই মুদ্রণটি করার পূর্বে df -hএবং df -hiএবং fdisk -l(তারা ডিস্ক স্পেস -অন্য ব্যবহৃত এবং উপলব্ধ- ...) সম্পর্কিত তথ্য দেয়। যথেষ্ট পরিমাণে সিস্টেম পার্টিশন (রুট ফাইল সিস্টেম) বুদ্ধিমান হবেন; যদি আপনি এটি সহ্য করতে পারেন তবে 100 গিগাইটস যথেষ্টের চেয়ে বেশি।

আমার সফ্টওয়্যার বিন-ফোল্ডার সামগ্রীগুলি / usr / বিনে সরানোর কথা ছিল

(পরিভাষা: ইউনিক্সের ডিরেক্টরি রয়েছে, "ফোল্ডার" নয়)।

এটি ( যাওয়ার দিকে /usr/bin/) খুব ভুল। হয় আপনার উন্নতি $ PATH- সবচেয়ে অ্যাড দিকে (বিশেষ করে) অথবা symlinks মধ্যে /usr/bin/এবং বিশেষ করে সরানো (অথবা symlinks যোগ করুন) থেকে এক্সেকিউটেবল /usr/local/bin/

জ্ঞানী পদ্ধতির কখনো পরিবর্তন হয় /usr/bin/, /bin, /sbin, /usr/sbin/ প্যাকেজ পরিচালনা সরঞ্জামের বাহিরে (যেমন dpkg, apt-get, aptitude, ইত্যাদি ...)। এফএইচএস পড়ুন ।


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

1
হিসাবে /binএবং /usr/binএখন অভিন্ন, আমি নিশ্চিত না কেন প্যাকেজ ব্যবস্থাপনার ত্রুটি থাকবে। সত্যিই একটি মামলা কোথায় /bin/fooএবং /usr/bin/fooউভয় একটি প্যাকেজ (গুলি) দ্বারা প্রদান করা হয়। যদি তা না হয় তবে চারপাশে ভাসমান কয়েকটি অতিরিক্ত ফাইল রয়েছে।
স্ট্রংব্যাড

3
@ বাসাইল না এটি হবে না (অসন্তুষ্ট হবে); প্যাকেজ পরিচালন কেবল সেই ফাইলগুলির বিষয়ে চিন্তা করে যা এটি জানে care এটি এটি যে ফাইলগুলি জানে না সেগুলি সম্পর্কে অভিযোগ করবে না। এমনকি ফাইলগুলির জন্যও এটি জানে , তারা পরিবর্তিত হয়ে থাকলে এটি বিশেষভাবে উদ্বিগ্ন হবে না ...
স্টিফেন কিট

2
@ বেসিলও আমি উত্তরোত্তর অংশের উপর নির্ভর করব না "(একজন উত্তর-পূর্বের লোক উত্তর দেওয়ার মতো - পরিচালনা করার চেষ্টা করতে পারে, তবে সে এত বড় এবং মৌলিক ভুল করতে পারে না)" সত্য হচ্ছে ;-) being এমনকি বিশেষজ্ঞরা কখনও কখনও পিছলে!
স্টিফেন কিট

1
FWIW আমার মূল সিস্টেমটির /পার্টিশনটি 12 গিগাবাইট এবং আমি কখনই কে.ডি. তে (হেডারের ফাইলগুলি এবং অনেক সরঞ্জাম পড়ুন) অফিস এবং ডিজাইনের (ভারী সরঞ্জামগুলি পড়ার জন্য) ব্যবহার করার পরেও স্পেস ইস্যুতে প্রবেশ করি নি into আপনি বিভক্ত না হলে আরও 4 জিবি নিক্ষেপ করুন /var, আমার চেয়ে আরও বড় মার্জিন চাইলে 25% দ্বারা স্ফীত করুন, এবং 20 জিবিতে আপনি ভাল থেকে বেশি more
spectras

36

লিনাক্সে (এবং বেশিরভাগ অন্যান্য সিস্টেমে, যদিও পসিক্স আপনাকে ফাইল গ্যারান্টিটি দেয় না যদি না সরানো ফাইল সিস্টেমগুলি অতিক্রম করে) তবে তাদের সিটিএম আপডেট হত, সুতরাং ধরে নেওয়া যে অন্য /usr/bin24 টির মধ্যে কোনওটিই শেষ 24 ঘন্টা স্পর্শ হয়নি been , আপনার সাথে এগুলি আবার সরাতে সক্ষম হওয়া উচিত:

find /usr/bin/. ! -name . -prune -ctime -1 -exec sh -c '
   echo mv -i "$@" /bin' sh {} +

echoযদি এটি ঠিক দেখাচ্ছে তবে অপসারণ করুন । মনে রাখবেন যে আপনি একই নামেই থাকা ফাইলগুলিতে পুনরুদ্ধার করতে সক্ষম হবেন না /binএবং /usr/bin(মূল ফাইলগুলি এতে /usr/binহারিয়ে যেত)

একটি সম্ভাব্য সতর্কতা: যদি কিছু ফাইল দু'টিতেই শক্তভাবে লিঙ্ক করা থাকে /binএবং /usr/binসমস্ত হার্ড লিঙ্কগুলিতে সরিয়ে নেওয়া /usr/binহবে /bin

এখন, আপনি যেহেতু যে মনে হতে পারে /binএবং /usr/binডিফল্ট আছে $PATH, এবং /binপাওয়া যায় /bootআগে অন্তত /usrমাউন্ট করা, তাই না ব্যাপার কিনা এক্সেকিউটেবল হয় উচিত /binপরিবর্তে /usr/bin

তবে এটি উপেক্ষা করা হবে যে অনেক কমান্ডগুলি এক্সিকিউটেবলের পাথগুলিকে হার্ড কোড করে এবং কিছু নির্দিষ্ট ক্ষেত্রে তাদের প্রত্যাশা করে। একটি সাধারণ কেস হ'ল সে-ব্যাংস। সমস্ত স্ক্রিপ্ট যা আছে:

#! /usr/bin/env bash

আপনি করার পরে কাজ করতে ব্যর্থ হবে mv /usr/bin/env /bin/env। সে ক্ষেত্রে, উভয় স্থানে কমান্ড থাকা নিরাপদ যে এটি sc স্ক্রিপ্টগুলিকে ভঙ্গ করবে না।


3
উপরে বর্ণিত হিসাবে (আমি আমার মন্তব্য সরিয়ে দিয়েছি কারণ এতে একটি গুরুতর ত্রুটি ছিল যা " iorryসরি নামে পরিচিত একটি ডিরেক্টরিতে সমস্ত কিছু স্থানান্তরিত করার চেষ্টা করবে !) উবুন্টুর মতো জিএনইউ / লিনাক্স সিস্টেমে GNU Coreutils সমর্থন করার find /usr/bin/. ! -name . -prune -ctime -1 -exec echo mv -it /bin {} +পরে ব্যবহার করতে পারে । অন্যান্য ওএসগুলি সাধারণত এটি সমর্থন করে না , বা এটি ব্যাসিবক্সের সরবরাহিত বিকল্পে কাজ করে না । mv-tmv
এলিয়াহ কাগন

17
  1. আপনার ইনস্টলেশন বেশিরভাগ ঠিক থাকতে হবে; একই নাম /usrএবং /usr/bin(যা আপনার ২.১ এর উত্তর দেয়) সহ আলাদা আলাদা ফাইল থাকা উচিত নয় , সুতরাং সমস্ত ফাইল উভয়ের মধ্যে থাকা /binএবং /usr/binকোনও কিছুই ভাঙ্গবে না (যতক্ষণ না আপনি প্যাকেজগুলি আপগ্রেড করবেন)। আপনার এখন কেবলমাত্র সমস্যাটি হ'ল ভাঙা সিমলিংকস, যদি আপনি বাইনারিটিকে একটি সিমলিংক দিয়ে ওভাররাইট করেন। এটি ঠিক করতে, ভাঙা প্রতীকগুলি দেখুন:

    find -L /bin /usr/bin -type l -ls
    

    এবং তালিকাভুক্ত ফাইলগুলির সাথে সম্পর্কিত যে কোনও প্যাকেজ পুনরায় ইনস্টল করুন (উদাহরণস্বরূপ, যদি /usr/bin/zshভাঙ্গা হিসাবে প্রদর্শিত হয় dpkg -S /bin/zsh /usr/bin/zshতবে ফাইলটি কোন প্যাকেজ থেকে এসেছে তা আপনাকে পুনরায় ইনস্টল করবে apt --reinstall install zsh)।

  2. আপনি সম্প্রতি পরিবর্তন করা ফাইলগুলি (যা আপনার স্থানান্তরিত ফাইল অন্তর্ভুক্ত করবে) দেখতে সিটিটাইমে বাছাই করে বাছাই করতে পারেন:

    ls -ltc /bin
    
  3. আপনি যা করেছেন তা পূর্বাবস্থায় cruftফেলার সর্বোত্তম উপায় হ'ল প্যাকেজটি ব্যবহার করুন এবং এতে পাওয়া ফাইলগুলি মুছুন /binবা /usr/binপ্যাকেজ থেকে আসে না:

    sudo apt install cruft
    sudo cruft -d "/ /usr"
    

    যদি না ফাইলগুলিতে ফাইলগুলির প্রতিলিপি না থাকে /etc/alternatives( সেক্ষেত্রে আপনার এগুলি একা রেখে দেওয়া উচিত)।


স্ক্রিপ্টগুলি বাদ দিয়ে শুরু করুন #! /bin/shবা এর অনুরূপ।
স্যাটা ক্যাটসুরা

@ SatōKatsura তারা এখনও কাজ জরিমানা would যদি shউভয় হয় /binএবং /usr/bin(সমস্ত ফাইলগুলি এখন সদৃশ হয়)।
স্টিফেন কিট

1
cruftএই কাজের জন্য একটি বিশেষ সরঞ্জাম যেমন প্রয়োজন হয় না কারণ প্যাকেজ ম্যানেজার ইনস্টল করা ফাইলগুলিও ট্র্যাক করে। Unix.stackexchange.com / প্রশ্নগুলি / 153260/ … দেখুন ।
নেড 64

1
comm -12 <(ls /bin) <(ls /usr/bin)আমি এটি পরীক্ষিত একটি উবুন্টু সিস্টেমে কয়েকটি এন্ট্রি দেখান। /bin/foo -> /usr/bin/fooযার অর্থ সহ কিছু fooহারিয়ে যেত।
স্টাফেন চেজেলাস

@ স্টাফেন আহ হ্যাঁ, লিঙ্কটি সরিয়ে নেওয়া আসলটি অনুভব করবে ...
স্টিফেন কিট

6

আপনার সিস্টেমটি কেন কেবল বৃহত্তর বা কম পরিমাণে, 'ভাঙ্গা' হয়েছে তা বিস্তৃত করা শিক্ষামূলক হতে পারে ।

  1. @ বেসাইল-স্টারিঙ্কেভিচটি যেমন উল্লেখ করেছে, প্যাকেজ পরিচালন ব্যবস্থায় বাইনারিগুলি /binকখন তাদের মধ্যে থাকা উচিত তা খুঁজে পাওয়া গেলে /usr/binএবং এর বিপরীতে বিভ্রান্ত হওয়ার সম্ভাবনা রয়েছে ।
  2. কিছু (সম্ভবত গুরুত্বপূর্ণ) স্ক্রিপ্টগুলি একটি ডিরেক্টরি বা অন্যটিতে নির্দিষ্ট বাইনারি খুঁজে পাওয়ার জন্য শক্ত-ওয়্যার্ড হতে পারে (কিছু পরিস্থিতিতে এটি ভাল অনুশীলন, উদাহরণস্বরূপ সুরক্ষার দিক থেকে, সামগ্রীর সামগ্রীর উপর নির্ভর না করা $PATH)।
  3. এর মধ্যে পার্থক্য থাকার কারণ /binএবং /usr/binএটি হ'ল প্রাক্তনটি সম্ভবত পার্টিশনে থাকতে পারে যা বুটের প্রথম পর্যায়ে মাউন্ট করা থাকে। এই প্রসঙ্গে (উদাহরণস্বরূপ, সিস্টেম বুট করার সময়) /bin/xxxবাইনারিগুলি কেবল একটি সম্পূর্ণ পাথ দ্বারা চিহ্নিত করা হত না , তবে ডিরেক্টরিটি /usr/binসেই সময়ে সিস্টেমে উপলব্ধ নাও হতে পারে। (যদি আপনি df /binএবং df /usr/bin, আপনি একই ফাইল তালিকাভুক্ত বা অন্য একটি তালিকা দেখতে পাবেন; সম্ভবত বেশিরভাগ ডিফল্ট ইনস্টলস, আজকাল একই পার্টিশনে উভয় ডিরেক্টরি রেখে দিন)।

সুতরাং আপনি এটি দ্বিগুণ দেখতে পারেন, যদি আপনার উভয় ক্ষেত্রে একই বাইনারি থাকে /binএবং /usr/binতবে সমস্যা 2 এবং 3 না ঘটে এবং 1 থেকে ক্ষতির পরিমাণটি সামান্য হতে পারে। পুনরায় 1, উদাহরণস্বরূপ, আপনি যদি প্যাকেজগুলি অপসারণ করার চেষ্টা করেন তবে প্যাকেজগুলি সঠিকভাবে আনইনস্টল করা যাবে না; আপগ্রেড যদি 'সঠিক' জায়গায় কপিটি আপগ্রেড করার চেষ্টা করে তবে 'ভুল' জায়গায় অনুলিপিটিকে উপেক্ষা করে আপগ্রেডগুলি গার্ফ হয়ে যেতে পারে। সুতরাং, যদি উপরের প্রতিকারগুলি খুব কঠোর বা জটিল বলে মনে হয় তবে আপনি সিস্টেমটিকে এই অবস্থায় রেখে চলে যেতে পারেন।

তবে এটি যদি একটি গুরুত্বপূর্ণ সিস্টেম হয় তবে আমি সত্যিই এটির উপর ব্যাংক করব না।

একটি সাধারণ নিয়ম (আবার অনুনাদী @ Basile-starynkevitch) সঙ্গে বানর কখনও হয় /usr/bin, /binএবং একটি প্যাকেজ যা তার স্বাভাবিক ইনস্টল হচ্ছে ... না একটি ভাল প্যাকেজের অংশ হিসাবে এমনটি পরামর্শ - তারা বন্টন করতে 'অন্তর্গত' - এবং বন্ধুদের।

সম্পাদনা: প্রাসঙ্গিক 3 নির্দেশ, একটি এর systemd হল / ফেডোরা এবং বন্ধুদের প্রেক্ষাপটে আলোচনা কেন এটা জ্ঞান করে তোলে সব বিষয়বস্তু সরাতে এর /binজন্য /usr/bin, এবং দ্বিতীয় প্রথম সিমবলিক লিঙ্ক। এই না একটি সুপারিশ আপনি এই কাজ করতে যে, নিজেকে - যে পৃষ্ঠা যারা ডিস্ট্রিবিউশন করতে সম্বোধন করা হয়েছে - কিন্তু কেন এই পার্থক্য বিদ্যমান কিছু ইতিহাস অন্তর্ভুক্ত (এবং বিবক্ষিত কেন এটা এখন নিছক ধূলিমলিন ঐতিহ্য)।

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