/ অপ্ট এবং / ইউএসআর / স্থানীয় মধ্যে পার্থক্য কি?


402

ফাইল সিস্টেম হায়ারার্কি স্ট্যান্ডার্ড অনুসারে , /opt"অ্যাড-অন অ্যাপ্লিকেশন সফ্টওয়্যার প্যাকেজ ইনস্টলেশন" এর জন্য। /usr/localস্থানীয়ভাবে সফ্টওয়্যার ইনস্টল করার সময় সিস্টেম প্রশাসক দ্বারা ব্যবহারের জন্য "use এই ব্যবহারের ক্ষেত্রে বেশ অনুরূপ মনে হয়। ডিস্ট্রিবিউশনের সাথে অন্তর্ভুক্ত নয় এমন সফ্টওয়্যার সাধারণত /usr/localবা /optকোনও নির্দিষ্ট ছড়া বা কারণে বেছে নিয়েছিল তা ইনস্টল করতে ডিফল্টরূপে কনফিগার করা হয় ।

আমি কি কিছু পার্থক্য মিস করছি, বা উভয়ই একই জিনিস করে, তবে historicalতিহাসিক কারণে বিদ্যমান?


3
আমার বোধগম্যতা হ'ল ফাইল সিস্টেমের /usr/localস্থানীয় সংস্করণ এটি /usrঅন্যদিকে /optবিবিধ জিনিসগুলির জন্য স্থানধারক is
ইয়াসৌসার



উত্তর:


356

যদিও উভয়ই অপারেটিং সিস্টেমের অন্তর্ভুক্ত নয় এমন ফাইলগুলি ধারণ করার জন্য ডিজাইন করা হয়েছে /optএবং /usr/localএকই সেটগুলির ফাইলগুলি সেট করার উদ্দেশ্যে নয়।

/usr/localঅ্যাডমিনিস্ট্রেটর দ্বারা নির্মিত ফাইলগুলি ইনস্টল করার জন্য একটি জায়গা, সাধারণত makeকমান্ডটি ব্যবহার করে (যেমন, ./configure; make; make install)। অপারেটিং সিস্টেমের অংশ হিসাবে থাকা ফাইলগুলির সাথে সংঘর্ষ এড়াতে ধারণাটি হ'ল, যা হয় ওভাররাইট করা বা স্থানীয়ভাবে ওভাররাইট করা হবে (উদাহরণস্বরূপ, স্থানীয় বিকল্পে /usr/bin/fooওএসের অংশ /usr/local/bin/foo)।

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

/usr/localআসল বিএসডি থেকে প্রাপ্ত একটি উত্তরাধিকার। সেই সময়, /usr/binওএস কমান্ডগুলির উত্স কোডটি ছিল /usr/src/binএবং /usr/src/usr.binস্থানীয়ভাবে বিকাশিত কমান্ডগুলির উত্স ছিল /usr/local/srcএবং তাদের বাইনারি ছিল /usr/local/bin। প্যাকেজিংয়ের কোনও ধারণা ছিল না (টার্বলগুলির বাইরে)।

অন্যদিকে, /optআনবান্ডেলড প্যাকেজগুলি ইনস্টল করার জন্য একটি ডিরেক্টরি (যেমন প্যাকেজগুলি অপারেটিং সিস্টেম বিতরণের অংশ নয়, তবে একটি স্বাধীন উত্স দ্বারা সরবরাহ করা হয়), প্রত্যেকটির নিজস্ব উপ-ডিরেক্টরিতে রয়েছে। তারা ইতিমধ্যে একটি স্বাধীন তৃতীয় পক্ষের সফ্টওয়্যার বিতরণকারী দ্বারা সরবরাহ করা সম্পূর্ণ প্যাকেজগুলি নির্মিত are স্টাফের বিপরীতে /usr/local, এই প্যাকেজগুলি ডিরেক্টরি কনভেনশনগুলি অনুসরণ করে (বা কমপক্ষে তাদের হওয়া উচিত)। উদাহরণস্বরূপ, এর একটি কমান্ড থাকার সাথে someappইনস্টল করা হবে , এর কনফিগারেশন ফাইলটি থাকবে এবং তার লগ ফাইলগুলি ।/opt/someapp/opt/someapp/bin/foo/etc/opt/someapp/foo.conf/var/opt/someapp/logs/foo.access


