দুর্ঘটনাক্রমে / usr নামকরণের পরে, আমি কীভাবে এটির পুনরায় নামকরণ করব?


62

আমি ঘটনাক্রমে ডিরেক্টরির নতুন নামকরণ /usrমধ্যে /usr_bak

আমি এটি আবার পরিবর্তন করতে চাই, সুতরাং সিস্টেমটিকে কমান্ডটি সন্ধান /usr_bak/binকরার $PATHজন্য আমি পথটি সংযোজন করব sudo

তবে এখন sudo mv /usr_bak /usrআমাকে ত্রুটি দেয়:

sudo: error while loading shared libraries: libsudo_util.so.0: cannot open shared object file: No such file or directory

সেখানে নামান্তর করতে একটি উপায় আছে কি /usr_bakহিসাবে /usrসিস্টেম পুনরায় ইনস্টল ব্যতীত?


2
এটি কোন ওএস? আমি ভাবছি sudoএমনকি লাইব্রেরির পর্যায়ে কীভাবে পৌঁছেছে, এটি সাধারণত থাকে /usr/bin/এবং একটি কমান্ড-না-পাওয়া ত্রুটির সাথে ব্যর্থ হওয়া উচিত ছিল। এছাড়াও, আপনার কি একটি মূল পাসওয়ার্ড সেট আছে?
মুরু

3
@ মুরু এটি উবুন্টু। আপনি ঠিক, আমি ভুল পান করেনি not foundএর আগে তা আমি নতুন পথ যোগ /usr_bak/binকরার $PATHএবং এখন আমি এখানে নিলাম আমার পোস্টে ভুল পান ...
ইভস

2
@ ব্যবহারকারী 1717828 এটি জটিল। আমাকে উবুন্টু ১..০৪-তে উবুন্টু ১..০৪-তে বিকাশিত একটি প্রকল্প তৈরি করতে হবে। তাই আমি ভাবছি উবুন্টু 17.10 এর /usrওভাররাইট করার /usrজন্য আমি যদি উবুন্টু 16.04-র অনুলিপিটি সহজেই অনুলিপি করতে পারি ...
Yves

6
আপনি কি এইরকম কঠোর পরিবর্তনের পরিবর্তে প্রকল্পটি সংকলন করতে কোনও ভিএম ব্যবহারের কথা বিবেচনা করেছেন?
কেভিন

3
আপনি হেডলেস মোডে ভার্চুয়ালবক্স চালাতে পারেন । অন্য কোনও মেশিনে অতিথির সেট আপ করা বা প্রাক-কনফিগার করা একটি পাওয়া সবচেয়ে সহজ হতে পারে।
কেভিন

উত্তর:


109

যেহেতু আপনি উবুন্টুতে ডিফল্টরূপে রুট, ব্যবহার suএবং busyboxইনস্টল করার জন্য একটি পাসওয়ার্ড সেট করেছেন । সমস্ত suপ্রয়োজনীয় গ্রন্থাগার রয়েছে /lib। ব্যস্তবক্স হ'ল ইউটিলিটিগুলির একটি সংগ্রহ যা স্থিতিশীলভাবে সংযুক্ত, সুতরাং গ্রন্থাগার হারিয়ে যাওয়া কোনও সমস্যা হবেনা। না:

su -c '/bin/busybox mv /usr_bak /usr'

(যদিও ব্যাসিবক্সে নিজেও একটি suঅ্যাপলেট রয়েছে, /bin/busyboxবাইনারিটি নির্ধারিত নয় এবং এটি রুট হিসাবে চালানো না হলে কাজ করে না))

আপনার যদি মূল পাসওয়ার্ড না থাকে তবে আপনি সম্ভবত এখানে গিলসের সমাধানটি ব্যবহার করে ব্যবহারLD_LIBRARY_PATH করতে পারেন , বা (গিলস বলেছেন এটি সুদোর মতো নির্ধারিত বাইনারিগুলির সাথে কাজ করবে না) পুনরায় বুট করুন এবং init=/bin/busyboxকার্নেল প্যারামিটার হিসাবে বুট করতে GRUB মেনুটি সম্পাদনা করুন এবং সরান ফোল্ডার ফিরে।


73
এখন, দুর্ঘটনাক্রমে নাম পরিবর্তন করবেন না /lib
sleblanc

5
LD_LIBRARY_PATHসুডো চালাতে সাহায্য করবে না কারণ sudoসেটুইড আছে। যদি এর লাইব্রেরিগুলি সঠিক জায়গায় না থাকে তবে মূলটি মেরামত না করা পর্যন্ত sudo কাজ করবে না।
গিলস

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

8
@ হ্যাঁ, আপনি যদি নাম পরিবর্তন করেন /libতবে আপনাকে সম্ভবত পুনরায় বুট করতে হবেinit=/bin/busybox
মারু

