ติดตั้งแต่ละโปรแกรมในแผนผังไดเรกทอรีเฉพาะและใช้StowหรือXStowเพื่อทำให้โปรแกรมทั้งหมดปรากฏในลำดับชั้นทั่วไป Stow สร้างลิงก์สัญลักษณ์จากไดเร็กทอรีเฉพาะโปรแกรมไปยังแผนผังทั่วไป
/usr/local/stow
ในรายละเอียดมากขึ้นเลือกไดเรกทอรีระดับบนสุดเช่น /usr/local/stow/PROGRAM_NAME
ติดตั้งแต่ละโปรแกรมภายใต้ ตัวอย่างเช่นจัดเรียงไฟล์ปฏิบัติการที่จะติดตั้งใน/usr/local/stow/PROGRAM_NAME/bin
man page ของมัน/usr/local/stow/man/man1
และอื่น ๆ หากโปรแกรมใช้ autoconf ./configure --prefix /usr/local/stow/PROGRAM_NAME
เรียกใช้แล้ว หลังจากที่คุณทำงานmake install
แล้วให้เรียกใช้stow
:
./configure --prefix /usr/local/stow/PROGRAM_NAME
make
sudo make install
cd /usr/local/stow
sudo stow PROGRAM_NAME
และตอนนี้คุณจะมีลิงก์สัญลักษณ์เช่นนี้:
/usr/local/bin/foo -> ../stow/PROGRAM_NAME/bin/foo
/usr/local/man/man1/foo.1 -> ../../stow/PROGRAM_NAME/man/man1/foo.1
/usr/local/lib/foo -> ../stow/PROGRAM_NAME/lib/foo
คุณสามารถติดตามว่าคุณติดตั้งโปรแกรมใดโดยการแสดงรายการเนื้อหาของstow
ไดเรกทอรีและคุณรู้ว่าโปรแกรมใดเป็นไฟล์อยู่เนื่องจากเป็นลิงก์สัญลักษณ์ไปยังตำแหน่งภายใต้ไดเรกทอรีของโปรแกรมนั้น ถอนการติดตั้งโปรแกรมโดยเรียกใช้stow -D PROGRAM_NAME
แล้วลบไดเรกทอรีของโปรแกรม คุณสามารถทำให้โปรแกรมไม่สามารถใช้งานได้ชั่วคราวโดยการเรียกใช้stow -D PROGRAM_NAME
(เรียกใช้stow PROGRAM_NAME
เพื่อให้พร้อมใช้งานอีกครั้ง)
หากคุณต้องการสลับระหว่างเวอร์ชันเดียวกันของโปรแกรมเดียวกันอย่างรวดเร็วให้ใช้/usr/local/stow/PROGRAM_NAME-VERSION
เป็นไดเรกทอรีโปรแกรม การอัพเกรดจากรุ่น 3 ถึง 4 รุ่น, ติดตั้งรุ่นที่ 4 stow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
แล้วเรียกใช้
รุ่นเก่าของ Stow ไม่ได้ไปไกลเกินกว่าพื้นฐานที่ฉันได้อธิบายไว้ในคำตอบนี้ รุ่นใหม่เช่นเดียวกับ XStow (ซึ่งยังไม่ได้รับการบำรุงรักษาเมื่อเร็ว ๆ นี้) มีคุณสมบัติขั้นสูงเช่นความสามารถในการละเว้นไฟล์บางไฟล์จัดการกับ symlink ที่มีอยู่นอกไดเรกทอรี stow (เช่นman -> share/man
) จัดการความขัดแย้งบางอย่างโดยอัตโนมัติ โปรแกรมให้ไฟล์เดียวกัน) ฯลฯ
~/software/stow
หากคุณไม่ได้หรือไม่ต้องการที่จะใช้การเข้าถึงรากคุณสามารถเลือกไดเรกทอรีภายใต้ไดเรกทอรีบ้านของคุณเช่น ในกรณีนี้เพิ่มที่คุณ~/software/bin
PATH
หากman
ไม่ได้โดยอัตโนมัติพบหน้าคนเพิ่มที่คุณ~/software/man
MANPATH
เพิ่ม~/software/info
ที่คุณINFOPATH
, ~/software/lib/python
ที่คุณPYTHONPATH
และอื่น ๆ ตามความเหมาะสม