52
/ usr / স্থানীয়, স্ব, ইনহাউস, সংকলিত এবং রক্ষণাবেক্ষণ সফ্টওয়্যার জন্য for / অপ্টটি স্ব-স্ব, বহিরাগত, প্রিপেজেজড বাইনারি / অ্যাপ্লিকেশন বান্ডেল ইনস্টলেশন ক্ষেত্রের জন্য। হুমম ... আমাদের কাছে সি: \ প্রোগ্রাম ফাইল নেই ;-)
নিখিল মুলি

2
"অন্যদিকে, / অপ্ট একটি ডিরেক্টরি যেখানে আনবান্ডেল প্যাকেজগুলি ইনস্টল করতে হয়" "আনবান্ডেলড" প্যাকেজগুলি এখানে কী বোঝায়?
কেভিন হুইলার

1
@ কেভিনহিলারটি পরবর্তী বাক্যে ব্যাখ্যা করা হয়েছে। আনবান্ডেলযুক্ত অর্থ প্যাকেজগুলি অপারেটিং সিস্টেম বিতরণের অংশ নয় তবে একটি স্বাধীন উত্স দ্বারা সরবরাহ করা।
jlliagre

2
@jlliagre সেন্টোস ডক্স * লিখেছেন "উদাহরণস্বরূপ, / usr / ডিরেক্টরি যদি রিমোট হোস্টের কেবলমাত্র পঠনযোগ্য এনএফএস ভাগ হিসাবে মাউন্ট করা হয় তবে এখনও / usr / স্থানীয় / ডিরেক্টরিতে প্যাকেজ বা প্রোগ্রাম ইনস্টল করা সম্ভব" কে সঠিক তা আমি জানি না, তবে এফএইচএস দুর্বল এমন অঞ্চল সম্পর্কে এটি আপনার দাবির বিরোধী বলে মনে হচ্ছে। (* উত্স Centos.org/docs/5/html/5.1/Depدام_Guide/… )
কেভিন হুইলার

1
@ কেভিনহিলার এটি হ'ল দৃ .়তার সাথে আমি উল্লেখ করছি। দূরবর্তী, পঠনযোগ্য কেবল ডিরেক্টরিতে প্যাকেজ বা কোনও প্রোগ্রাম ইনস্টল করা কেবল অসম্ভব। কাজের ক্ষেত্রটি / usr / স্থানীয় একটি স্থানীয় ফাইল সিস্টেম মাউন্ট করা হবে তবে এটি সঠিকভাবে ডিজাইন করা কোনও কাজের চেয়ে একটি অস্থায়ী কাজের মতো দেখায়।
jlliagre

83

মূল পার্থক্যটি হ'ল /usr/localসিস্টেম প্যাকেজার দ্বারা পরিচালিত নয় এমন সফ্টওয়্যারগুলির জন্য, তবে এখনও স্ট্যান্ডার্ড ইউনিক্স মোতায়েনের বিধি অনুসরণ করে।

সেইজন্যই তোমরা আছে /usr/local/bin, /usr/local/sbin /usr/local/includeইত্যাদি ...

/optঅন্যদিকে, এমন সফ্টওয়্যারগুলির জন্য যা এটি অনুসরণ করে না এবং এককথায় ব্যবহৃত হয় in এর মধ্যে সাধারণত বাণিজ্যিক এবং / অথবা ক্রস-প্ল্যাটফর্ম সফ্টওয়্যার অন্তর্ভুক্ত থাকে যা "উইন্ডোজ" স্টাইলে প্যাকেজ করা হয়।


12
আমি আপনার একচেটিয়া বিষয় সম্পর্কে একমত নই। এফএইচএস স্ট্যান্ডার্ড বলছে যে প্যাকেজগুলি / অপ্ট সাবডাইরেক্টরিগুলিতে ইনস্টল করা উচিত তাদের হোস্ট নির্দিষ্ট ফাইলগুলি যথাযথভাবে / etc / opt বাইরে ইনস্টল করা উচিত কনফিগারেশন ফাইলের জন্য / ইত্যাদি / অপ্ট / প্যাকেজের অধীনে এবং লগ, স্পুল এবং অনুরূপ জন্য / var / opt / প্যাকেজ। / অপ্ট আসলে / ইউএসআর / স্থানীয়ের তুলনায় ইউনিক্স মোতায়েনের নিয়মের আরও কাছাকাছি থাকে, যা সমস্ত কিছু একটি ডিরেক্টরিতে রাখে যা কেবল পঠনযোগ্য হওয়া উচিত তবে সুস্পষ্ট কারণে এটি হতে পারে না।
jlliagre

