বাইনারিগুলি কোথায় রাখবেন যাতে সেগুলি সর্বদা পথে থাকে এবং সহজেই পাওয়া যায়


10

আমি বেশ কয়েকটি বাইনারি, স্ক্রিপ্ট ইত্যাদি তৈরি করছি যা আমি সহজেই ইনস্টল করতে চাই (আমার নিজের আরপিএম ব্যবহার করে)। যেহেতু আমি এগুলি সবার জন্য অ্যাক্সেসযোগ্য চাই, তাই আমার অন্তর্নিহিত বিষয়গুলি এগুলিকে / ইউএসআর / বিনে প্রবেশ করানো হবে;

  • PATH পরিবর্তন করার দরকার নেই

যাহোক; আমার এক্সিকিউটেবলগুলি এখন অন্য সকলের পুলে অদৃশ্য হয়ে যায়; আমি কীভাবে সেখানে সহজে চালানো সমস্ত এক্সিকিউটেবলকে খুঁজে পেতে পারি। আমি চিন্তা ছিল:

  • / ইউএসআর / বিনের একটি উপ-ডিরেক্টরি (আমি জানি আমি এটি করতে পারি না; কেবল আমার চিন্তার চিত্র তুলে ধরার জন্য)
  • অন্য ডিরেক্টরি (/ অপ্ট / নিজেকে / বিন) এবং প্রতিটি এক্সিকিউটেবলকে / ইউএসআর / বিনের সাথে সংযুক্ত করে (প্রচুর কাজ)
  • অন্য ডিরেক্টরি (/ অপ্ট / নিজেকে / বিন) এবং ডিরেক্টরিটি / ইউএসআর / বিনের সাথে সংযুক্ত করে (এটি কি সম্ভব?)

এটি করার জন্য "সেরা, সর্বাধিক লিনাক্স-কমপ্লায়েন্ট উপায়" কী হবে?

সম্পাদনা: আমাদের সংস্থায় এটি নিয়ে একটি আলোচনা হয়েছিল এবং এই উপ-অনুকূল বিকল্পটি উপস্থিত হয়েছিল: / usr / বিন / সংস্থায় / usr / বিন থেকে প্রতীকী লিঙ্ক সহ বাইনারিগুলি রাখুন put আমি এই সমাধানটি নিয়ে শিহরিত হই না (বিবাদ চলমান)

উত্তর:


7

আপনি যদি নিজের বাইনারিগুলি আপনার নিজের আরপিএমগুলিতে বান্ডিল করেন তবে তারা কী এবং তারা কোথায় ইনস্টল করা হয়েছিল তার একটি তালিকা পাওয়া তুচ্ছ।

উদাহরণ

$ rpm -ql httpd| head -10
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d
/etc/httpd/conf.modules.d/00-base.conf

আমি আপনার এক্সিকিউটেবলগুলিকে হয় /usr/binবা /usr/local/binনিজের RPM রোল করার পরামর্শ দেব । এটি করা বেশ তুচ্ছ এবং আরপিএম ব্যবহার করে আপনার সফ্টওয়্যার স্থাপনার ব্যবস্থাপনার মাধ্যমে আপনি আপনার সফ্টওয়্যারটির কনফিগারেশন পরিচালনটি আরও সহজ করে দেওয়ার সাথে সাথে একটি সংস্করণ নম্বর সহ একটি বান্ডিল লেবেল করতে সক্ষম হবেন।

কোন RPM গুলি "আমার" তা নির্ধারণ করা হচ্ছে?

আপনি কিছু পরিচিত তথ্য ব্যবহার করে আপনার আরপিএম তৈরি করতে পারেন যা বিল্ডিংয়ের আগে সম্মতি জানানো যেতে পারে। আমি প্রায়শই আমার ডোমেনের মালিকানাধীন সিস্টেমে প্যাকেজগুলি তৈরি করি তাই হোস্ট এক্স.মিড.কম.তে নির্মিত সমস্ত আরপিএম কেবল অনুসন্ধান করে আরপিএমগুলি সন্ধান করা তুচ্ছ।

উদাহরণ

$ rpm -qi httpd
Name        : httpd
Version     : 2.4.7
Release     : 1.fc19
Architecture: x86_64
Install Date: Mon 17 Feb 2014 01:53:15 AM EST
Group       : System Environment/Daemons
Size        : 3865725
License     : ASL 2.0
Signature   : RSA/SHA256, Mon 27 Jan 2014 11:00:08 AM EST, Key ID 07477e65fb4b18e6
Source RPM  : httpd-2.4.7-1.fc19.src.rpm
Build Date  : Mon 27 Jan 2014 08:39:13 AM EST
Build Host  : buildvm-20.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

এটি Build Hostআরপিএমের মধ্যে লাইন হবে ।

/ Usr / বিন / সংস্থার ব্যবহার?

