আমার খুব পুরানো গ্লিবসি সহ একটি উত্তরাধিকার ব্যবস্থা রয়েছে, যা আমরা পরীক্ষার / বৈধতার কাজের পর্বত ব্যতীত আপগ্রেড করতে পারি না।
আমার এখন সিস্টেমে আরও বেশ কয়েকটি নতুন প্রোগ্রাম (যেমন জাভা ১.7) চালানোর দরকার পড়েছে। আমি একটি ক্রট সমাধানের জন্য বেছে নিয়েছি, যেখানে আমি সমস্ত প্রয়োজনীয় লিবস প্যাকেজ করি এবং একটি ক্রুটে একটি পরিষেবা চালাই।
Chroot যদিও খুব সীমাবদ্ধ, এবং আমি বরং LD_LIBRARY_PATH দিয়ে সমস্যাটি সমাধান করার চেষ্টা করব। দুর্ভাগ্যক্রমে, আমি libc.so.6: cannot handle TLS data
যখন এটি চেষ্টা করি তখন আমি একটি ত্রুটি পাই।
দেখা যাচ্ছে আমার /lib/ld-linux.so.2
পাশাপাশি ক্রুট থেকেও দরকার । এইটা কাজ করে:
LD_LIBRARY_PATH=/home/chroot/lib /home/chroot/lib/ld-linux.so.2 /home/chroot/bin/program
তবে এর গ্রন্থাগারগুলি কোথা থেকে লোড করতে হবে তা নির্ধারণ করার জন্য java
আমার কৌতুকটি বানচাল করে /proc/self/cmdline
, বাইনারিটির নাম 'বিন / জাভা' না রাখলে যা ব্যর্থ হয়। এছাড়াও জাভা শুরু করার সময় নিজেকে কার্যকর করে, আরও জটিল বিষয়গুলি।
শেষ খাদে এই কাজ করতে প্রয়াস, আমি একটি হেক্স এডিটর দিয়ে জাভা বাইনারি খুলে স্ট্রিং প্রতিস্থাপিত /lib/ld-linux.so.2
সঙ্গে /home/chroot/ld.so
(এবং গঠিত যে একটি সিমবলিক লিঙ্ক ld-linux.so.2
), এবং এটা কাজ করে!
তবে আমি মনে করি সকলেই সম্মত হবেন যে প্রতিটি নতুন বাইনারিটির পথকে নীস্টাব্যবস্থার একটি পরম পথে পুনরায় লিখনের জন্য এটি একটি বিশাল ক্লডেজ।
কাস্টম ld-linux.so সহ কাস্টম লাইব্রেরি পাথ ব্যবহার করার জন্য কি কেউ ক্লিনার উপায় জানেন ?