লিনাক্স যেভাবে ইনস্টলড প্রোগ্রামগুলির ফাইলগুলি সংগঠিত করে তার সুবিধা কী? [বন্ধ]


10

উইন্ডোজে, সিস্টেম ড্রাইভের C:একটি ডিরেক্টরি থাকে program_files, যার অধীনে প্রতিটি প্রোগ্রামের নিজস্ব ডিরেক্টরি থাকে।

লিনাক্স সালে অধীনে /usr/এবং /usr/local/, আছে /bin, /etc, /share, /src, ইত্যাদি

উইন্ডোজগুলিতে, প্রতিটি প্রোগ্রামের সমস্ত ফাইল একই ডিরেক্টরিতে শ্রেণিবদ্ধ করা হয়, যখন লিনাক্সে, সমস্ত প্রোগ্রাম থেকে একই ধরণের ফাইলগুলি।

আমি অনুভব করি যে উইন্ডোজ যেভাবে ইনস্টল করা প্রোগ্রামগুলি লিনাক্সের চেয়ে বেশি যুক্তিসঙ্গতভাবে সংগঠিত করে, এবং এইভাবে ইনস্টল করা প্রোগ্রামগুলি ম্যানুয়ালি পরিচালনা করা আরও সহজ।

লিনাক্স যেভাবে ইনস্টলড প্রোগ্রামগুলির ফাইলগুলি সংগঠিত করে তার সুবিধা কী? ধন্যবাদ।

যখন শেলটি চালিত হয় তখন সেগুলি অনুসন্ধানের জন্য $ HOME তে ইনস্টলড প্রোগ্রামগুলিকে কীভাবে সংগঠিত করতে হয় তা নিয়ে আমার সমস্যা আছে ? , যেখানে আমি আমার প্রোগ্রামগুলি $HOMEউইন্ডোজের পথে সংগঠিত করার চেষ্টা করি , তবে প্রোগ্রামগুলির জন্য অনুসন্ধানের পথগুলি নির্দিষ্ট করার ক্ষেত্রে কিছু সমস্যা আছে।


9
@ র্যান্ডলস্টয়ার্টটি আপনার "অনাকাঙ্ক্ষিত এবং বিক্ষিপ্ত " হ'ল আমাদের যুক্তিযুক্ত স্থান এবং ডিএলএলগুলির অনুলিপি।
রন জন

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

9
আমাকে প্রথমে উল্লেখ করতে দিন যে উইন্ডোজ বর্তমানে প্রতিটি প্রোগ্রামের সমস্ত ফাইলকে স্মাই ডিরেক্টরিতে রাখে না। "প্রোগ্রাম ফাইলগুলি" এবং "প্রোগ্রাম ফাইলগুলি (x86)" এর পাশাপাশি "লোকাল", "লোকালল" এবং অন্যদের মধ্যে "রোমিং" এর "ব্যবহারকারী \ <ব্যবহারকারী নাম>> অ্যাপডাটা" ডিরেক্টরি রয়েছে। বা উইন্ডোজ প্রোগ্রামগুলির জন্য সর্বদা একটি "প্রোগ্রাম ফাইল" ফোল্ডার ব্যবহার করে নি বা এর ইতিহাসের মাধ্যমে এটি ধারাবাহিকভাবে ব্যবহার করে নি। * সময়ের সাথে সাথে ফাইলগুলি পরিচালনা করার ক্ষেত্রে নিক্স অনেক বেশি সামঞ্জস্যপূর্ণ।
YLearn

5
@ জ্যাব সম্মত, এবং এটি বুঝতে। আমি ইঙ্গিত করছিলাম যে ওপির বিবৃতি, "উইন্ডোতে, প্রতিটি প্রোগ্রামের সমস্ত ফাইল একই ডিরেক্টরিতে গোষ্ঠীভুক্ত করা হয়" ঠিক তেমন সত্য নয়। আমি উইন্ডোজ রেজিস্ট্রিটিকেও আলোচনায় আনিনি, যা উইন্ডোজ প্রোগ্রামগুলি সম্পর্কিত কনফিগারেশন এবং অন্যান্য ডেটা সংরক্ষণ করার জন্যও দেখা যায় এবং এটি "প্রোগ্রাম ফাইলস" ডিরেক্টরিটির অংশ নয়।
YLearn

