CentOS এবং ডেবিয়ান মধ্যে নাম রেজোলিউশন পার্থক্য


13

আমার কাছে একটি ছোট জাভা প্রোগ্রাম রয়েছে যা প্রতি সেকেন্ডে ইনটএড্রেস.জেটবাইনেম ("উদাহরণ.com") কল করে লুপ করে। আমি যখন এটি 'স্ট্রেস-এফ' ব্যবহার করে সেন্টোস .4.৪ বাক্সে চালাচ্ছি তখন আমি দেখতে পাচ্ছি যে /etc/resolv.conf খোলা আছে এবং একবার পড়তে হবে:

$ grep /etc/resolv.conf strace.out
[pid 24810] open("/etc/resolv.conf", O_RDONLY) = 6

আমি এটি ডেবিয়ান 7 এ চালানোর সময় দেখতে পাচ্ছি /etc/resolv.conf বারবার খোলা আছে বা স্টেট () 'ডি:

$ grep  /etc/resolv.conf strace.out
[pid 41821] open("/etc/resolv.conf", O_RDONLY) = 10
[pid 41821] stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
[pid 41821] open("/etc/resolv.conf", O_RDONLY) = 10
[pid 41821] stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
[pid 41821] stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0

উভয় সিস্টেমে /etc/nsswitch.conf কনফিগার করা আছে

হোস্ট: ফাইল ডিএনএস

কোনও সিস্টেমে একটি নাম ক্যাচিং ডেমন চলছে।

যেকোন জাভা পার্থক্যের বিষয়টি অস্বীকার করার জন্য আমি উভয় মেশিনে ওরাকল হটসট জাভা জেভিএমের একই সংস্করণ ব্যবহার করেছি।

CentOS 6.4 বাক্সটিতে গ্লিবসি 2.12 ইনস্টল করা আছে। ডেবিয়ান 7 বাক্সে গ্লিবসি 2.13 ইনস্টল করা আছে।

/Etc/resolv.conf খোলার এবং পড়ার ক্ষেত্রে দুটি অপারেটিং সিস্টেমের মধ্যে ভিন্ন আচরণের জন্য কী অ্যাকাউন্ট?


আপনি দয়া করে পেস্টবিন পুরো ট্রেস করতে পারেন?
ডানিলা লাডনার

উত্তর:


10

রেডহ্যাট গ্লিবিসি বিকাশকারীরা তাদের সফ্টওয়্যারটিতে কিছু বাগগুলি বাগ হিসাবে না বিবেচনা করে। এই বাগগুলির মধ্যে একটি হ'ল পরিবর্তনের পরে রেজলভ.কনফের পুনরায় পঠন। glibc বিবেচনা করে যে অ্যাপ্লিকেশনটির দায়িত্ব তাই প্রতিটি অ্যাপ্লিকেশনকে এর জন্য নিজস্ব যুক্তি তৈরি করতে হবে।

যেহেতু এটি একেবারে kersণদাতারা তাই, eglibc বিকাশকারীরা এই সমস্যাটি স্থির করেছেন। সুতরাং নন-ইজলিবসি সিস্টেমে আপনার অ্যাপ্লিকেশনটির এনএসএস_ডিএন পুনর্নির্মাণের নিজস্ব যুক্তি থাকতে হবে, অন্যথায় এটি একটি রেজলভকনফ পরিবর্তনের পরে পুনরায় চালু করা দরকার। Eglibc সিস্টেমে (ডেবিয়ান এবং ডেবিয়ান ভিত্তিক জিনিসগুলি), আপনি একটি কম বগি libc পান।

আমরা রেজোলভ.কনফ পরিবর্তন করার পরে, পুরানো ডিএনএস সার্ভারকে ডিকমিনিশন করে এবং তারপরে 1200+ মাইএসকিএল সার্ভার পুনরায় আরম্ভ করার পরে এই কঠিন উপায়টি খুঁজে পেয়েছি। বলা বাহুল্য, এটি মজাদার নয়।


কেন এটি "একেবারে bonণদাতা" হিসাবে বিবেচিত হয়? এবং গ্লিবসি কেন এভাবে করল?
মাইকেল হ্যাম্পটন

1
কারণ গ্লিবসি ঠিক করার পরিবর্তে তারা প্রতিটি প্রয়োগের উপর বোঝা রেখে দেয় ... কেন তারা এটি করে? আমি জানি না। আমি ড্রেপার্স মনে মনে পড়তে পারি না, এবং সেখানে কী চলছে তা আমি জানতে চাই তা নিশ্চিত নই ...
ডেনিস কার্সেমেকার

1
জিনিসটি হ'ল: আমি নিশ্চিত না যে গ্লিবসি আসলে ভেঙে গেছে। কেন /etc/resolv.confপ্রতিটি ডিএনএস লুফেলে পুনরায় পড়তে হবে? সত্যিই কি এটি ঘন ঘন পরিবর্তিত হবে বলে আশা করা যায়? এখন যদি এই আচরণটি বিন্যস্ত থাকে তবে আমি বুঝতে পারি ...
মাইকেল হ্যাম্পটন

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

1
ডেনিস ঠিক বলেছেন, EL6 এর গাই ইচ্ছাকৃতভাবে ভেঙে গেছে কারণ বাগি আচরণটি "প্রত্যাশিত আচরণ" হয়ে গেছে
অ্যাক্সেস.

4

কেবল সি লাইব্রেরির সংস্করণগুলি পৃথক নয়, glibcসেন্টসস জিএনইউ সি লাইব্রেরি ব্যবহার করে ( ) যেখানে ডিবিয়ান এম্বেডেড জি এল এল বি সি ব্যবহার করে eglibc), তাই নাম অনুসন্ধান সিস্টেম কলগুলির প্রকৃত বাস্তবায়ন সম্পূর্ণ আলাদা।

এটি সম্ভবত এই দুটি বিতরণের মধ্যে বিভিন্ন সিস্টেম কল আচরণের জন্য অ্যাকাউন্ট হবে।

আমি অনুমান করি InetAddress.getByNameঅনুবাদ getaddrinfo()। আপনি প্রাসঙ্গিক সি লাইব্রেরি বাস্তবায়ন এবং সংস্করণগুলিতে প্রতিটি সিস্কলের উত্স পড়ে শুরু করতে পারেন।

আপনি যে প্রকৃত প্যাকেজ সংস্করণ ব্যবহার করছেন তা উত্সটি পড়েছেন তা নিশ্চিত করুন। EL 6.4 এর প্যাকেজগুলিতে তাদের মূল প্রবাহ সংস্করণের তুলনায় 2 বছরেরও বেশি উন্নতি হয়েছে। আমি ধরে নিই যে ডেবিয়ান প্যাকেজগুলির ক্ষেত্রেও এটি সত্য।

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