এলএন ব্যবহার না করে কীভাবে প্রতীকী লিঙ্ক তৈরি করবেন?


31

আমি একটি গুরুত্বপূর্ণ প্রতীকী লিঙ্ক মুছে ফেলেছি - libc.so.6। আমার কাছে এটি ফাইল করা উচিত ফাইলটি রয়েছে তবে লিঙ্কটি অনুপস্থিত থাকার কারণে মূল কমান্ডগুলি যেমন lnবা wgetআর কাজ করবে না। তবে, echoবা অন্যান্য বাশ অন্তর্নির্মিত কাজ করে।

আমি এই প্রতীকী লিঙ্কটি পুনরায় তৈরি করার উপায় খুঁজছি।


1
@ শেবাস, আমি মনে করি আপনি কেবল বাশ বিল্টিনকে বোঝাতে চেয়েছিলেন , কেবল তা নয় echo
ক্রিশ্চিয়ান সিপিতু 10:25

@ ক্রিশ্চিয়ানসিপিতু সম্ভবত এটি কি? catঅক্ষম ... আসলে সবকিছু ছিল।
সেবাসস

1
@ সেবাস, কারণ catএটি একটি বাহ্যিক প্রোগ্রাম। ব্যাশ Builtin কমান্ড ম্যানুয়েল পৃষ্ঠা কি প্রাপ্তিসাধ্য হতে পারে সম্পর্কে বিস্তারিত রয়েছে।
ক্রিশ্চিয়ান সিউপিতু

3
আমি ধরে নিচ্ছি যে আপনি জিএনইউ / লিনাক্স ভিত্তিক সিস্টেমগুলি বোঝেন যখন আপনি "ইউনিক্স" বলবেন অন্য অনেক * নিক্স সিস্টেমে স্ট্যান্ডার্ডভাবে সেই "উফ" মুহুর্তের জন্য সংযুক্ত স্ট্যান্ডার্ড ইউটিলিটিগুলির "উদ্ধার" সংস্করণ রয়েছে।
ক্রিস এস

এখানে আমি ভাবছি
ক্রুটিংয়ের

উত্তর:


58

আপনি ldconfig ব্যবহার করতে পারেন, এটি syMLink পুনরায় তৈরি:

