Us / usr` ডিরেক্টরিটির যৌক্তিকতা কী?


107

এখানে/usr বর্ণিত "ইউনিক্স সিস্টেম রিসোর্স", বা ডিরেক্টরি সম্পর্কে যুক্তি কী , যা মূল ডিরেক্টরিতে ডাইরেক্টরির অনেকগুলি নামকে নকল করে ?/

আমার উদ্দেশ্য: আমি অ্যারাকল জেডিকে অষ্টাদশবারের জন্য ইনস্টল করছি এবং এবার কেবল এটির অধীনে রাখার সিদ্ধান্ত নিয়েছি এবং /home/userএটি কোনও একক ব্যবহারকারী মেশিনে খারাপ ধারণা কিনা তা দেখার জন্য আমি কেবল কিছুটা পড়ছি।


1
আপনার হোম ডিরেক্টরিটি তৃতীয় পক্ষের সফ্টওয়্যারটি অ-মূল হিসাবে ইনস্টল করার জন্য উপযুক্ত জায়গা।
লেকেনস্টেইন

9
... দুঃখজনক উপলব্ধি কারণ আপনি ভেবেছিলেন /usrএত বছর ধরে একটি গোপন "ব্যবহারকারী" ডিরেক্টরিটি বোঝায় ...
গোবিন্দ রায়

6
আমি গুরুত্ব সহকারে ভেবেছিলাম এটি পুরো সময়টি "ব্যবহারকারী"। ব্যবহারকারীর বাইনারিগুলির মতো
ট্যানার

উত্তর:


168

আপনার উত্তরের সংক্ষিপ্ত সংস্করণ এবং দীর্ঘ সংস্করণ রয়েছে ...

সংক্ষিপ্ত সংস্করণ:

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

আজকাল, "বুট করার জন্য প্রয়োজনীয়" এবং এর মধ্যে পার্থক্য হ্রাস পাচ্ছে না, যেহেতু উবুন্টু সহ বেশিরভাগ আধুনিক ডিস্ট্রোগুলি বেশ কয়েকটি ফাইল ছাড়া সঠিকভাবে বুট করতে পারে না /usr। এবং সে কারণেই কেন মার্জ করার দিকে তীব্র আন্দোলন চলছে /usr/binএবং /binসম্ভবত অদূর ভবিষ্যতে (উবুন্টু ১২.১০ সম্ভবত?) এর /binএকটি সিমিলিংক হবে /usr/bin

তবে আপনি কি বিভ্রান্ত করছেন /usrএবং /usr/local? কারণ হ্যাঁ, অনেকগুলি নকল ডিরেক্টরি নাম রয়েছে (এবং হওয়া উচিত) । আরও পরে ...

দীর্ঘ সংস্করণ:

S০ এর দশকে, ইউনিক্সে (হ্যাঁ, ইউনিক্স, লিনাক্সের আগে), ফ্লপিগুলিতে খুব কম জায়গা ছিল (কোনও এইচডি নেই, মনে আছে?), এবং একটি নির্দিষ্ট সময়ে সিস্টেম বাইনারিগুলির সংখ্যা এবং আকারে খুব বেশি বৃদ্ধি পেয়েছিল যে বিন্দুতে একটি একক ডিস্ক ফিট করে, এবং বিকাশকারীদের এগুলি কয়েকটি মিডিয়া জুড়ে বিভক্ত করতে হয়েছিল এবং এইভাবে তাদের জন্য নতুন মাউন্ট পয়েন্ট তৈরি করতে হয়েছিল। /binফাইল সিস্টেমটি পূর্ণ ছিল, তাই তারা ... এ নতুন বাইনারিগুলি ইনস্টল করে /usr/bin। এবং /usrছিল, সেই সময়ে, তাদের ... ব্যবহারকারী ডিরেক্টরি!

(প্রায় বিব্রতকর এবং প্রায়শই একটি রসিকতা / লোর হিসাবে বলা হয়েছিল) বিভক্ত হওয়ার পরে, তারা কী যাবে /binএবং কী যাবে সে সিদ্ধান্ত নেওয়ার জন্য তারা "কৃত্রিম" ন্যায্যতা (এবং মানদণ্ড) তৈরি করা শুরু করে /usr/bin। অনানুষ্ঠানিক নিয়মটি ছিল: "প্রয়োজনীয়" স্টাফগুলিতে যান /bin, "বাকী" যান /usr/bin। একই সাথে /lib। এটি /usrব্যবহারকারী-ডায়ারের সাথে মিশ্রিত সিস্টেম-সম্পর্কিত ডায়ারে ভিড় করার আগে খুব বেশি দিন হয়নি । এইভাবে /homeজন্ম নেওয়া হয়েছিল, সমস্ত ব্যবহারকারী-সম্পর্কিত ডায়ার রাখতে এবং /usrকেবল সিস্টেম "স্টাফ" এর জন্য পরিষ্কার রাখতে ।

এটি এফএইচএসের অস্তিত্বের অনেক আগে ছিল। যখন এটি তৈরি করা হয়েছিল, এটি বর্তমান traditionতিহ্যটিকে আলিঙ্গন করেছে (এবং আনুষ্ঠানিকভাবে) এবং নামটি ধরে রেখেছে /usr, যদিও সেই সময়টিতে এর সাথে ইতিমধ্যে "ব্যবহারকারীর" কোনও সম্পর্ক ছিল না। তাই হ্যাঁ, অভিনব নাম " ইউ কিসসু গুলি Ource epository" বা " ইউ কিসসু গুলি ystem esources" সব তৈরি আপ নাম, এবং এটি যেকোনোভাবে নামান্তর করতে খুব দেরি হয়ে গেছে। (তবে এতে একীভূত /binহতে খুব বেশি দেরি হয়নি)

"ঠিক আছে, কি হবে /usr/sbin?" আপনি জিজ্ঞাসা করুন। অভিশাপ, আমি আশা করছিলাম আপনি ভুলে গেছেন। ঠিক আছে ... /usr/sbinএমন কমান্ডগুলির জন্য যা rootব্যবহারকারীর দ্বারা কার্যকর করা হতে পারে (বা কেবল তখনই অর্থবোধক) হতে পারে mountএবং পছন্দ করে fdisk

"তবে কি প্রায় একই রকম নয় /bin?" । হ্যাঁ, অবশ্যই, তবে ...

"দাঁড়াও, তবে কেন /sbinখুব বেশি কিছু আছে? কোন মানে হয় না!" । ঠিক আছে, কারণ ... ভুল .. হুম ..

দেখুন, আপনার পিছনে একটি 3-মাথা वाला বানর!

ঠিক আছে, আশা করি, আপনি যথেষ্ট পরিমাণে বিভ্রান্ত হয়ে পড়েছেন। সরানো...

(যদি আপনি মনে হয় আমি প্রতারনা করছি, হ্যাঁ, আপনি সঠিক করছি। কিন্তু "সরকারী" উত্তর "অপরিহার্য কমান্ড যে শুধুমাত্র মূল সম্পাদন করতে পারে আগে আপনি এমনকি মাউন্ট উপলব্ধ থাকা আবশ্যক /")। সত্যটি হ'ল: লাইনটি প্রকৃতপক্ষে অস্পষ্ট, এবং প্রচুর উত্তরাধিকারের নাম রয়েছে যা কেবল "আটকে" এবং এখন এ থেকে মুক্তি পাওয়া বেশ শক্ত hard

ডক্স থেকে মার্জ হওয়ার ক্ষেত্রে/usr আরও systemd:

/ Usr থেকে পৃথক একটি / বিন, / sbin এবং / lib এর historicalতিহাসিক ন্যায়সঙ্গততা আজ আর প্রযোজ্য নয়। দ্রুত হার্ড ডিস্কে নির্বাচিত সরঞ্জামগুলি (যা ছোট ছিল, কারণ এটি আরও ব্যয়বহুল ছিল) এবং ধীর / usr পার্টিশনটি মাউন্ট করার জন্য প্রয়োজনীয় সমস্ত সরঞ্জামগুলি ধারণ করার জন্য এগুলি বিভক্ত হয়ে যায়। প্রথমদিকে, বুট করার সময় ইতোমধ্যে পৃথক / usr পার্টিশনটি initramfs দ্বারা মাউন্ট করা আবশ্যক, এভাবে স্প্লিট-অফ মোটের ন্যায়সঙ্গততা তৈরি করা উচিত। তদ্ব্যতীত, স্থিতাবস্থায় / বিন এবং / এসবিনে প্রচুর সরঞ্জাম ইতিমধ্যে প্রাক-মাউন্টড / ইউএসআর ছাড়াই চালানোর ক্ষমতা হারিয়ে ফেলেছে। অপারেটিং সিস্টেমটি একাধিক শ্রেণিবিন্যাসে ছড়িয়ে যাওয়ার কোনও বৈধ কারণ নেই, এটি এর উদ্দেশ্যটি হারাতে বসেছে।

এবং /usrবিভাজন এবং এর যুক্তি সম্পর্কে একটি আশ্চর্যজনক পাঠ , রব ল্যান্ডলি রচনা:

বিন, এসবিন, usr / বিন, usr / sbin বিভক্ত বোঝা

আজকাল

বর্তমানে ইনস্টল ডিরেক্টরিগুলি সম্পর্কে আপনার বোঝার সেরা উপায়টি এইভাবে চিন্তা করা:

  • /usr - সমস্ত সিস্টেম-ব্যাপী, কেবল পঠনযোগ্য ফাইলগুলি ওএস দ্বারা ইনস্টল করা (বা সরবরাহ করা হয়)

  • /usr/local- স্থানীয় প্রশাসক (সাধারণত, আপনি) দ্বারা সিস্টেম-বিস্তৃত, পঠনযোগ্য ফাইল ইনস্টল করা। এবং এজন্য বেশিরভাগ ডিরেক্টরির নাম /usrএখানে নকল করা আছে।

  • /opt- একটি নৃশংসতা মানে সিস্টেম-ব্যাপী, কেবল পঠনযোগ্য এবং স্ব-অন্তর্ভুক্ত সফ্টওয়্যার। সফটওয়্যার উপর যে তাদের ফাইল বিভক্ত নয়, হয় bin, lib, share, includeভালভাবে ভদ্র মত সফ্টওয়্যার উচিত।

  • ~/.local- এর প্রতি ব্যবহারকারীর প্রতিরূপ /usr/local, এটি: প্রতিটি ব্যবহারকারীর দ্বারা ইনস্টল করা সফ্টওয়্যার (এবং এর জন্য)

  • ~/.local/opt - প্রতি ব্যবহারকারী প্রতিরূপ /opt

তাহলে কোথায় সফটওয়্যার ইনস্টল করবেন?

উপরের তালিকাটি ইতিমধ্যে আপনার ওরাকল জেডিকে প্রশ্নের অর্ধেক উত্তর, অন্তত এটি বেশ কয়েকটি ক্লু দেয়। চেকলিস্ট থেকে "আমি সফ্টওয়্যার এক্স কোথায় ইনস্টল করা উচিত?" এর দ্বারা যায়:

  • এটি কি একটি সম্পূর্ণ স্বয়ংসম্পূর্ণ, একক ডিরেক্টরি সফ্টওয়্যার, যেমন এক্লিপস আইডিই এবং অন্যান্য ডাউনলোড করা জাভা অ্যাপ্লিকেশনগুলির মতো, এবং আপনি চান যে এটি সমস্ত ব্যবহারকারীর জন্য উপলব্ধ রয়েছে? তারপরে ইনস্টল করুন/opt

  • উপরের মতো একই, তবে আপনি অন্যান্য ব্যবহারকারীদের সম্পর্কে চিন্তা করেন না এবং আমি আপনার ব্যবহারকারীর জন্য একা ইনস্টল করতে চাই? তারপরে ইনস্টল করুন~/.local/opt

  • এর ফাইলগুলি একাধিক ডায়ারের উপর বিভক্ত হয়, যেমন binএবং shareপ্রচলিত সফ্টওয়্যারগুলির মতো সংকলিত এবং ইনস্টল করা ./configure && make && sudo make install, এবং সমস্ত ব্যবহারকারীর জন্য কী উপলভ্য হবে? তারপরে ইনস্টল করুন/usr/local

  • উপরের মত একই, কিন্তু শুধুমাত্র আপনার ব্যবহারকারীর জন্য? তারপরে ইনস্টল করুন~/.local

  • ওএস দ্বারা ইনস্টল করা সফ্টওয়্যার, বা প্যাকেজ ম্যানেজারগুলির মাধ্যমে (যেমন সফ্টওয়্যার সেন্টার), এবং সবচেয়ে গুরুত্বপূর্ণ, আপডেট ম্যানেজার যখন এটি কোনও নতুন সংস্করণে আপগ্রেড করে তখন কোনও স্থানীয় পরিবর্তন ওভাররাইট করা যেতে পারে ? এটা যায়/usr

নোট:

  • এটি ব্যাখ্যা করে যে সংকলিত সফ্টওয়্যারটির জন্য ডিফল্ট ইনস্টল করা উপসর্গ /usr/localকেন ./configure --prefix=$HOME/.localএবং আপনার নিজের ব্যবহারকারীর জন্য সফ্টওয়্যার ইনস্টল করার সময় কেন এটি পরিবর্তন করা উচিত should

  • আপনি লক্ষ্য করেছেন যে উপরের সমস্ত ডিরেক্টরিগুলি কেবল পঠনযোগ্য (অবশ্যই আপনি যখন সফ্টওয়্যার ইনস্টল / অপসারণ করবেন)। লিখনযোগ্য ফাইলগুলি (কনফিগ ফাইলগুলির মতো) সাধারণত /etc(সিস্টেম-ব্যাপী সফ্টওয়্যারগুলির জন্য) এবং ~/.config(প্রতি ব্যবহারকারী সেটিংসের জন্য) যায়। যদিও বহু লিগ্যাসি সফ্টওয়্যার (এবং, দুর্ভাগ্যক্রমে, কিছু ~/.<software-name>আধুনিকও ) ব্যবহার করে , আপনার বাড়ির ফোল্ডারটিকে কয়েক বিলিয়ন ডায়ার এবং ফাইল দিয়ে বিশৃঙ্খলা করছে।

  • ~/.localএবং ~/.configএফএইচএস নির্দিষ্টকরণের অংশ নয় not এফএইচএস ব্যবহারকারীর হোম ফোল্ডারটি নিয়ে কাজ করে না। ডেস্কটপ এনভায়রনমেন্ট (যেমন জিনোম, কেডিএ এবং ইউনিটি) এর দিকে প্রস্তুত আরেকটি স্ট্যান্ডার্ড সংস্থা এক্সডিজি-র একটি প্রচেষ্টা, ব্যবহারকারীর বাড়ির কাঠামো সম্পর্কিত কিছু কনভেনশন সেট করার চেষ্টা করার জন্য। সমস্ত সফ্টওয়্যার এটি মেনে চলেন না (উদাহরণস্বরূপ, ~/.local/binব্যবহারকারীর ডিফল্টটিতে নয় $PATH, যদিও যুক্তি দিয়ে এটি করা উচিত) এবং কোনও ব্যবহারকারী এটি অনুসরণ করতে বাধ্য হয় না, তবে উভয়ই যদি আন্তঃব্যবহারযোগ্যতা লাভ করে তবে তারা তা করে।

আমি আশা করি এটি কিছুটা স্পষ্ট করতে সহায়তা করে। কোনও দ্বিধা জিজ্ঞাসা করুন যাতে আমি উত্তরটি উন্নত করতে পারি!

(এবং আমি আরও আশা করি যে শুদ্ধবাদীরা আমাকে এইরকম অত্যন্ত অনানুষ্ঠানিক ভাষা এবং ব্যাখ্যার জন্য মেরে ফেলবেন না It এটি উদ্দেশ্যমূলক ছিল এবং এর অবশ্যই অনেকগুলি ভুল-ত্রুটি রয়েছে, তবে আমি বিশ্বাস করি যে নতুনদের ইনস্টল সম্পর্কে একটি সংক্ষিপ্ত ধারণা উপলব্ধি করা ভাল উপায় believe ডিরেক্টরি যুক্তি)


1
আপনি এটি খুব সংক্ষিপ্তভাবে সংক্ষেপে লিখেছেন এবং হ্যাঁ, এটি সত্য- পুরো উত্তরটি উপরের তুলনায় অনেক দীর্ঘ গল্প!
পাপাশৌ

কেন না? একই যুক্তি প্রয়োগ করা হয়: আক্রমণকারী বাড়ির নীচে একটি এক্সিকিউটেবল বা তার একটি উপ-ডিরেক্টরিকে সিস্টেম কমান্ডের নাম অনুসারে তৈরি করতে পারে।
অগ্নি

3
@ জিগনিস: যদি কোনও আক্রমণকারীর ব্যবহারকারীর ঘরের নিচে ফাইলগুলি তৈরি এবং সংশোধন করার অ্যাক্সেস থাকে, তবে সেই ব্যবহারকারী ইতিমধ্যে সম্পূর্ণ আপোসযুক্ত এবং $PATHঅপ্রাসঙ্গিক। আক্রমণকারী এমনকি পরিবর্তন করতে পারেন যে মাধ্যমে ~/.profile, তাই আপনার বিন্দু তর্ক করা হয়। ~/.local/binযেমনটি সুরক্ষিত (বা যদি আপনি চান তবে সুরক্ষিত) যেমনটি হয় ~/bin, যা বেশিরভাগ ডিস্ট্রোজে সাধারণ অনুশীলন। ব্যবহারকারীর ব্যক্তিগত স্ক্রিপ্টগুলি রাখতে এবং চালানোর জন্য কোনও সাহসী না থাকার ধারণাটি $PATHঅযৌক্তিক।
MestreLion

সুতরাং, ~/binততটাই সুরক্ষিত ~/.profileএবং $PATHআমার দ্বারা চালিত ম্যালওয়্যার থেকে আমাকে রক্ষা করে না (যা আমার নিজের ঘরে লেখার অনুমতি রয়েছে)। আমি এই ফাইলটি জানতাম না, আমি দুঃখিত। স্পষ্টির জন্য আপনাকে ধন্যবাদ, আমার আগের মন্তব্যের জন্য দুঃখিত।
অগ্নি

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