ฉันควรรวบรวมซอฟต์แวร์ที่รวบรวมไว้ที่ไหน?


126

ฉันต้องรวบรวมซอฟต์แวร์บางอย่างในเครื่อง Fedora ของฉัน สถานที่ที่ดีที่สุดในการวางไว้จึงไม่รบกวนการทำงานของซอฟต์แวร์สำเร็จรูป


คุณอาจพบว่าคำถามนี้มีประโยชน์
rozcietrzewiacz

คำตอบ:


89

Rule of thumb อย่างน้อยในระบบ Debian-flavored:

  • /usr/localสำหรับสิ่งซึ่งก็คือ "ทั้งระบบ" -ie /usr/localมีแนวโน้มที่จะเริ่มต้นใน distro ของ$PATHและตามลำดับชั้นไดเรกทอรี UNIX กับมาตรฐาน/usr/local/bin, /usr/local/libฯลฯ

  • /optสำหรับสิ่งที่คุณไม่ไว้วางใจที่จะทำให้ทั้งระบบที่มีต่อแอปคำนำหน้า-IE /opt/firefox-3.6.8, /opt/mono-2.6.7และอื่น ๆ สิ่งต่าง ๆ ในที่นี่ต้องการการจัดการที่รอบคอบมากขึ้น แต่ก็มีโอกาสน้อยที่จะทำให้ระบบของคุณพัง - และง่ายกว่าที่จะลบออกเนื่องจากคุณเพิ่งลบโฟลเดอร์และมันหายไป


น่าสนใจโปรแกรม / แอปพลิเคชั่นหลายตัวแนะนำให้ติดตั้งโดยอัตโนมัติ/optหากคุณsudoติดตั้ง
HongboZhu

50

$PATHหากคุณจริงๆไม่ต้องการเข้าไปยุ่งเลยไม่ได้ใส่มันทุกที่ในของคุณ

หากคุณต้องการมันในอย่างน้อยให้แน่ใจว่าจะไม่ติดตั้ง$PATH /usr/localฉันได้พบว่าจำนวนมากของซอฟแวร์ดูมีแม้จะติดตั้งโดย distro /usrลง

วิธีที่ฉันโปรดปรานในการติดตั้งซอฟต์แวร์ที่คอมไพล์เองอยู่ใน$HOMEไดเรกทอรีของฉัน ด้วยวิธีนี้คุณไม่ต้องใช้sudoเพื่ออะไรและมันแยกออกจากระบบที่เหลือของคุณเป็นอย่างมาก ตัวอย่างเช่น:

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install

และถ้าคุณต้องการแล้วคุณสามารถเพิ่มที่คุณ/home/username/stage/bin$PATH


1
แน่นอนว่าการใช้โฮมไดเร็กตอรี่เป็นตัวเลือกที่ดีที่สุด IMO
bitek

1
+1 เห็นด้วย ฉันชอบ ~ / sbin สำหรับสคริปต์ bash / ruby ​​/ python และ ~ / opt / ... สำหรับการติดตั้งที่คอมไพล์ด้วย aliases ใน ~ / bin
กริช

4
+1 สำหรับการใช้โฮมไดเร็กตอรี่ของคุณทำให้มันง่ายขึ้น; -1 สำหรับคำแนะนำเพื่อหลีกเลี่ยง $ PATH - มีไดเรกทอรีจริง ๆ "สงวนไว้สำหรับการติดตั้งท้องถิ่น" ตามมาตรฐาน (เช่น, /usr/local)
Riccardo Murri

1
ข้อเสนอแนะของฉันเพื่อหลีกเลี่ยง / usr / local ขึ้นอยู่กับความปรารถนาของผู้โพสต์ดั้งเดิม (ค่อนข้างคลุมเครือ) ที่จะไม่รบกวนการทำงานของซอฟต์แวร์สำเร็จรูป เนื่องจากมีซอฟต์แวร์สำเร็จรูปจำนวนมากที่จะ "ช่วย" โดยดูที่ / usr / local หรือใน $ PATH ฉันคิดว่ามีคุณสมบัติที่รบกวน แต่มันขึ้นอยู่กับความต้องการและเป้าหมายของแต่ละบุคคล / usr / local อาจเป็นตัวเลือกที่ดีที่สุดในหลาย ๆ สถานการณ์
Sandy

ไม่มีใครสังเกตเห็นความเข้าใจผิดของตัวอักษร "s" ในความคิดเห็น # 2 ที่ควรถูกลบ
meffect

20

FHS บอกว่าจะวางไว้ใน / usr / localที่การแจกแจงไม่ควรแตะต้องมัน /usr/local/binสำหรับไบนารี/usr/local/srcสำหรับแหล่งที่มาและ/usr/local/libสำหรับไลบรารี ดูข้อมูลจำเพาะ FHSสำหรับข้อมูลเพิ่มเติม