# rm /lib/libc.so.6 
rm: remove symbolic link `/lib/libc.so.6'? y
# ls -l /lib/libc*
ls: error while loading shared libraries: libc.so.6: cannot open shared object file:
# ldconfig 
# ls -l /lib/libc*
[skip]
lrwxrwxrwx. 1 root root      12 May 11 07:59 /lib/libc.so.6 -> libc-2.12.so

ঠিক যেমন এটি আপনি পরীক্ষা করেছেন।


4
এবং, সুবিধাজনকভাবে, / sbin / ldconfig স্থিতিযুক্তভাবে সংযুক্ত। ldconfig প্রথমে সেই প্রতীকী লিঙ্কগুলির জন্য দায়ী।
ইথারফিশ

16
এটি সত্যই কেবল "সুবিধাজনক" নয়, একটি স্ট্যাটিকালি লিঙ্কযুক্ত বাইনারি হ'ল আপনার গতিশীল লাইব্রেরিগুলি বজায় রাখার সরঞ্জামটির প্রয়োজনীয় ডিজাইনের উপাদান! তবে এই সমস্যাটি সমাধানের জন্য এটিই একটি আদর্শ সরঞ্জাম এবং আইএমএইচও কেবলমাত্র "সঠিক" উপায়। এখানে প্রশ্নটি আসলে মুছে ফেলা সিমিলিংক সম্পর্কে নয় (এর মধ্যে 99.999% মুছে ফেলা যায় ফলাফল ছাড়াই), এটি "আমি আমার সিস্টেমের গতিশীল লাইব্রেরি স্টোরটি ভেঙে ফেলেছি"। @ নাটেক্সোর পরামর্শ তৈরি করা, "স্পষ্টত এবং বোধগম্য," সেই স্টোরটি পরিচালনা করে এমন সরঞ্জামটি ব্যবহার করে এটি ঠিক করুন "। অন্য যে কোনও কিছু (ম্যানুয়ালি লিঙ্কটি পুনরুদ্ধার করা) হ্যাকি কাজ।
এফআরডি

হ্যাঁ, উত্তরটি সঠিকভাবে হওয়া সত্ত্বেও এটি এগিয়ে যাওয়া আরও যুক্তিযুক্ত।
সেবাস 12'14

(উদ্বেগ, দুঃখিত) সর্বাধিক এই কারণটি, বিটিডাব্লু, সিমলিংকগুলি মুছে ফেলা আপনি কেবল আপনার গতিশীল লাইব্রেরি স্টোরটিকে সরিয়ে ফেলতে পারবেন না। বলুন, উদাহরণস্বরূপ, আপনি দুর্ঘটনাক্রমে /lib/libc-2.12.soউপরের উদাহরণটিতে নাম পরিবর্তন করেছেন /lib/foobar। ঠিক আছে, বাজে, আর কিছু নেই mv। কিন্তু ldconfig -l /lib/foobarস্মার্ট করতে যথেষ্ট এমনকি /lib/libc.so.6বিন্দু ভুল নামক ফাইল। (আরগগুলি প্রয়োজনীয়, ডিফল্ট ldconfigফাইল ফাইলগুলি উপেক্ষা করে যা "লিবিব" দিয়ে শুরু হয় না এবং "। এসও" ধারণ করে)) আপনি কোন পর্যায়ে mvফিরে যেতে পারেন (বা cp -pযদি আপনি অবিচ্ছিন্ন / স্মার্ট হন), তারপরে ldconfigপরিষ্কার করতে আবার চালান ।
এফআরডি

44

CentOS 6 সাধারণত busyboxইউনিক্স সরঞ্জামগুলির একটি স্ট্যাটিকালি লিঙ্কযুক্ত সেট সহ ইনস্টল হয় /sbin। আপনি এটি এভাবে চালাতে পারেন:

/sbin/busybox ln -s libc-2.12.so /lib/libc.so.6

1
+1, একটি পরীক্ষা
ভিএম

+1 এটি প্রশ্নের শিরোনামে জেনেরিক প্রশ্নেরও উত্তর দেয়।
ম্যাটবিয়ানকো

ডেবিয়ান / উবুন্টুতে এটি / বিন /
ব্যস্তবক্স

23

প্রাসঙ্গিক লাইব্রেরি প্রিললোড করার জন্য LD_PRELOAD সেট করুন। আমি এটি লিবিপথ্রেড দিয়ে চেষ্টা করেছি এবং মনে হচ্ছে এটি কার্যকর হবে:

root@spirit:~# mv /lib/x86_64-linux-gnu/libpthread.so.0 /lib/x86_64-linux-gnu/libpthread.so.0-bak
root@spirit:~# chattr
chattr: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
root@spirit:~# LD_PRELOAD=/lib/x86_64-linux-gnu/libpthread.so.0-bak chattr
Usage: chattr [-RVf] [-+=AaCcDdeijsSu] [-v version] files...

আকর্ষণীয়, এটি অন্যেরা যা বলেছিল তা নিয়ে পুনরায় মিলিত হয়।
সেবাস 20

21

slnঠিক সেই উদ্দেশ্যেই কাজ করে: প্রতীকী লিঙ্কগুলি ঠিক করতে যখন আপনি নিয়মিত এলএন ব্যবহার করতে পারবেন না কারণ আপনি একটি প্রয়োজনীয় সিমলিংক ভেঙে ফেলেছেন। এর ম্যান পৃষ্ঠাটি উদ্ধৃত করতে:

বর্ণনা

  The  sln  program creates symbolic links.  Unlike the ln(1) program, it
  is statically linked.  This means that if for some reason  the  dynamic
  linker  is  not  working,  sln  can  be  used to make symbolic links to
  dynamic libraries.

সুন্দর, আমি এই সরঞ্জামটি জানতাম না। সেন্টোস এ এটি গ্লিবিকের অংশ, সুতরাং এটি অবশ্যই ডিফল্টরূপে ইনস্টল করা উচিত
natxo asenjo

8

LD_LIBRARY_PATHডিরেক্টরিটি আসল যেখানে অন্তর্ভুক্ত করতে আপনি পরিবর্তনশীল সেট করতে পারেন libc.so.6:

 export LD_LIBRARY_PATH="/dir/for/libc.so.6/:$LD_LIBRARY_PATH"

এছাড়াও, ldconfigলিঙ্কগুলি পুনরায় তৈরি করার জন্য এটি সম্পাদন করুন। এটি কমান্ডগুলিকে কাজ করে তোলে যাতে আপনি lnনিজের সিস্টেমটি ঠিক করতে কমান্ডগুলি ব্যবহার করতে পারেন ।

অন্য উপায় হ'ল লাইভসিডি এবং লিঙ্ক ফাইলের মাধ্যমে বুট করা।


তারপরে ক্রুটে লাইভসিডি এবং লিংক ফাইলটি বন্ধ করার একমাত্র উপায়।
ফোপস

1
এছাড়াও, libc.so.6 ফাইল রয়েছে এমন ডিরেক্টরি অন্তর্ভুক্ত করার জন্য আপনার কেবল LD_LIBRARY_PATH সেট করা উচিত। এটি আপনাকে কমান্ডগুলি যেমন ব্যবহার করতে পারে তেমন ব্যবহার করতে দেয়।
phoops

সাফ, দুঃখিত আমি এই প্রথম ভাবেনি।
ফোপস

2
এটি কাজ করে না, কারণ লিঙ্কযুক্ত ফাইলটির নাম libc.so.6 নেই। আমার উত্তর অনুসারে আপনাকে LD_PRELOAD সেট করতে হবে।
ডেনিস কার্সেমেকার

1
আমি ফেডোরা ২০-তে চেষ্টা করেছি এবং এটি কার্যকর হয়নি।
ক্রিশ্চিয়ান সিউপিতু

-4

Ln এর স্ট্যাটিকালি সংযুক্ত সংস্করণটি অনুলিপি করতে scp বা sftp ব্যবহার করুন। এটি নির্বাহযোগ্য কিনা তা নিশ্চিত করুন। তারপরে ফাইলটি ঠিক করতে এটি ব্যবহার করুন।


1
scp এবং sftp কাজ করবে না কারণ তারা সেই ফাইলটি লোড করতে সক্ষম হবে না।
ফ্লোরিন Asăvoaie

scp, sftp, ftp দূরবর্তী হোস্ট থেকে চালানো হবে। এটি ধরে নিয়েছে যে ভাঙা মেশিনে ডিমনটি ইতিমধ্যে চলছে। ফাইল ট্রান্সফারের জন্য অন্যান্য সম্ভাব্যতা হ'ল ফাইল সিস্টেম যা ইতিমধ্যে স্থানীয় বা দূরবর্তী মাউন্ট করা আছে।
রবার্ট জ্যাকবস

3
ভুল তথ্য বন্ধ করুন। এসসিপি-র স্কিপ বাইনারি উপস্থিত থাকতে হবে এবং উভয় হোস্টেই কার্যকর করা হবে। এসএফটিপি ওপেনএসএসএইচ-এর বাইরেও নতুন প্রক্রিয়া প্রবর্তন করে যার জন্য বাইনারিগুলির প্রয়োজন require বেশিরভাগ এফটিপি ডেমন একই কাজ করে।
ফ্লোরিন Asăvoaie
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.