5
অবশ্যই, যদি আমি একটি অপ্ট প্যাকেজ তৈরি করতাম এবং FHS সম্মতি দাবি করতে চাইতাম wanted অন্যথায় মানটি আরও বেশি যা আপনি "নির্দেশিকাগুলি" বলবেন। নেটবিনগুলি / ইত্যাদি / অপ্ট / নেটবিয়ানগুলি ব্যবহার না করে কেবল সিস্টেম ব্যাপী বা single হোম / .লোকাল / একক ব্যবহারকারীর জন্য অপ্ট রাখার বিষয়টি আমাকে রাখে না।
jla

1
@ জলা আমি ধরে নিলাম আপনার শেষ মন্তব্যটি আমার কাছে পরিচালিত হয়েছিল তাই দয়া করে @ এক্সএক্সএক্সএক্স ব্যবহার করুন যখন অন্য কাউকে জবাব দেওয়ার সময় ওপি বা উত্তর লেখক। সম্পর্কে / ইত্যাদি / অপ্ট, এফএইচএস এটি প্রস্তাবিত অবস্থান (নির্দেশিকা হিসাবে) নয় তবে বাধ্যতামূলক অবস্থান বলে না। আপনি বা নেটবিয়ান বিকাশকারীরা সেই মানটি লঙ্ঘন করতে নির্দ্বিধায় এটি প্রয়োগ করার কোনও অধিকার নেই, তবে এটি ভুল করার কথা বলবেন না এটি যাওয়ার উপায়। এটি কেবল একটি দুর্ভাগ্যজনক ভুল বোঝাবুঝি বা ইচ্ছাকৃত লঙ্ঘন।
jlliagre

8
@jlliagre আমার সিস্টেমের প্রশাসক হিসাবে, FHS গাইডলাইনগুলির একটি সেট। / অপ্ট ডিরেক্টরিটি এককথায় / opt / <package> বা / opt / <provider> সফ্টওয়্যার রাখতে সাধারণ জ্ঞানটি সু-প্রতিষ্ঠিত জায়গা। আমি যখন একটি প্যাকেজ ইনস্টল করি যা <প্যাকেজ | সরবরাহকারী> / সমস্ত / ডেটা / প্রয়োজনীয় / থেকে / সমর্থন ব্যবহার করতে চায়, এটি সর্বশেষ / এফএইচএসের প্রতিটি বিবরণ অনুসরণ করতে যদি সরবরাহকারী ব্যর্থ হয় তবে এটি অপ্টে চলে যাবে। আমি একটি ইমেল প্রেরণ করতে পারি বা একটি বাগ রিপোর্ট করতে পারি, তবে আমি আমার সিস্টেমে এফএইচএস সম্পর্কে আরও ভাল বোধ করার জন্য সেই মনোলিথিক প্যাকেজটি অন্য কোথাও রাখব না।
jla

1
@ জেলিয়াগ্রে আমি / অপ্টে প্রচুর স্টাফ ইনস্টল করেছি এবং / ইত্যাদি / অপ্টে কোনও ফাইল তৈরি হয় না। উচিত?
erm3nda 0

18

এগুলি সত্যই একইরকম এবং এক বা অন্যের ব্যবহার আরও মতের বিষয়। লিনাক্স জার্নালের এখানে এই সঠিক বিষয় সম্পর্কে এই পয়েন্ট / কাউন্টারপয়েন্ট আলোচনা ছিল ।


9
ওহে প্রিয়। আমি নিজেকে "পবিত্র যুদ্ধ" এ টানতে চাইনি।
প্যাচগুলি

13

আমার জন্য, ব্যক্তিগতভাবে, বিল ফিল্ডারের লিঙ্কে এটি বলেছিল:

একটি ডেভলপমেন্ট সিস্টেম, বা একটি স্যান্ডবক্সে, একটি / অপ্ট ডিরেক্টরি রয়েছে যেখানে আপনি কেবল জিনিস টস করতে পারেন এবং দেখুন যে তারা কাজ করে কিনা তা পুরোপুরি অর্থবোধ করে। আমি জানি যে জিনিসগুলি প্যাকেজিংয়ের চেষ্টা করার জন্য আমি নিজে যাচ্ছি না। যদি অ্যাপটি কাজ না করে, আপনি কেবল / অপ্ট / মাইস্টেপ অ্যাপ্লিকেশনটি আরএম করতে পারেন এবং সেই অ্যাপ্লিকেশনটি ইতিহাস। আপনি যখন একটি বড় স্থাপনা চালাচ্ছেন (প্যাকেজ অ্যাপ্লিকেশনগুলি করার সময়গুলি ঘটে থাকে) তখন প্যাকেজিংয়ের অর্থ হতে পারে, তবে প্রচুর বার / অপ্টে স্টাফ টস করা ভাল।

দুর্ভাগ্যক্রমে, বেশিরভাগ make installস্ক্রিপ্টগুলি /usr/localসেখানে কেবল একটি সিমলিংক তৈরি করার পরিবর্তে ফাইলগুলিকে ঠেলে দেয় : - /


2
কি হতে পারে? আপনি যদি যাইহোক সিমলিংক তৈরি করতে যাচ্ছেন, তবে কেন মূল ফাইলটি সেখানে প্রথম স্থানে রাখবেন না?
আসুন_আমি_পরে

8
make installফাইলগুলিকে লক্ষ্যমাত্রা ঠেকানোর লক্ষ্যে কেবল মন্তব্য করতে /usr/local; এই কার্যকারিতা সহজেই একটি ক্ষণস্থায়ী দ্বারা পরিবর্তনশীল --prefix=থেকে কমান্ড লাইন প্যারামিটার ./configureস্ক্রিপ্ট, অথবা যদি সেখানে নেই ./configureস্ক্রিপ্ট, আপনাকে একটি প্যারামিটার পাস করতে পারেন makeতাই মত লক্ষ্য: make --prefix=/usr install
শান সি

3
/ PATH- এ কোনও স্ট্যান্ডার্ড ডিরেক্টরি অন্তর্ভুক্ত করা যায়? আমি জানি / মার্কিন / স্থানীয় হয়।
LawrenceC

5
@ লেট_মে_ভিত্তিক সুবিধাটি হ'ল পুরানো সংস্করণগুলি রাখা খুব সহজ। ধরুন আমি 'foo বিন্যাস', মধ্যে অবস্থিত 2 সংস্করণ করি /opt/foo-1.1এবং /opt/foo-1.2। আমি যখন আপগ্রেড করব তখন fooসি /usr/local/bin- লিঙ্ককে পয়েন্টে ফু -২.২ এ স্থান দিন। যদি কোনও কারণে আমাকে রোলব্যাক করতে হয় তবে আমি সিমলিংকটি কেবল এমন একটি দিয়ে প্রতিস্থাপন করব যা পরিবর্তে foo-1.1 এ নির্দেশ করে। যদি 1.2 কয়েক সপ্তাহের পরে ঠিক থাকে তবে একটি দ্রুত rm -rf /opt/foo-1.1পুরানো সংস্করণটি দ্রুত এবং পরিষ্কার করে মুছে দেয়।
পেপলুয়ান

7
@ সালট্রাওব্ল্যাডে না, তা নয়। এবং কখনই হওয়া উচিত নয়। সর্বোপরি, এফএইচএস অনুসারে, / অপ্টটি অবশ্যই প্যাকেজের নাম বহনকারী সাবডিয়ারগুলিতে বিভক্ত হতে হবে। PATH- এ সমস্ত কিছু ছড়িয়ে দেওয়া বিপর্যয়ের এক নিশ্চিত উপায়। পরিবর্তে, অ্যাপ্লিকেশনগুলিকে নিজেরাই / অপ্টের অধীনে ইনস্টল করা উচিত এবং তাদের ব্যবহারকারী-চালিত প্রোগ্রামগুলিকে / ইউএসআর / স্থানীয় / বিন (বা এসবিন) এ সিমলিংক করা উচিত।
পেপলুয়ান

11