3
@ ইয়ভেস: আপনার ফাইল সিস্টেমগুলি মাউন্ট করতে পারে এমন একটি লাইভ ডিস্ট্রো সহ একটি ইউএসবি স্টিক থেকে বুট করুন এবং আপনি যে কোনও কিছু ঠিক করতে প্রস্তুত set এমনকি আপনি কিছু মুছে ফেললে প্যাকেজ মিরর থেকে প্রতিস্থাপন ফাইলগুলি ডাউনলোড করা।
পিটার কর্ডস

33

মুরুর উত্তর ছাড়াও :

  • আপনি আপনার সিস্টেমটি মেরামত করতে কিছু রেসকিউ বুট ইউএসবি কী ব্যবহার করতে পারেন; উদাহরণস্বরূপ যদি আপনার সিস্টেমটি কিছু ডেবিয়ান বা উবুন্টু হয় তবে উদ্ধার মোডে ইনস্টলেশন ইউএসবি কী বুট করুন এবং উপযুক্ত mountএবং mvএবং করুন umount

  • আরো সহজে যেমন ভুল মেরামত করতে পাবে, আমি সাধারণত একটি স্ট্যাটিক শেল বিভিন্ন builtin কমান্ড দিয়ে ইনস্টল (কিছু সঙ্গে উল্লেখযোগ্য হল cp, rm, mv-একটি builtins) যেমন sash(এটা হয় প্যাকেটজাত ডেবিয়ান & উবুন্টু, এবং যেমন উপলব্ধ উত্তরীয়-3.8। উত্স আকারে tar.gz ) এবং গ্রুবকেinit=/bin/sash পাস দিয়ে বুট করুন ।

পিএস: sashসামান্য বগী, এবং পুরোপুরি পিক্সিক্স অনুগত নয়, তবে এটি এখনও খুব দরকারী useful


আপনি দয়া করে ব্যাখ্যা করতে পারেন যে কয়েকটি বিল্টিন কমান্ড সহ স্ট্যাটিক শেল কীভাবে ইনস্টল করবেন? কিছু ম্যানুয়াল আছে?
ইয়ভেস

1
ডেবিয়ান বা উবুন্টু অন: apt-get install sash। তবে আপনি sash-3.8.tar.gz ডাউনলোড এবং এটি সংকলন করতে পারেন।
বেসাইল স্টারিনকিভিচ

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

3

আমি মনে করি সবচেয়ে নিরাপদতম উপায় হ'ল ইউএসবি, সিডি বা ডিভিডি বুটেড ওএস (ডেবিয়ান, উবুন্টু, সুস, ইত্যাদি) ব্যবহার করে রিবুট করা। তারপরে সমস্যাযুক্ত ড্রাইভটি মাউন্ট করুন এবং নতুন নামটি করুন।

মাইনফিল্ডে / usr বা / lib কার্যকরভাবে অনুপস্থিত সহ বুট করার চেয়ে নিরাপদ।


1
আপনি গ্রাব / এইচডিডি থেকে ইউএসবি / ডিভিডি ইত্যাদির দরকার নেই সরাসরি কোনও বুট করতে পারেন প্রিটি নিফটি ট্রিক গ্রাবের কল লুপব্যাক রয়েছে।
ফ্রিসফটওয়্যার সার্ভার 22'18

0

আমারো একই সমস্যা যেখানে আমি নতুন নামকরণ গাড়ীতে আঘাত /usr/binকরার /usr/bin_bkp(যেমন কমান্ড খুঁজে পাইনি কিছু পরীক্ষার জন্য এবং তারপর আমি নামান্তর করতে পারল না sudoমান ডিরেক্টরি হয় যা /usr/bin) এবং তারপর আমি গিয়েছিলাম /usr/bin_bkpডিরেক্টরির ম্যানুয়ালি (ফাইল ম্যানেজার ব্যবহার করে ) এবং ডান ক্লিকের বেশিরভাগ ফাংশন (নাম পরিবর্তন সহ) অক্ষম করা হয়।

তারপরে আমি নিম্নলিখিত কমান্ডটি চেষ্টা করেছিলাম এবং এটি সমস্যার সমাধান করেছে

$/usr/bin_bkp/sudo mv /usr/bin_bkp/ /usr/bin/

আমি বর্তমান পথ থেকে সুডোকে আহবান করেছি এবং এটি কাজ করেছে, এখন সবকিছু স্বাভাবিক অবস্থায় ফিরে এসেছে।

ওএস: জুবুন্টু 14.04


-3

আমি এখনই এটি চেষ্টা করতে পারছি না (এবং আমি চাই তা নিশ্চিত নই) তবে মনে হচ্ছে আপনার নিজের জন্য একটি হার্ড লিঙ্ক (একটি নরম লিঙ্ক নয়) হিসাবে নিজেকে একটি নতুন "/ usr" তৈরি করার জন্য কাজ করা উচিত seems / usr_bak, তারপরে "/ usr_bak" মুছুন

ln /usr_bak /usr
rm /usr_bak

