স্থানীয় নির্বাহযোগ্য কোথায় রাখা উচিত?


62

পারফর্ম সংস্করণ নিয়ন্ত্রণ ক্লায়েন্টের জন্য আমার এক্সিকিউটেবল ( p4) রয়েছে। আমি এটি স্থাপন করতে পারছি না /opt/localকারণ আমার কাছে রুট সুবিধা নেই। এমন কোনও মানক অবস্থান রয়েছে যেখানে এটির নীচে স্থাপন করা দরকার $HOME?

ফাইল সিস্টেম হায়ারার্কির কোনও কনভেনশন রয়েছে যা বলছে যে স্থানীয় এক্সিকিউটেবল / বাইনারিগুলি স্থাপন করা দরকার $HOME/bin?

এফএইচএসের উইকিপিডিয়া নিবন্ধে উল্লিখিত এ জাতীয় সম্মেলনটি আমি খুঁজে পাইনি ।

এছাড়াও, যদি সত্যিই কোনও সম্মেলন হয় তবে আমি কি স্পষ্টভাবে $HOME/binডিরেক্টরিটির পথটি বা ডিরেক্টরিটির অবস্থান যা কিছু অন্তর্ভুক্ত binকরব?

উত্তর:


64

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

আপনি যদি বাইনারিটির একমাত্র ব্যবহারকারী হন তবে $HOME/binএটিকে ইনস্টল করা উপযুক্ত অবস্থান কারণ আপনি নিজেরাই এটি ইনস্টল করতে পারেন এবং আপনি একমাত্র ভোক্তা হবেন। যদি আপনি উত্স থেকে কোনও সফ্টওয়্যার প্যাকেজ সংকলন করেন তবে আপনার $HOMEডিরেক্টরিতে একটি আংশিক বা পূর্ণ স্থানীয় স্তরক্রম তৈরি করাও উপযুক্ত । সম্পূর্ণ স্থানীয় শ্রেণিবিন্যাস এর মত দেখতে হবে।

  • $HOME/bin স্থানীয় বাইনারি
  • $HOME/etc স্থানীয় বাইনারিগুলির জন্য হোস্ট-নির্দিষ্ট সিস্টেম কনফিগারেশন
  • $HOME/games স্থানীয় গেম বাইনারি
  • $HOME/include স্থানীয় সি হেডার ফাইল
  • $HOME/lib স্থানীয় গ্রন্থাগারগুলি
  • $HOME/lib64 স্থানীয় -৪-বিট লাইব্রেরি
  • $HOME/man স্থানীয় অনলাইন ম্যানুয়াল
  • $HOME/sbin স্থানীয় সিস্টেম বাইনারি
  • $HOME/share স্থানীয় আর্কিটেকচার-স্বতন্ত্র স্তরক্রম
  • $HOME/src স্থানীয় উত্স কোড

চলমান চলাকালীন configure, ইনস্টলেশন $HOMEডিফল্টর জন্য আপনার উপসর্গ হিসাবে নির্দিষ্ট করে আপনার স্থানীয় হায়ারার্কি সংস্থার জন্য সংজ্ঞায়িত করা উচিত ।

./configure --prefix=$HOME

এখন যখন make && make installচালানো হবে, সংকলিত বাইনারি, প্যাকেজ, ম্যান পৃষ্ঠা এবং লাইব্রেরিগুলি আপনার $HOMEস্থানীয় শ্রেণিবিন্যাসে ইনস্টল করা হবে । আপনি যদি $HOMEস্থানীয়ভাবে হায়ারার্কি ম্যানুয়ালি তৈরি make installনা করে থাকেন তবে সফ্টওয়্যার প্যাকেজটির জন্য প্রয়োজনীয় ডিরেক্টরিগুলি তৈরি করবেন।

একবার ইনস্টল $HOME/bin, হয় আপনি যোগ করতে পারেন $HOME/binআপনার $PATHবা বাইনারি পরম ব্যবহার কল $PATH। কিছু বিতরণ ডিফল্টরূপে $HOME/binআপনার অন্তর্ভুক্ত করবে $PATH। আপনি এটি উভয় দ্বারা পরীক্ষা করে echo $PATHদেখতে পারেন এবং $HOME/binসেখানে আছে কিনা তা দেখতে পারেন , বা বাইনারিটি রেখে $HOME/binএবং কার্যকর করতে পারেন which binaryname। যদি এটির সাথে ফিরে আসে $HOME/bin/binaryname, তবে এটি ডিফল্টরূপে আপনার AT PATH এ।


5
যতক্ষণ না $ হোম কোনও নেক্সেক মাউন্ট করা ফাইল সিস্টেমে না থাকে। / tmp / সাধারণত noexec মাউন্ট করা হয়।
ewanm89

3
এটি সঠিক, ফাইল সিস্টেম হায়ারার্কি স্ট্যান্ডার্ড (এফএইচএস) এর অংশ। pathname.com/fhs/pub/fhs-2.3.html#USRLOCALLOCALHIERARCHY
প্যাট্রিক

29
আমি ব্যবহারের সুপারিশ করব না $HOME। আপনি আপনার আগ্রহী নন এমন ডিরেক্টরি সহ এটি আপনার হোম ডিরেক্টরিকে ডুবিয়ে দেয়। কে আছে চায় man, libবেশী বাড়িতে দির, ইত্যাদি? আমি বরং নীচে $HOME/binবা শ্রেণিবিন্যাস তৈরি করতে চাই $HOME/local। এটি দশটির পরিবর্তে আপনার বাড়ির দিরে কেবল একটি সাব-ডিরেক্টরিকে যুক্ত করে। PATHসহজে অন্তর্ভুক্ত করা অভিযোজিত করা যাবে $HOME/bin/binবা $HOME/local/bin
মার্কো