প্রথমত, আমি মনে করি না যে এর কড়া জবাব আছে; বিভিন্ন প্রশাসকদের তাদের ব্যাকগ্রাউন্ড অনুযায়ী আলাদা আলাদা মতামত থাকবে। /usr/local; তিহাসিকভাবে, প্রথম এসেছিলেন; এটি আইআইআরসি বার্কলেতে অনুষ্ঠিত সম্মেলন ছিল। সিস্টেম ভি এর বিকাশের সময় এক পর্যায়ে, যদি আমি ভুল না হয়ে থাকি (এটি অনেক দিন আগের কথা, এবং আমি নোটও নিই না), /usrকেবলমাত্র পঠনযোগ্য পর্বতে সক্ষম হওয়ার সিদ্ধান্ত বা ইচ্ছা ছিল , যার অর্থ আপনি এতে নতুন সফ্টওয়্যার যুক্ত করতে পারবেন না; এটিই সম্ভবত /opt আবিষ্কার করা হয়েছিল। এটি যেমন ঘটেছিল, ঠিক তেমন বিদ্যমান সফ্টওয়্যার ছিল /usrযা সেই ধারণাটি লিখেনি যে সত্যই কখনই মাটিতে নামেনি।

আমার ব্যক্তিগত পছন্দটি হ'ল /optপ্রতিটি পণ্যের জন্য পৃথক উপ-ডিরেক্টরি সহ; এটি কোনও পণ্য অপসারণের একটি সহজ কেস তৈরি করে rm -fr। তবে আপনার সমস্ত সফ্টওয়্যার যদি কোনও ভাল প্যাকেজ ম্যানেজারের মাধ্যমে ইনস্টল করা থাকে তবে তাতে কিছু আসে যায় না এবং আপনি যে সফ্টওয়্যারটি ইনস্টল করেন সেগুলি এই নিয়মাবলীগুলি কঠোরভাবে মান্য করে না এবং কনফিগারেশনগুলি এবং এরকম কোথাও কোথাও লিখে /usrরাখে তবে তা কোনও ব্যাপার নয়, যদিও বিপরীত কারণে


1
"" "আপনার সমস্ত সফ্টওয়্যার একটি ভাল প্যাকেজ ম্যানেজারের মাধ্যমে ইনস্টল করা" "" এটি অসম্ভব, যদি না আপনি কেবলমাত্র ব্যবহারযোগ্য সফ্টওয়্যার না ব্যবহার করেন।
পেসারিয়ার

1
@ পেসারিয়ার এটি সম্ভব, এটি নির্ভর করে আপনি কী ডিস্ট্রো ব্যবহার করছেন। সফ্টওয়্যার যা-ই হোক না কেন, এটি সম্ভবত আর্ক ইউজার রিপোজিটরিতে রয়েছে এবং যদি তা না হয় তবে কোনও পিকেজিবিআইএলডি তুলনামূলকভাবে সহজ।
স্টারলিটহোস্ট

9

আমার এই সমস্যাটি কিছুটা আলাদা।
যদিও জেলিগ্রে এর উত্তরের সমস্ত কিছু সঠিক, আমার কাছে ব্যবহারিক অ্যাপ্লিকেশন, যখন একটি ক্লাস্টারে সফ্টওয়্যার স্থাপন করার সময়, ডিফল্ট পরিবেশ পরিবর্তনশীল এবং ডিফল্ট পুনরায় ব্যবহারের ক্ষেত্রে নেমে আসে।

সহজ ভাবে বললে - /usr/localএবং এর সমস্ত সন্তান dirs যথাযথ env যেমন Vars হয় PATHএবং MANPATH, এবং /usr/local/lib{,64}হয় ldconfig এর ( /etc/ld.so.conf.d/)।

/opt/ওটিওএইচ নয় - এটি সিস্টেমে একাধিক সংস্করণ বা বিবাদী প্যাকেজ সহ-বিদ্যমান থাকার জন্য উভয়ই সুবিধাজনক, তবে কিছু প্রকারের পরিবেশ ব্যবস্থাপনা প্রয়োজন (যেমন, পরিবেশ-মডিউল বা সফ্টওয়্যার সংগ্রহ ), এবং অসুবিধায় এটি সম্ভাব্য "বর্জ্য" "ভাগ করা লাইব্রেরিগুলিকে সদৃশ করে স্টোরেজ স্পেস, কারণ প্রতিটি ইনস্টলেশন /optসম্পূর্ণ স্বত: অন্তর্ভুক্ত থাকতে পারে।

/usr/localকাজ করার ভাগ্যের প্রকৃতির জন্য , ধরে নেওয়া হয় যে যেমন বাইনারিগুলি সরাসরি /usr/local/bin(এবং ম্যান পেজগুলিতে যথাযথ /usr/local/share/man/...) /usr/local/app/{bin,share/man,...}ইত্যাদির পরিবর্তে ইনস্টল করা থাকে etc.

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