แล้วการกำหนดค่าล่ะ ถ้าฉันติดตั้ง MySQL โดยไม่ใช้ตัวจัดการแพคเกจฉันควรใช้/etc/mysqlการกำหนดค่านี้หรือไม่
Hubro

ฉันเพิ่งสังเกตเห็นว่ามี/usr/local/etcโฟลเดอร์ตามค่าเริ่มต้นฉันเดาว่าฉันควรใช้ ... :-)
Hubro

10

/optส่วนใหญ่เวลาที่ผมชอบที่จะวางสิ่งที่รวบรวมของตัวเองใน มันเป็นสถานที่มาตรฐานหลอก นอกจากนี้คุณยังสามารถพิจารณา/usr/localได้ แต่ฉันชอบที่จะทำให้สิ่งของของฉันโดดเดี่ยว 100%


1
distro มีแนวโน้มที่จะวางบางสิ่งลงใน / opt (โดยทั่วไปจะเป็นแพ็คเกจ) / optไม่ได้บอกว่า distro ไม่สามารถแตะมันได้ อย่างไรก็ตามมันบอกว่าเกี่ยวกับ/ usr / local
xenoterracide

1
ฉันไม่เคยเห็นสิ่งที่ใส่ distro /optแต่ฉันได้เห็นหลายครั้งที่/usr/localเกลื่อนไปด้วยขยะที่มาจาก distro
Scott Anderson

ฉันใช้ distro ชอบใส่ java ใน / opt ฉันเคยเห็นตัวอ่าน acrobat อยู่ในนั้นด้วย หากพวกเขากำลังใส่สิ่งต่าง ๆ ใน / usr / local พวกเขาจะไม่สนใจ FHS ซึ่งกล่าวว่ามันจะต้องปลอดภัยจากการถูกเขียนทับในการอัพเดทระบบ
xenoterracide

สำหรับแต่ละคนฉันคิดว่า FHS นั้นดี แต่ฉันคิดว่าบางครั้งมันก็ไม่สนใจ
Scott Anderson

สิ่งเดียวที่ฉันเคยเห็นแพคเกจ distro วางใน/usr/localคือลำดับชั้นไดเรกทอรีที่ขนานกับในแผนภูมิมาตรฐานและอาจไฟล์ดัชนีสำหรับสิ่งต่าง ๆ เช่น TeX
Phil Miller

9

นำมา/usr/local/srcไว้ที่

สิ่งที่ฉันทำคือแยกแหล่งที่มาในไดเรกทอรีนี้ มันจะสร้างเส้นทางเช่น

/usr/local/src/postgresql-8.3.7

จากนั้นฉันจะสร้างลิงก์สัญลักษณ์ไปที่:

/usr/local/src # ln -s  postgresql-8.3.7 postgresql

/usr/local/src/postgresqlทำอาคารของคุณทั้งหมดใน

การทำสิ่งต่าง ๆ ในลักษณะนี้จะช่วยได้เมื่อคุณต้องการป๊อปอัพระหว่างเวอร์ชันและเอกสารที่คุณใช้งานอยู่


1
+1 สำหรับการระบุเหตุผลของคุณและวิธีการที่ OP อาจนำไปใช้รวมถึงการกำหนดเวอร์ชัน
samt

6

สิ่งนี้เตือนฉันฉันต้องใช้checkinstallบ่อยขึ้น! ด้วยวิธีนี้ฉันทำตามปกติ

 ./configure
 make

ติดตามโดย

 sudo checkinstall

เพื่อสร้างไฟล์. deb ...


2
ไม่ตอบคำถาม
JBentley

5

หากมีความเป็นไปได้ - ฉันขอแนะนำให้รวบรวมซอฟต์แวร์ของคุณแล้วสร้างแพ็คเกจ FC (ฉันเชื่อว่าใช้ yum เพื่อติดตั้งแพ็คเกจซอฟต์แวร์) จากนั้นคุณสามารถติดตั้งแพคเกจซอฟต์แวร์รวบรวมของคุณเองและลบออกโดยไม่ทำให้ระบบทั้งหมดยุ่งเหยิง


5

หากคุณต้องการติดตั้งและลบแอพพลิเคชั่นต่าง ๆ ที่คุณสร้างขึ้นเองได้อย่างง่ายดายคุณสามารถใช้Stowเป็นผู้จัดการแพ็คเกจง่ายๆ


5

ตามFHSนั้น/usr/local/จะใช้สำหรับแอปพลิเคชันที่รวบรวมจากแหล่งข้อมูลในขณะที่/opt/ใช้สำหรับแอปพลิเคชันบุคคลที่สามที่ผู้ขายระบบปฏิบัติการของคุณไม่สนับสนุน


4

สองสิ่งที่ฉันแนะนำ:

ทั้งระบบ: ใช้stowและติดตั้งภายใต้ / usr / local / stow / package-version จากนั้นคุณสามารถสลับระหว่างเวอร์ชันได้อย่างง่ายดาย

ในบ้านของฉันหรือถ้าผมไม่ได้มีสิทธิ์ในการเขียน / usr / local ผมเองติดตั้งโปรแกรมภายใต้ ~ / .local ซึ่งเป็นทำนองโดยมาตรฐาน XDG

คุณยังสามารถใช้ stow ในเครื่องได้แม้ว่าฉันจะไม่ทำก็ตาม :)


3

ฉันมีการตั้งค่าที่แตกต่างกันเล็กน้อยกว่าคนส่วนใหญ่เพราะฉันทำการพัฒนามากมาย ฉันมีไดเรกทอรี / home / jackson / bin / ที่ฉันติดตั้งข้อมูลลงในและฉันได้แก้ไข. bashrc ของฉันเพิ่มสิ่งนี้:

export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH

ฉันจะไม่ทำสิ่งนี้ทุกอย่าง แต่มันดีในระหว่างการพัฒนา


3

อันที่จริงมันไม่ยากที่จะสร้าง deb หรือ rpm's จาก tarball ต้นทาง ด้วยวิธีนี้คุณสามารถใช้สิ่งอำนวยความสะดวกของตัวจัดการแพ็คเกจของ distro เพื่อให้ระบบของคุณสะอาด นี่คือสิ่งที่ฉันทำส่วนใหญ่แล้วเพียงแค่สร้างรอบต่อนาทีเล็กน้อย


2

หากคุณกำลังรวบรวมแอปพลิเคชันคุณสามารถเพิ่มเส้นทางที่ปฏิบัติการได้ในตัวแปร PATH env ของคุณ สิ่งนี้จะไม่ส่งผลกระทบต่อผู้ใช้รายอื่น


ฉันสงสัยว่าทำไมโหวตลง? +1 ถึงประเภทของ "ยอดคงเหลือ"
phunehehe

ฉันยังสงสัยว่าทำไม :-) ฉันใช้โซลูชันเดียวกันสำหรับการใช้ cscope โดยที่ฉันไม่ได้รับอนุญาตให้ติดตั้ง
Hemant

@phunehehe อาจเป็นเพราะมันไม่ได้พยายามตอบคำถาม คำถามถามว่าจะวางซอฟต์แวร์ไว้ที่ไหน คำตอบนี้ให้คำแนะนำเกี่ยวกับสิ่งที่คุณสามารถทำได้หลังจากวางไว้ที่ไหน สามารถปรับปรุงได้โดยให้คำแนะนำเกี่ยวกับโฟลเดอร์ที่จะใช้
JBentley

2

มีตัวเลือกเสมอที่จะ "วางไว้ในที่ที่มันอยู่" แต่เขียน rpm อย่างง่าย ๆ ก่อน


1

หากคุณต้องการให้แอปพลิเคชันของคุณพร้อมใช้งานสำหรับผู้ใช้ทั้งหมดในระบบและคุณมีสิทธิ์ที่จำเป็นให้ใช้ / opt หากคุณต้องการให้แอปพลิเคชันพร้อมใช้งานสำหรับคุณเท่านั้น (และรูท) ให้ใช้ / home / ชื่อผู้ใช้


0

วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการคว้าซอร์สโค้ด ( .src.rpmสำหรับ RPMites) แกะมันสับแหล่งที่มาใหม่ / การกำหนดค่า / อะไรก็ตามที่มันเปลี่ยนรุ่นที่เหมาะสมและสร้าง การติดตั้งสิ่งนี้ทำให้ผู้จัดการแพคเกจของคุณรับรู้ถึงแพ็คเกจใหม่ช่วยให้สามารถพิจารณาได้สำหรับการอ้างอิงและถอนการติดตั้ง / อัปเดต

นี่เป็นงานที่น่าเบื่อเป็นครั้งแรก แต่ถ้ามีเวอร์ชั่นใหม่ (หรือแพทช์สำคัญบางอย่าง) ออกมามันก็ง่ายกว่าที่จะอัพเดท ข้อดีอีกอย่างคือคุณสามารถสร้างพื้นที่เก็บข้อมูลของคุณเองด้วยซอฟต์แวร์ท้องถิ่นเพื่อใช้ร่วมกันเช่นโดยเครื่องในห้องปฏิบัติการ


0

เขียน RPM ไม่ใช่เรื่องยากมีแนวทางในการวางสิ่งต่าง ๆ และทำการถอนการติดตั้งอย่างรวดเร็ว

หากคุณทำสิ่งนี้ให้ติดตั้งไฟล์ภายใต้/usrและไม่อยู่ภายใต้/usr/localเช่นไฟล์อื่น ๆ ทั้งหมดที่ผ่านระบบบรรจุภัณฑ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.