18
একটি বিকল্প হ'ল D HOM / .Local / {bin, lib, ইত্যাদি} ব্যবহার করুন, যেমন XDG ভিত্তিক অনুমান ( মান. freedesktop.org/baseir-spec/basedir-spec-latest.html ) এবং পাইথন ব্যবহার করে ( python.org/dev/peps/pep-0370 )
janneb

4
@ জানেব আপনি কেবল উল্লেখ করেছেন XDG বেস ডিরেক্টরি নির্দিষ্টকরণ$HOME/.local/share (সংস্করণ 0.7, 24 নভেম্বর 2010)।
পাইওটর ডব্রোগস্ট

27

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

এর পিছনে ধারণাটি হ'ল বিতরণ করা সফ্টওয়্যার (যেমন rpmএবং debপ্যাকেজগুলির) সাথে সংঘর্ষ এড়ানো এবং "স্থানীয়" উপসর্গের উপরে প্রশাসককে পুরোপুরি রাজত্ব দেওয়া।

এর অর্থ এই যে কোনও প্রশাসক এখনও ডিবিয়ানের মতো ডিস্ট্রো ব্যবহার করার সময় কাস্টম সংকলিত সফ্টওয়্যার ইনস্টল করতে পারে।

এফএইচএস থেকে

/ অথবা / usr এ স্থাপন করা সফ্টওয়্যার সিস্টেম আপগ্রেডগুলির দ্বারা ওভাররাইট করা যেতে পারে (যদিও আমরা প্রস্তাব দিই যে বিতরণগুলি এই পরিস্থিতিতে / ইত্যাদিতে ডেটা ওভাররাইট করে না)। এই কারণে, স্থানীয় সফ্টওয়্যার অবশ্যই কোনও কারণ ছাড়াই / usr / স্থানীয়ের বাইরে স্থাপন করা উচিত নয়।

ব্যবহারকারী-নির্দিষ্ট সফ্টওয়্যার ইনস্টল করার সময়, উপেরটি$HOME উপসর্গ হিসাবে ব্যবহার করার পরামর্শ দেয় কারণ এটি নিশ্চিত করে যে আপনার লেখার অনুমতি রয়েছে। ব্যক্তিগতভাবে, আমি $HOME/.localআরও মার্জিত সমাধান হিসাবে বোধ করছি , যেহেতু এটি আপনার (আশাবাদী) সুন্দর এবং পরিচ্ছন্ন হোম ডিরেক্টরিকে ফাঁকি দেওয়া এড়ায়!

$HOME/.local/shareইতোমধ্যে ফ্রিডেস্কটপ.অর্গ.এক্সডিজি বেস ডিরেক্টরি স্পেসিফিকেশনে ব্যবহৃত হয়েছে , সুতরাং আপনি যখন থাকবেন তখন এটিতে $HOME/.local/binআপনার যোগ করা $PATHএবং একটি তৈরি করা কল্পনা করতে খুব বেশি লাগে না $HOME/.local/lib

আপনি যদি আপনার উপসর্গটি সত্যিই একটি গোপন ডিরেক্টরি হিসাবে দেখতে না চান তবে আপনি সহজেই এর সাথে একটি প্রতীকী লিঙ্কও তৈরি করতে পারেন, যেমন:

ln -s .local ~/local

সাইড নোট

এটি লক্ষণীয় যে .config(নির্দিষ্ট নয় .local/etc) $XDG_CONFIG_HOMEব্যবহারকারী নির্দিষ্ট কনফিগার ফাইলগুলির জন্য ব্যবহৃত ডিফল্ট মান । আমার এও উল্লেখ করা উচিত, দুর্ভাগ্যক্রমে, সফ্টওয়্যারের একটি বড় অংশ XDG উপেক্ষা করে এবং কনফিগারেশন ফাইলগুলি তৈরি করে যেখানে তারা পছন্দ করে (সাধারণত এর মূলের মধ্যে থাকে $HOME)। এছাড়াও খেয়াল করুন যে $XDG_CONFIG_HOMEডিফল্টটি $HOME/.configপছন্দসই হলে আনসেট করা হতে পারে ।

অদ্ভুতভাবে, ডিস্ট্রিবিউশনের ডিফল্ট কনফিগার ফাইলগুলির জন্য কোনও ডিরেক্টরি সংরক্ষিত নেই, সুতরাং /etcসিস্টেম প্রশাসক দ্বারা কোনও ফাইল ডিস্ট্রো দ্বারা সরবরাহ করা হয়েছিল বা সম্পাদিত হয়েছিল কিনা তা জানার উপায় নেই ।


1
আমি .localএফএইচএস
ড্যানিয়েল সেরোদিও

@ ড্যানিয়েলসেরোদিও এটি এক্সডিজি ডিরেক্টরি স্পেসিফিকেশনে রয়েছে, এটি একটি নতুন মান যা এটির সর্বাধিক পরিচিতি অর্জন করে। দেখুন unix.stackexchange.com/questions/316765/... এবং superuser.com/questions/1170793/...
ivan_pozdeev

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