สถานที่ที่จะวางไบนารีเพื่อให้พวกเขาอยู่ในเส้นทางและสามารถพบได้ง่าย


10

ฉันกำลังสร้างไบนารีสคริปต์และอื่น ๆ ที่ฉันต้องการติดตั้งอย่างง่ายดาย (ใช้ rpms ของตัวเอง) เนื่องจากฉันต้องการให้ทุกคนสามารถเข้าถึงได้สัญชาตญาณของฉันจึงต้องใส่ไว้ใน / usr / bin;

  • ไม่จำเป็นต้องเปลี่ยน PATH

อย่างไรก็ตาม; executables ของฉันตอนนี้หายไปในกลุ่มของคนอื่น ๆ ทั้งหมด; ฉันจะค้นหาไฟล์ปฏิบัติการทั้งหมดที่ฉันใส่กลับมาได้อย่างง่ายดาย ฉันคิดว่า:

  • ไดเรกทอรีย่อยใน / usr / bin (ฉันรู้ว่าฉันไม่สามารถทำได้เพียงแสดงความคิดของฉัน)
  • ไดเรกทอรีอื่น (/ opt / me / bin) และเชื่อมโยงแต่ละไฟล์ที่เรียกใช้กับ / usr / bin (มีงานจำนวนมาก)
  • ไดเรกทอรีอื่น (/ opt / me / bin) และเชื่อมโยงไดเรกทอรีไปยัง / usr / bin (เป็นไปได้หรือไม่)

สิ่งที่จะเป็น "วิธีที่ดีที่สุดและสอดคล้องกับ Linux มากที่สุด" ในการทำเช่นนี้?

แก้ไข: เรามีการสนทนาเกี่ยวกับเรื่องนี้ใน บริษัท และมาพร้อมกับตัวเลือกย่อยที่ดีที่สุด: ใส่ไบนารีใน / usr / bin / บริษัท ด้วยลิงก์สัญลักษณ์จาก / usr / bin ฉันไม่ได้ตื่นเต้นกับการแก้ปัญหานี้ (การปฏิเสธอย่างต่อเนื่อง)

คำตอบ:


7

หากคุณรวมไบนารีของคุณไว้ใน RPM ของคุณเองมันเป็นเรื่องไม่สำคัญที่จะได้รับรายการของสิ่งที่พวกเขาและที่พวกเขาติดตั้ง

ตัวอย่าง

$ 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 ประเภทใดเป็นของฉัน?

คุณสามารถสร้าง RPM ของคุณโดยใช้ข้อมูลที่รู้จักซึ่งสามารถตกลงกันก่อนที่จะทำการสร้าง ฉันมักจะสร้างแพ็คเกจบนระบบที่เป็นเจ้าของโดเมนของฉันดังนั้นจึงเป็นเรื่องง่ายที่จะค้นหา RPMs โดยเพียงแค่ค้นหา RPM ทั้งหมดที่สร้างขึ้นบนโฮสต์ X.mydom.com

ตัวอย่าง

$ 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บรรทัดภายใน RPM

การใช้ / usr / bin / บริษัท ?

ฉันอาจไม่แนะนำให้ใช้สถานที่เช่นนี้ ส่วนใหญ่เป็นเพราะมันต้องการให้ทุกระบบของคุณมีการ$PATHเพิ่มของพวกเขาที่จะรวมมันและไม่ได้มาตรฐาน การปรับแต่งสิ่งต่าง ๆ นั้นเป็น "สิทธิในการผ่าน" สำหรับผู้ดูแลระบบ Wannabee Unix ทุกคนเสมอ แต่ฉันก็ไม่ย่อท้อเว้นแต่จะจำเป็นจริงๆ

ปัญหาที่ใหญ่ที่สุดที่มีการปรับแต่งเช่นนี้คือพวกเขากลายเป็นภาระทั้งในการรักษาสภาพแวดล้อมของคุณและในการทำให้ผู้คนใหม่ ๆ เพิ่มความเร็วในการใช้สภาพแวดล้อมของคุณ

ฉันสามารถรับรายการไฟล์จาก RPM ได้หรือไม่