(সঙ্গে "Ln" দ্বারা নির্মিত কঠিন লিংক কোন ফাইল সিস্টেমের মধ্যে "-s" যুক্তি) উভয় usr ডিরেক্টরির এবং usr_bak ডিরেক্টরি সমানভাবে প্রশ্নে ডিরেক্টরি বৈধ লিঙ্ক করা উচিত। "আরএম" আপনি যে লিঙ্কটি মুছে ফেলতে বলেছিলেন কেবল সেটিকে সরিয়ে দেয়, দুটোই নয়। যেহেতু সামগ্রীতে এখনও একটি বৈধ লিঙ্ক রয়েছে, তাই তাদের "/ usr" এ থাকা অবশিষ্ট লিঙ্কের মাধ্যমে অ্যাক্সেসযোগ্য থাকা উচিত।


5
আমি এই ধারণার মধ্যে ছিলাম যে লিনাক্স (বা কমপক্ষে উবুন্টু) ডিরেক্টরিগুলিতে হার্ড লিঙ্কগুলিকে অনুমতি দেয় না। উদাহরণস্বরূপ, Askubuntu.com/ প্রশ্নগুলি
ক্রিস বোচার্ড

4
@ ক্রিস: ঠিক আছে, লিনাক্স ডিরেক্টরি হার্ডলিংকগুলিকে অনুমতি দেয় না ( .এবং এর বাইরে .., সুতরাং কোনও ডিরেক্টরিতে লিঙ্ক গণনা আপনাকে প্রথম স্তরের সাবডিয়ার সংখ্যা বলে)। এছাড়াও rmডিরেক্টরিতে কাজ করে না, আপনাকে ব্যবহার করতে হবে rmdir। ( lnএবং rmডিরেক্টরিগুলিতে সিমলিংকের উপর কাজ করে তবে আমরা প্রকৃত ডিরেক্টরি সম্পর্কে কথা বলি)। এছাড়াও, এটি সমস্যার সমাধান করে না , কারণ অনুমতিগুলির কারণে এটি rootঠিক যেমন প্রয়োজনmv/ । আপনি যদি এটি চালাতে পারতেন তবে আপনি mvসাধারণ ব্যক্তির মতো দৌড়াতে পারতেন ।
পিটার কর্ডস

2
ডিরেক্টরিগুলিতে হার্ডলিংকগুলি বেশিরভাগ (সমস্ত?) ইউনিসগুলিতে সমর্থিত নয় কারণ সফ্টওয়্যারটির পক্ষে অসীম লুপগুলি সনাক্ত করতে একটি পুনরাবৃত্ত ফাইল সিস্টেম ক্রল করা খুব কঠিন। এটি সম্ভব যদি সফ্টওয়্যারটি পরিদর্শন করা সমস্ত আইওনড ট্র্যাক করে রাখে এবং এটি একটি ইনোড সচেতন ফাইল সিস্টেম (যেমন FAT32 / এনটিএফএস নয়) ক্রল করছে তবে প্রতীকী লিঙ্কগুলির জন্য পরীক্ষা করা এবং সেগুলি অনুসরণ না করা খুব সহজ। কেবলমাত্র ফাইলের প্রকারটি পরীক্ষা করতে lstat (2) এ কল করা দরকার that's
পেঙ্গুইন 359

2
প্রিফটান, আমার ln(1)উপর ডেবিয়ান -d/ -F/ --directoryবিকল্পের জন্য এটি বলেছে : " সুপারউসারকে হার্ড লিঙ্ক ডিরেক্টরিতে চেষ্টা করার অনুমতি দিন (দ্রষ্টব্য: সম্ভবত সিস্টেমের বিধিনিষেধের কারণে ব্যর্থ হবে, এমনকি সুপারভাইজারের জন্যও)" । সুতরাং আপনি চেষ্টা করার জন্য নির্দ্বিধায় রয়েছেন, তবে আপনার ফাইল সিস্টেমটি সম্ভবত আপনাকে অনুমতি দেবে না।
টবি স্পিড 10 '

1
@ টবিস্পাইট আরেকটি চিন্তাভাবনা: সিমলিংক ()) দেখুন যা বলে: হার্ড লিঙ্কগুলি ডিরেক্টরিগুলি নির্দেশ করতে পারে না (ফাইল সিস্টেমের গাছের মধ্যে লুপের সম্ভাবনা রোধ করতে পারে যা অনেকগুলি প্রোগ্রামকে বিভ্রান্ত করবে) এবং বিভিন্ন ফাইল সিস্টেমের ফাইলগুলিকে উল্লেখ নাও করতে পারে (কারণ ইনোড নম্বরগুলি ফাইল সিস্টেমগুলিতে অনন্য নয়)। এটি আমার মনে করে যে হার্ড লিঙ্কের প্রচেষ্টাটি আসলে অন্য কোনও শব্দ শোনার উপায় হতে পারে যা ফাংশন বলা হয় তবে এটি হুবহু ব্যর্থ হয় কারণ এটি একটি ডিরেক্টরি। (ফাইল সিস্টেমের উল্লেখটি আমি অন্য মন্তব্যে যা ভাবছিলাম)
প্রাইফটান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.