2
লিনাক্স ইনস্টলড প্রোগ্রামগুলির ফাইলগুলি সংগঠিত করে? কখন থেকে?
হাবস

উত্তর:


17

লিনাক্সে সাধারণত বিভিন্ন অবস্থানগুলি ভালভাবে বজায় রাখলে কিছু যুক্তি দেখায়। যেমন .:

  • /bin সর্বাধিক প্রাথমিক সরঞ্জাম (প্রোগ্রাম) রয়েছে
  • /sbin সর্বাধিক বেসিক অ্যাডমিন প্রোগ্রাম রয়েছে

এগুলির উভয়টিতে বুটিং এবং মৌলিক সমস্যা সমাধানের জন্য ব্যবহৃত প্রাথমিক কমান্ড রয়েছে। এবং এখানে আপনি প্রথম পার্থক্য দেখুন। কিছু প্রোগ্রাম নিয়মিত ব্যবহারকারীর দ্বারা ব্যবহৃত হয় না।

তারপরে একবার দেখুন /usr/bin। এখানে আপনার কমান্ডগুলির একটি বড় পছন্দ (প্রোগ্রামগুলি) পাওয়া উচিত, সাধারণত সেগুলির মধ্যে 1000 এরও বেশি। তারা মান সরঞ্জাম, কিন্তু সেই হিসাবে হিসাবে অত্যাবশ্যক নয় /binএবং /sbin

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

আমার একবার দেখুন PATH,

$ echo "$PATH" | perl -F: -anlE'$,="\n"; say @F'
/home/tomas/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games

ঠিক ছয়টি অবস্থান রয়েছে যার মধ্যে আমি সরাসরি কল করতে পারি (যেমন তাদের পথ দিয়ে নয়, তবে তাদের এক্সিকিউটেবলের নাম দিয়ে) call

  • /home/tomas/bin আমার ব্যক্তিগত এক্সিকিউটেবলের জন্য আমার বাড়ির ফোল্ডারে আমার ব্যক্তিগত ডিরেক্টরি।
  • /usr/local/bin আমি নীচে পৃথকভাবে ব্যাখ্যা করব।
  • /usr/bin উপরে বর্ণিত হয়।
  • /bin উপরে বর্ণিত হয়।
  • /usr/local/games/usr/local(নীচে ব্যাখ্যা করার জন্য) এবং গেমগুলির সংমিশ্রণ
  • /usr/gamesগেমস ইউটিলিটি এক্সিকিউটেবলের সাথে মেশানো নয়, তাদের পৃথক অবস্থান রয়েছে।

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

অবশেষে, PATHআমার মূল ব্যবহারকারীটির দিকে একবার দেখুন :

# echo "$PATH" | perl -F: -anlE'$,="\n"; say @F'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

এটিতে এটি রয়েছে:

  • /usr/local/sbinএটিতে অ্যাডমিন কমান্ড রয়েছে /usr/local
  • /usr/local/binযা নিয়মিত ব্যবহারকারীরা একই ব্যবহার করতে পারেন। আবার, তাদের ধরণ হিসাবে বর্ণনা করা যেতে পারে /usr/local
  • /usr/sbin অপ্রয়োজনীয় প্রশাসনের ইউটিলিটিগুলি।
  • /usr/bin অপ্রয়োজনীয় প্রশাসন এবং নিয়মিত ব্যবহারকারীর ইউটিলিটিগুলি।
  • /sbin প্রয়োজনীয় অ্যাডমিন সরঞ্জামসমূহ।
  • /bin প্রশাসক এবং নিয়মিত ব্যবহারকারীর প্রয়োজনীয় সরঞ্জাম।

ধন্যবাদ। আপনি কীভাবে প্রোগ্রামগুলি ইনস্টল করার জন্য সংগঠিত করেন তাতে আমি খুব আগ্রহী /home/tomasz/bin/, দেখুন ইউনিক্স.স্ট্যাকেক্সেঞ্জার
টিম

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

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