ใช่คุณสามารถทำสิ่งนี้ได้ แต่จะต้องใช้การโทร 2 RPM ก่อนจะสร้างรายการของแพคเกจที่สร้างขึ้นบนโฮสต์ X.mydom.com หลังจากรับรายการนี้คุณจะต้องโทรหา RPM ใหม่เพื่อสอบถามไฟล์ที่เป็นของแต่ละแพ็คเกจเหล่านี้ คุณสามารถทำได้โดยใช้สายการบินเดียวนี้:

$ 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 ทั้งหมดที่ฉันติดตั้ง โชคดีที่เราตกลงที่จะใส่ชื่อ บริษัท ของเราในชื่อรอบต่อนาที; ดังนั้นบางอย่างเช่น "rpm -qa | grep company" แสดงรายการ rpms ของฉันที่ติดตั้งไว้
Chris Maes

@ChrisMaes - ดูการอัปเดต ฉันใช้ build host เพื่อพิจารณาว่า pkgs ใดเป็น "ของฉัน"
slm

ขอบคุณสำหรับการอัพเดท; หากคุณสามารถเพิ่มคำสั่งเพื่อค้นหาไบนารีทั้งหมดที่ rpms ของฉันเป็นเจ้าของ (ซึ่งมี "บริษัท " ในชื่อของพวกเขา) ซึ่งน่าอัศจรรย์
Chris Maes

@ChrisMaes - ดูการอัปเดต LMK หากคุณต้องการคำแนะนำเพิ่มเติม
slm

คำตอบที่เขียนดีมาก; สมบูรณ์และจัดรูปแบบได้ดี ขอบคุณมาก!
Chris Maes

4

คำแนะนำที่ชัดเจนคือตั้งชื่อไบนารีหรือแพ็คเกจของคุณด้วยวิธีพิเศษ ตัวอย่างเช่นคุณสามารถใส่คำนำหน้าพวกเขาด้วยcm-ตามชื่อย่อของคุณตามที่ระบุในโพสต์นี้ หากคุณกำลังติดตั้ง rpms พวกเขาจำเป็นต้องเข้าไป/usr/bin(ถ้าพวกเขาเป็นผู้ปฏิบัติการระดับ), ต่อ FHS พวกเขาไม่ควรเข้าไปใน/usr/local/binตัวอย่าง นั่นคือสำหรับการติดตั้งในท้องถิ่นเท่านั้น

สำหรับบันทึกแล้วฉันไม่พบความคิดในการวางไบนารีในสารบบพิเศษและเชื่อมโยงมันเข้าด้วยกัน แต่ฉันคิดว่าบางครั้งสิ่งเหล่านี้จะทำ โปรดจำไว้ว่าหากคุณต้องการค้นหาว่าไบนารีใดเป็นของแพ็คเกจใดคุณสามารถค้นหาระบบบรรจุภัณฑ์ได้


3

ไบนารีที่ไม่ได้เป็นส่วนหนึ่งของระบบหรือการกระจายมักอยู่ใน

/usr/local/bin

ไดเรกทอรีมักจะอยู่ในมาตรฐาน$PATHเพื่อให้ไบนารีของคุณจะพบ


โดยปกติ / usr / local / bin ใช้สำหรับไบนารีที่มีเฉพาะ "ภายใน" บนเครื่องนั้น ไม่ใช่สำหรับไบนารีที่ฉันจะแจกจ่ายในเครื่องอื่น ๆ ที่ใช้รอบต่อนาที ...
Chris Maes

2
ภายใต้ Linux ใช้/usr/local/binสำหรับไฟล์ปฏิบัติการที่ติดตั้งด้วยตนเอง executables /usr/binบริหารโดยผู้จัดการแพคเกจไปสู่
Gilles 'ดังนั้นหยุดความชั่วร้าย'

@Gilles การตีความคำถามแรกของฉันคือการติดตั้งบนเครื่องเดียวทำให้ผู้ใช้ทุกคนสามารถใช้งานไบนารี (ไม่ได้ติดตั้งใน $ HOME) ตอนนี้ฉันเห็นแล้วว่ามันไม่ใช่สิ่งที่ฉันเข้าใจจริงๆ
Matteo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.