আমি সম্ভবত এটির মতো কোনও অবস্থানের ব্যবহারকে নিরুৎসাহিত করব। মূলত কারণ এটি আপনার সমস্ত সিস্টেমে $PATHএটি অন্তর্ভুক্ত করার জন্য তাদের বাড়ানো প্রয়োজন এবং এটি মানক নয়। জিনিসগুলি কাস্টমাইজ করা সর্বদা প্রতিটি ওয়ানানবি ইউনিক্স প্রশাসকের জন্য "প্যাসেজের অধিকার" হয়ে থাকে, তবে একেবারে প্রয়োজনীয় না হলে আমি সর্বদা এটি নিরুৎসাহিত করি।

কাস্টমাইজেশনের মতো এর সাথে সবচেয়ে বড় সমস্যাটি হ'ল তারা আপনার পরিবেশ বজায় রাখতে এবং আপনার পরিবেশ কীভাবে ব্যবহার করতে হবে তার গতি বাড়ানোর জন্য নতুন লোককে আনার ক্ষেত্রে একটি বোঝা হয়ে ওঠে।

আমি কি আরপিএম থেকে কেবল ফাইলগুলির একটি তালিকা পেতে পারি?

হ্যাঁ আপনি এটি অর্জন করতে পারেন তবে এটির জন্য আরপিএমের 2 টি কল প্রয়োজন। প্রথমে প্যাকেজগুলির একটি তালিকা তৈরি করবে যা হোস্ট X.mydom.com এ নির্মিত হয়েছিল। এই তালিকাটি পাওয়ার পরে আপনাকে এই প্যাকেজের প্রতিটিটির মালিকানাধীন ফাইলগুলির জন্য পুনরায় কল করতে হবে আরপিএমকে। আপনি এই একটি লাইনার ব্যবহার করে এটি অর্জন করতে পারেন:

$ rpm -ql $(rpm -qa --queryformat "%-30{NAME}%{BUILDHOST}\n" | \
    grep X.mydom.com | awk '{print $1}') | head -10
/etc/pam.d/run_init
/etc/sestatus.conf
/usr/bin/secon
/usr/bin/semodule_deps
/usr/bin/semodule_expand
/usr/bin/semodule_link
/usr/bin/semodule_package
/usr/bin/semodule_unpackage
/usr/sbin/fixfiles
/usr/sbin/genhomedircon

এবং আমি ইনস্টল করা সমস্ত rpms দ্বারা ইনস্টল করা সমস্ত বাইনারিগুলির একটি তালিকা কীভাবে পাবেন? ভাগ্যক্রমে আমরা আমাদের সংস্থার নাম আরপিএমের নাম রাখতে রাজি হয়েছি; সুতরাং "আরপিএম -কিউ | গ্রেপ সংস্থা" এর মতো কিছুতে আমার ইনস্টল হওয়া আরপিএমগুলি তালিকাভুক্ত করে
ক্রিস মেইস

@ ক্রিসমাস - আপডেট দেখুন। আমি কোন pkgs "আমার" তা নির্ধারণের জন্য বিল্ড হোস্ট ব্যবহার করি।
SLM

আপডেটের জন্য ধন্যবাদ; যদি আপনি কেবলমাত্র আমার আরপিএমের মালিকানাধীন সমস্ত বাইনারি (যার নামে "সংস্থা" রয়েছে) সন্ধানের জন্য একটি আদেশ যোগ করতে পারতেন তবে তা চমত্কার হবে
ক্রিস মেইস

@ ক্রিসমাস - আপনার আরও গাইডেন্সের প্রয়োজন হলে আপডেট, এলএমকে দেখুন।
slm

খুব সুন্দর লিখিত উত্তর; সম্পূর্ণ এবং ভাল ফর্ম্যাট। অনেক ধন্যবাদ!
ক্রিস মেস

4

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

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


3

সিস্টেম বা বিতরণ অংশ না বাইনারি সাধারণত হয়

/usr/local/bin

ডিরেক্টরিটি সাধারণত স্ট্যান্ডার্ড থাকে $PATHযাতে আপনার বাইনারিগুলি পাওয়া যায়।


সাধারণত / usr / স্থানীয় / বিনটি বাইনারিগুলির জন্য যা কেবলমাত্র "স্থানীয়ভাবে" সেই মেশিনে বিদ্যমান; বাইনারিগুলির জন্য নয় আমি আরপিএম ব্যবহার করে অন্য মেশিনগুলিতে বিতরণ করব ...?
ক্রিস মায়েস

2
লিনাক্সের অধীনে, /usr/local/binম্যানুয়ালি ইনস্টলড এক্সিকিউটেবলের জন্য। প্যাকেজ ম্যানেজার দ্বারা পরিচালিত এক্সিকিউটেবলসমূহ .ুকে যায় /usr/bin
গিলস 21 এ 28

@ গিলিস, আমার প্রশ্নের প্রথম ব্যাখ্যাটি ছিল একটি একক মেশিনে ইনস্টল করে বাইনারিগুলি প্রত্যেক ব্যবহারকারীর জন্য উপলব্ধ করা হয় (OME HOM এ ইনস্টল করা হয়নি)। এখন আমি দেখতে পাচ্ছি যে এটি আমি যা বুঝতে পেরেছিলাম তা আসলে ছিল না।
মাত্তিও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.