প্রথমত, একটি আপ-ফ্রন্ট বিরোধের-আগ্রহের দাবি অস্বীকার: আমি একটি দীর্ঘ সময়ের গাবলিনাক্স বিকাশকারী।
দ্বিতীয়ত, ডোমেন দক্ষতার একটি সামনের দাবি: আমি দীর্ঘ সময়ের গাবলিনাক্স বিকাশকারী।
বর্তমান ব্যবহারে কয়েকটি আলাদা কাঠামো রয়েছে। গাবোলিনাক্সের একটি রয়েছে এবং জিএনইউ স্টো , হোমব্রিউ ইত্যাদির মতো সরঞ্জামগুলি বেশ কিছু অনুরূপ ব্যবহার করে (প্রাথমিকভাবে ব্যবহারকারী প্রোগ্রামগুলির জন্য)। নিক্সস প্রোগ্রাম এবং জীবন দর্শনের জন্য একটি মানহীন শ্রেণিবিন্যাসও ব্যবহার করে। এটি একটি যুক্তিসঙ্গত সাধারণ এলএফএস পরীক্ষাও।
আমি সেগুলির সমস্ত বর্ণনা করব, এবং তারপরে অভিজ্ঞতা থেকে কীভাবে তা বাস্তবে কার্যকর হয় ("সম্ভাব্যতা") থেকে মন্তব্য করব। সংক্ষিপ্ত উত্তরটি হ্যাঁ, এটি সম্ভাব্য, তবে আপনাকে সত্যই এটি করতে হবে ।
GoboLinux
গাবোলিনাক্সের একটি কাঠামো রয়েছে যা আপনি বর্ণনা করেছেন তার সাথে খুব মিল। সফ্টওয়্যার এর অধীনে ইনস্টল করা আছে /Programs
: /Programs/ZSH/5.0.8
জেডএসএইচ 5.0.8 এর সমস্ত ফাইলগুলি স্বাভাবিক bin
/ lib
/ ... ডিরেক্টরিতে অন্তর্ভুক্ত। সিস্টেম সরঞ্জামগুলি /System/Links
হায়ারার্কির অধীনে files ফাইলগুলিতে সিমলিংক তৈরি করে , যা onto এর উপরে মানচিত্র করে /usr
¹ PATH
পরিবর্তনশীল শুধুমাত্র একক ইউনিফাইড এক্সিকিউটেবল ডিরেক্টরি রয়েছে, এবং LD_LIBRARY_PATH
অব্যবহৃত হয়। সফ্টওয়্যারটির একাধিক সংস্করণ একবারে সহাবস্থান করতে পারে তবে নির্দিষ্ট নাম ( bin/zsh
) দ্বারা কেবল একটি ফাইল একবারে সক্রিয়ভাবে যুক্ত হবে। আপনি অন্যদের সম্পূর্ণ পথ দিয়ে অ্যাক্সেস করতে পারেন।
সামঞ্জস্যতা symlinks একটি সেট এছাড়াও উপস্থিত, তাই /bin
এবং /usr/bin
ইউনিফাইড এক্সিকিউটেবল ডিরেক্টরি মানচিত্র, এবং আরও। এটি রানওয়ারের সময় সফ্টওয়্যারটির জন্য জীবনকে সহজ করে তোলে। একটি কার্নেল প্যাচ, গোবোহাইড, সেই সমস্ত সামঞ্জস্যতা সিমলিংকে ফাইল তালিকা থেকে আড়াল করার অনুমতি দেয় (তবে এখনও ট্র্যাভারযোগ্য)।
আর একটি উত্তরের বিপরীতে , আপনার কার্নেল কোডটি পরিবর্তন করতে হবে না : গাবোহাইড খাঁটিভাবে প্রসাধনী এবং কার্নেলটি সাধারণভাবে ব্যবহারকারী-স্থানের পাথের উপর নির্ভর করে না ² গাবলিনাক্সের একটি বেসপোক থ্রি সিস্টেম রয়েছে তবে এটি করারও দরকার নেই।
ট্যাগলাইনটি সর্বদা "ফাইল সিস্টেমটি হ'ল প্যাকেজ ম্যানেজার", তবে সিস্টেমে যুক্তিসঙ্গতভাবে সাধারণ প্যাকেজ-পরিচালনা সরঞ্জাম রয়েছে। ব্যবহার করে আপনি সবকিছু করতে পারেন cp
, rm
এবং ln
যদিও।
আপনি যদি গাবলিনাক্স ব্যবহার করতে চান তবে আপনাকে খুব স্বাগত জানানো হচ্ছে। আমি খেয়াল করব, যদিও এটি একটি ক্ষুদ্র উন্নয়ন দল, এবং সম্ভবত আপনি যে কোনও সফ্টওয়্যার চান তা প্যাকেজড না হয়ে থাকলে যদি কেউ আগে এটি ব্যবহার না করতে পারে তবে আপনি খুঁজে পেতে পারেন। সুসংবাদটি হ'ল এটি সাধারণত সিস্টেমের জন্য একটি প্রোগ্রাম তৈরি করা মোটামুটি সহজ (একটি স্ট্যান্ডার্ড "রেসিপি" প্রায় তিনটি লাইন দীর্ঘ); খারাপ খবরটি হ'ল কখনও কখনও এটি অত্যন্ত বিরূপ জটিল হয়, যা আমি আরও নীচে আবরণ করি।
প্রকাশনা
কয়েকটি "প্রকাশনা" রয়েছে। আমি লিনাকস.কন.ফ.উ. 2010 তে একটি সামগ্রিক সামগ্রীতে পুরোপুরি সিস্টেমটিতে একটি উপস্থাপনা দিয়েছিলাম যা ভিডিওতে পাওয়া যায়: ওগভি এমপি 4 (এছাড়াও আপনার স্থানীয় লিনাক্স অস্ট্রেলিয়া আয়নায়); আমি আমার নোটগুলি গদ্যে লিখেছিলাম । এছাড়া কয়েক পুরোনো দস্তাবেজ, বিখ্যাত "সহ আমি পুনের নই উপর," GoboLinux ওয়েবসাইট , যা কিছু আপত্তি এবং বিষয় ঠিকানাগুলি। আমি মনে করি যে আমরা আজকাল কিছুটা কম গুং-হো হয়েছি এবং আমি সন্দেহ করি যে ভবিষ্যতের প্রকাশটি /usr
সিমলিংকের ভিত্তি অবস্থান হিসাবে গ্রহণ করবে ।
NixOS
নিক্সস প্রতিটি ইনস্টল করা প্রোগ্রামকে তার নিজস্ব ডিরেক্টরিতে রাখে /nix/store
। এই ডিরেক্টরিগুলির নামকরণের মতো কিছু রয়েছে /nix/store/5rnfzla9kcx4mj5zdc7nlnv8na1najvg-firefox-3.5.4/
- একটি ক্রিপ্টোগ্রাফিক হ্যাশ রয়েছে যা পুরোপুরি নির্ভরতা এবং সেই প্রোগ্রামটির নেতৃত্বাধীন কনফিগারেশনকে উপস্থাপন করে। সেই ডিরেক্টরিতে স্থানীয়ভাবে কম-বেশি-কম স্বাভাবিক অবস্থানের সাথে সম্পর্কিত সমস্ত ফাইল রয়েছে।
এটি আপনাকে একসাথে একাধিক সংস্করণ রাখতে এবং সেগুলির কোনও ব্যবহার করার অনুমতি দেয়। নিক্সস-এর পুনরুত্পাদনযোগ্য কনফিগারেশনের সাথে সম্পর্কিত একটি সম্পূর্ণ দর্শন রয়েছে: এটি মূলত একটি কনফিগারেশন ম্যানেজমেন্ট সিস্টেমটি শুরু থেকেই এতে বেকড পেয়েছে। এটি ব্যবহারকারীর কাছে ইনস্টলড প্রোগ্রামগুলির সঠিক পৃথিবী উপস্থাপন করতে কিছু পরিবেশগত হেরফের উপর নির্ভর করে।
LFS
লিনাক্স থেকে স্ক্র্যাচ দিয়ে যাওয়া এবং আপনার পছন্দসই হায়ারার্কি সেট আপ করা মোটামুটি সোজা straight কেবলমাত্র ডিরেক্টরি তৈরি করুন এবং সঠিক জায়গায় ইনস্টল করার জন্য সমস্ত কিছু কনফিগার করুন। আমি গাবলিনাক্স পরীক্ষা-নিরীক্ষা তৈরিতে এটি কয়েকবার করেছি এবং এটি সরল এলএফএসের চেয়ে যথেষ্ট শক্ত নয়। সেক্ষেত্রে আপনার সামঞ্জস্যের প্রতীক তৈরি করা দরকার; অন্যথায় এটি যথেষ্ট শক্ত, তবে ইউনিয়ন মাউন্টগুলির যত্ন সহকারে ব্যবহার সম্ভবত আপনি যদি চাইতেন তা এড়াতে পারে।
আমার মনে হচ্ছে ঠিক এক পর্যায়ে এলএফএসের ইঙ্গিত ছিল তবে আমি এখন এটি খুঁজে পাচ্ছি না।
সম্ভাব্যতার উপর
এফএইচএস সম্পর্কিত জিনিসটি এটি একটি স্ট্যান্ডার্ড, এটি খুব সাধারণ এবং এটি লেখা হওয়ার সময় এটি বিদ্যমান ব্যবহারকে ব্যাপকভাবে প্রতিফলিত করে। বেশিরভাগ ব্যবহারকারীর এমন কোনও সিস্টেমে কখনই থাকবে না যা সেই লেআউটটিকে সংক্ষেপে অনুসরণ করে না। এর ফলাফলটি হ'ল প্রচুর সফ্টওয়্যার এর উপর সুপ্ত নির্ভরতা থাকে যা কেউ বুঝতে পারে না, প্রায়শই সম্পূর্ণ অজান্তেই।
এই সমস্ত স্ক্রিপ্ট দিয়ে #!/bin/bash
? আপনার এখানে বাশ না থাকলে ভাল না। এ কারণেই গ্যাবলিনাক্সের সেই সমস্ত সামঞ্জস্যের প্রতীক রয়েছে; এটা ঠিক ব্যবহারিক। অনেকগুলি সফ্টওয়্যার বিল্ড টাইম বা অ-মানক বিন্যাসের অধীনে রান সময়ে ফাংশন করতে ব্যর্থ হয় এবং তারপরে এটি সংশোধন করার জন্য প্যাচিংয়ের প্রয়োজন হয়, প্রায়শই বেশ হস্তক্ষেপে।
আপনার বেসিক অটোকনফ প্রোগ্রামটি আপনি যেখানেই বলুন না কেন সাধারণত আনন্দের সাথে নিজেকে ইনস্টল করবে এবং সঠিকভাবে পাস করার প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে চালিত করা মোটামুটি সহজ --prefix
। অন্যান্য বিল্ড সিস্টেমগুলি সর্বদা এত সুন্দর হয় না, হয় ইচ্ছাকৃতভাবে শ্রেণিবিন্যাসে বেকিং দ্বারা, বা লেখককে নন-পোর্টেবল কনফিগারেশন লেখার জন্য নেতৃত্ব দিয়ে। সিএমকে পরের বিভাগের প্রধান অপরাধী। এর অর্থ হ'ল আপনি যদি এই পৃথিবীতে থাকতে চান তবে আপনাকে অন্য লোকের বিল্ড সিস্টেমগুলিতে প্রচুর পরিমাণে কাজ করার জন্য প্রস্তুত থাকতে হবে। সংকলনের সময় জেনারেট হওয়া ফাইলগুলিকে গতিশীলভাবে প্যাচ করা সত্যিকারের ঝামেলা।
রানটাইম আবার আর একটি বিষয়। অনেকগুলি প্রোগ্রামের অনুমান রয়েছে যে তাদের নিজস্ব ফাইল বা অন্য কারও ফাইলগুলি তাদের সম্পর্কিত হয় বা একেবারে পাওয়া যায়। আপনি যখন ধারাবাহিক দৃষ্টিভঙ্গি উপস্থাপনের জন্য সিমলিংকগুলি ব্যবহার শুরু করেন তখন প্রচুর প্রোগ্রামগুলিতে বাগগুলি হ্যান্ডল করা হয় (বা কখনও কখনও তর্কসাপেক্ষভাবে সঠিক আচরণ যা আপনার পক্ষে সহায়তা না করে)। উদাহরণস্বরূপ, একটি টুল foobar
এটি আশা করতে পারে baz
এক্সিকিউটেবল পরবর্তী এটি, অথবা ../sbin
। এটি এর সিমলিংকটি পড়ে কিনা তা নির্ভর করে, সেগুলি দুটি পৃথক স্থান হতে পারে এবং এগুলির কোনওটিই যাইহোক সঠিক হতে পারে না।
একটি সম্মিলিত সমস্যা হ'ল /usr/share
ডিরেক্টরি। এটি অবশ্যই ভাগ করা ফাইলগুলির জন্য, তবে আপনি যখন প্রতিটি প্রোগ্রামকে তার নিজের উপসর্গে রাখেন তখন সেগুলি আর ভাগ করে নেওয়া হয় না। এটি প্রোগ্রামগুলিকে স্ট্যান্ডার্ড আইকন এবং পছন্দগুলি খুঁজে পেতে অক্ষম করে। গাবো লিনাক্স এটি একটি সুন্দর কুরুচিপূর্ণভাবে মোকাবেলা করেছে: সময় নির্মানের সময়, $prefix/share
এটির একটি সিমিলিঙ্ক ছিল $prefix/Shared
এবং লিঙ্কটি তৈরি করার পরে লিঙ্কটি তৈরির share
পরিবর্তে বৈশ্বিক ডিরেক্টরিতে নির্দেশ করা হয়েছিল । এটি এখন share
(এবং অন্যান্য ডিরেক্টরিগুলি) ডিল করার জন্য সংকলন-সময় স্যান্ডবক্সিং এবং ফাইল মুভমেন্ট ব্যবহার করে তবে লিঙ্কগুলি পড়া থেকে রানটাইম ত্রুটিগুলি এখনও একটি সমস্যা হতে পারে।
একাধিক প্রোগ্রামের স্যুটগুলি অন্য সমস্যা। গাবলিনাক্স জিনোম সম্পূর্ণরূপে কাজ করতে পারেনি এবং আমি বিশ্বাস করি না যে নিক্সস এর একটিও আছে, কারণ বিন্যাসের আন্তঃনির্ভরতা এতটাই বেকড যে সেগুলি কেবল নিরাময়ের জন্য অক্ষম ract
সুতরাং, হ্যাঁ, এটি সম্ভব , কিন্তু:
- কেবল জিনিসগুলি ফাংশন করার জন্য অনেক কাজ জড়িত।
- কিছু সফ্টওয়্যার কেবল কখনও কাজ করে না।
- লোকেরা আপনাকে মজার দেখবে।
এগুলি সবই আপনার জন্য সমস্যা হতে পারে বা নাও হতে পারে।
¹ সংস্করণ 14.01 ব্যবহার করে /System/Index
, যা সরাসরি ম্যাপ করে /usr
। আমি সন্দেহ করি যে ভবিষ্যতের সংস্করণটি লিঙ্কগুলি / সূচক শ্রেণিবিন্যাস বাদ দিতে পারে এবং /usr
বোর্ড জুড়ে ব্যবহার করতে পারে ।
² এটির /bin/sh
ডিফল্টরূপে উপস্থিত হওয়া প্রয়োজন ।