2018 এ এই সমস্ত খারাপ ধারণা
অমারা

7

আজকাল আমি মনে করি এটি ক্লাসিক ইউএনআইএক্সের historicalতিহাসিক উত্তরাধিকার।

প্রথম ইউনিক্স সংস্করণে, প্রোগ্রামগুলি আজকালকার মতো বড় ছিল না। প্রোগ্রামগুলি প্রায়শই একটি এক্সিকিউটেবল ফাইল থেকে থাকে যা সিস্টেম লাইব্রেরি ব্যবহার করে। সুতরাং, কেউ কেউ এমন প্রোগ্রাম সম্পর্কে চিন্তা করেনি যেগুলিতে দুটি নিজস্ব লাইব্রেরি থাকবে। মূল গ্রন্থাগারটি ছিল সি লাইব্রেরি এবং প্রতিটি প্রোগ্রামই এর অবস্থান সম্পর্কে জানত।

এছাড়াও, ইউনিক্স পরিবেশ সমাপ্ত পণ্য হিসাবে বিবেচিত হত (ডকুমেন্টেশন প্রস্তুত করার জন্য)। অতএব সমস্ত সরঞ্জামের পাথ-গুলি স্থির ছিল।

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


6
বাধ্যতামূলক সুবিধা রয়েছে যা আজ কার্যকর today বাইনারি রাখা /usr/bin, স্ট্যাটিক ডেটা ফাইলগুলিতে /usr/shareএবং ফাইলগুলিতে যা সংশোধন করা যায় /varবা এর /usr/varঅর্থ যে সুরক্ষা ব্যবস্থা ব্যবহার করা যেতে পারে যা কিছুই কার্যকর করা যায় না shareবা প্রয়োগ করা যায় না var( noexecতাদের মাউন্টগুলির জন্য পতাকা ব্যবহার করে); যে বাইরের কিছুই varসংশোধন করা যাবে না (একটি সিস্টেম ব্যবহার করে dm_verityবা স্বাক্ষরিত, কেবল পঠনযোগ্য মিডিয়া তৈরির অনুরূপ ব্যবস্থা); ইত্যাদি
চার্লস ডাফি

3

আপনি আধুনিক ইউনিক্স-এর মতো সিস্টেম হিসাবে যা দেখছেন তা আসলে traditionalতিহ্যবাহী নয়।

সাধারণত, কেবলমাত্র সিস্টেমের ইউটিলিটিগুলির সাথে মোটামুটি ন্যূনতম /এবং /usrস্তরক্রম হবে এবং প্রোগ্রামগুলি তখন পৃথক উপ-ডিরেক্টরিতে পৃথকভাবে ইনস্টল করা হয় /usr/localএবং তার পরে প্রতীকী লিঙ্ক তৈরি করে উপলব্ধ করা হয়।

জিএনইউ সফ্টওয়্যারটির জন্য একটি খুব সাধারণ সেটআপটি সংকলন এবং ইনস্টল করা ছিল

./configure
make
make install prefix=/usr/local/DIR/program-1
cd /usr/local/DIR
stow program-1

জিএনইউ স্টো ইউটিলিটি PATH ভেরিয়েবলের কোনও ডিরেক্টরি যুক্ত না করেই স্ট্যান্ডার্ডটিকে স্ট্যান্ডার্ড পাথে উপলব্ধ করার জন্য প্রতীকী লিঙ্ক তৈরি করে (উইন্ডোজ যেমন করে, এবং ক্রাফ্ট সেখানে জমা হয়)।

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

আপনি যদি নিজের বাড়ির ডিরেক্টরিতে সফ্টওয়্যার ইনস্টল করতে চান তবে আমি আপনাকে জিএনইউ স্টো ব্যবহারের পরামর্শ দিচ্ছি - এটি আপনাকে আপনার প্রোগ্রামগুলি আলাদা রাখতে দেয়, আপনি যদি প্যাকেজ ম্যানেজারটি ব্যবহার না করেন তবে বোধগম্য।

