লিঙ্কিংয়ে
আপনি সাধারণত এর /usr/local/*সাথে লিঙ্ক করেন না /bin, তবে এটি একটি historicalতিহাসিক অনুশীলন বেশি। সাধারণভাবে, কয়েকটি "প্রযুক্তিগত" কারণ রয়েছে যা আপনি পরামর্শ দিচ্ছেন তা করতে পারেন না।
এক্সিকিউটেবলের সাথে লিঙ্ক তৈরি করা /binসমস্যার কারণ হতে পারে:
সম্ভবত সবচেয়ে বড় সতর্কতাটি হ'ল যদি আপনার সিস্টেমে কোনও ধরণের প্যাকেজ ম্যানেজার যেমন RPM, dpkg, APT, YUM, pacman, pkg_add, ইত্যাদি দ্বারা পরিচালিত প্যাকেজগুলি থাকে তবে আপনি সাধারণত প্যাকেজটিকে অনুমতি দিতে চান ম্যানেজার তার কাজ এবং যেমন ডিরেক্টরি পরিচালনা /sbin, /bin, /libএবং /usr। একটি ব্যতিক্রম /usr/localহ'ল যা আপনার বাক্সে হস্তক্ষেপকারী কোনও প্যাকেজ ম্যানেজার সম্পর্কে চিন্তা না করেই বাক্সের মধ্যে উপযুক্ত দেখা হিসাবে সাধারণত করার একটি নিরাপদ জায়গা।
প্রায়শই নির্বাহযোগ্যদের জন্য নির্মিত /usr/localনির্বাহীদের তাদের এক্সিকিউটেবলের মধ্যে এই প্যাথটিকে হার্ড-কোডেড করে রাখে। /usr/localএই অ্যাপ্লিকেশনগুলির ইনস্টলেশনের অংশ হিসাবে অন্তর্ভুক্ত থাকা কনফিগারেশন ফাইলগুলিও থাকতে পারে । সুতরাং কেবল এক্সিকিউটেবলের সাথে সংযোগ স্থাপনের ফলে এই অ্যাপ্লিকেশনগুলির মধ্যে .cfgফাইলগুলি পরে সন্ধান করা সমস্যার কারণ হতে পারে । এই জাতীয় মামলার উদাহরণ এখানে:
$ strings /usr/local/bin/wit | grep '/usr/local'
/usr/local/share/wit
/usr/local/share/wit/
.cfgফাইলগুলি অনুসন্ধানের ক্ষেত্রে প্রযোজ্য একই সমস্যাটি "সহায়ক" এক্সিকিউটেবলের সাথেও ঘটতে পারে যা প্রাথমিক অ্যাপটি চালানো দরকার। এগুলিও এর সাথে লিঙ্ক করা দরকার /usr/bin, কারণ এটি সমস্যাযুক্ত হতে পারে এবং আপনি যখন লিঙ্কযুক্ত অ্যাপ্লিকেশনটি বাস্তবায়নের চেষ্টা করেছিলেন কেবল তখনই তা প্রদর্শিত হবে।
উল্লেখ্য: সাধারণভাবে এটা অ্যাপ্লিকেশন বন্ধ এক লিঙ্ক প্রলোভন এড়াতে সেরা /usr/bin।
/etc/profile.d
তারপরে সমস্ত ব্যবহারকারীকে এই ব্যবস্থাপনার ব্যবস্থা করতে হবে, প্রশাসক খুব সহজেই ডিরেক্টরিতে $PATHএটি সম্পর্কিত ফাইল যুক্ত করে বাক্সের প্রত্যেকের সাথে এটি যুক্ত করতে পারে /etc/profile.d।
এর মতো একটি ফাইল /etc/profile.d/maven.sh:
PATH=$PATH:/usr/local/maven/bin
আপনি এটির সাহায্যে সমস্ত ব্যবহারকারীর সেটআপটিকে দূষিত না করে প্রশাসক হিসাবে এটি করেন।
বিকল্প ব্যবহার করা
বেশিরভাগ ডিস্ট্রোস এখন alternatives(ফেডোরা / সেন্টোস) বা update-alternatives(দেবিয়ান / উবুন্টু) নামে আরেকটি সরঞ্জাম সরবরাহ করে যা আপনি সেই $PATHসরঞ্জামগুলিতে লুপ করতেও ব্যবহার করতে পারেন যা সম্ভবত বাইরের বাইরে থাকতে পারে /bin। এগুলির মতো সরঞ্জাম ব্যবহার করা অধিকতর কার্যকর কারণ এগুলি বেশিরভাগ অ্যাডমিনরা "স্ট্যান্ডার্ড অনুশীলন" হিসাবে বিবেচনা করবে এবং তাই সিস্টেমগুলি এক অ্যাডমিন থেকে অন্য প্রশাসকের কাছে হস্তান্তর করা সহজ করে দেয়।
লিঙ্কগুলি তৈরি করতে এই সরঞ্জামটি একই কাজ করে /bin; তবে এটি এই লিঙ্কগুলি তৈরি এবং ধ্বংস পরিচালনা করে, সুতরাং কোনও সরঞ্জামের মাধ্যমে বনাম বনাম আপনি যখন পরামর্শ দিচ্ছেন ঠিক ততক্ষণে এটি করা সিস্টেমের উদ্দেশ্যযুক্ত সেটআপটি বোঝা সহজ।
এখানে আমি একটি বাক্সে ওরাকল জাভা পরিচালনা করতে সেই সিস্টেমটি ব্যবহার করছি:
$ ls -l /etc/alternatives/ | grep " java"
lrwxrwxrwx. 1 root root 73 Feb 5 13:15 java -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64/jre/bin/java
lrwxrwxrwx. 1 root root 77 Feb 5 13:15 java.1.gz -> /usr/share/man/man1/java-java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64.1.gz
lrwxrwxrwx. 1 root root 70 Feb 5 13:19 javac -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64/bin/javac
lrwxrwxrwx. 1 root root 78 Feb 5 13:19 javac.1.gz -> /usr/share/man/man1/javac-java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64.1.gz
lrwxrwxrwx. 1 root root 72 Feb 5 13:19 javadoc -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64/bin/javadoc
lrwxrwxrwx. 1 root root 80 Feb 5 13:19 javadoc.1.gz -> /usr/share/man/man1/javadoc-java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64.1.gz
আপনি এর প্রভাব দেখতে পারেন:
$ type java
java is /usr/bin/java
$ readlink -f /usr/bin/java
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64/jre/bin/java
আমার $ 0.02
দুর্ভাগ্যজনক /binহলেও লিঙ্কগুলি তৈরি করা সম্ভবত বেশিরভাগ সিসাদমিন দ্বারা অত্যন্ত নিরুৎসাহিত হবে:
- এটি কাস্টম হিসাবে দেখা হয়েছে এবং অন্য অ্যাডমিন বাক্সটি বাছাই করা প্রয়োজন হলে বিভ্রান্তির কারণ হতে পারে কারণ এটি ভ্রূণ হবে
- এই "ভঙ্গুর" কাস্টমাইজেশনের ফলস্বরূপ কোনও ব্যবস্থা ভবিষ্যতের রাজ্যে ভেঙে যেতে পারে।
/opt।