যে জন্য আমার ঐতিহ্যগত সেটআপ একটি ডিরেক্টরী হয় ~/software/DIRযে, আমি অনুবাদ করে, এবং তারপর Stow ভিতরে ব্যবহার প্রোগ্রাম ইনস্টল DIRতৈরি করতে ~/software/bin, ~/software/shareইত্যাদি এই উপায়ে আমি শুধু যোগ আছে ~/software/binপাথ পরিবর্তনশীল সব আমার ইনস্টল থাকা সফ্টওয়্যার জন্য।

ব্যবহার করুন:

./configure --prefix=~/software
make
make install prefix=~/software/DIR/program-1
cd ~/software/DIR
stow program-1

প্রোগ্রামটি জিএনইউ কনভেনশন অনুসরণ করে তবে ইনস্টল করতে।


2

আপনি অ্যাপ্লিকেশন প্যাকেজের পরিবর্তে উদ্দেশ্য অনুসারে ( /usr/binএক্সিকিউটেবলের /usr/libজন্য, গ্রন্থাগারের জন্য) পৃথক ফাইলগুলি বিভক্ত করার স্টাইল সম্পর্কে কথা বলছেন বলে মনে হচ্ছে (এক ডায়ারে সি ++ সংকলক, অন্যটিতে চিত্র সম্পাদনা প্রোগ্রাম)। যদিও ইউনিক্স সিস্টেমে এই historicalতিহাসিকটির বেশিরভাগ কারণ রয়েছে, বর্তমান সময়ের শক্তিগুলিও ইউনিক্সের মতো সিস্টেমগুলি এই দিকে ঝুঁকতে থাকে: প্যাকেজ পরিচালনাকারী যারা সিস্টেমে বেশিরভাগ প্রোগ্রাম পরিচালনা করে।

উইন্ডোজে, historতিহাসিকভাবে এবং এখনও অনেকটা আজও, অ্যাপ্লিকেশনগুলি তাদের নিজস্ব ইনস্টলার সরবরাহ করার জন্য এবং বিশেষত, আনইনস্টলারের জন্য দায়বদ্ধ এবং এমনকি এখন প্রায়শই কোনও কেন্দ্রীয় অ্যাপ্লিকেশন তালিকার সাথে নিজেকে নিবন্ধিত করে না। এটির মতো পরিস্থিতিতে সাধারণত কোনও অ্যাপ্লিকেশনের পক্ষে তার যতগুলি ফাইল সম্ভব তার পক্ষে "নিজস্ব" ডিরেক্টরি থাকা ভাল। এটি অন্যান্য অ্যাপ্লিকেশনগুলির সাথে দ্বন্দ্ব এড়াতে সহায়তা করে, যদিও এটি সর্বদা কার্যকর হয় না (বিশেষত ডিএলএলগুলির ক্ষেত্রে )।

অন্যদিকে, ইউনিক্স সিস্টেমগুলি 90 এর দশক থেকে সাধারণত প্রতিটি একক স্বীকৃত প্যাকেজ ম্যানেজার এবং একটি গ্রুপ এই প্যাকেজ ম্যানেজারের মাধ্যমে প্রচুর পরিমাণে ব্যবহৃত সফ্টওয়্যার সরবরাহ করে। (বিভিন্ন Unices জন্য অফিসিয়াল প্যাকেজ ম্যানেজার অন্তর্ভুক্ত yumএবং aptলিনাক্স সিস্টেমের জন্য, pkgsrcNetBSD বা জন্য, এবং portsFreeBSD 'র জন্য। প্রায়শই বাণিজ্যিক ইউনিক্স সিস্টেম যেমন সেইসাথে একটি বেসরকারী কিন্তু ব্যাপকভাবে গৃহীত প্যাকেজ ম্যানেজার দিয়ে শেষ, brewMacOS এর জন্য।)

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

এটি বলেছিল যে ইউনিক্সে সাধারণত "ডিরেক্টরি অনুসারে পৃথক ডিরেক্টরি" ইনস্টলেশন করার দীর্ঘ longতিহ্য রয়েছে /opt

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