ฉันต้องการเรียกใช้ 'ทำการติดตั้ง' ดังนั้นฉันจึงมีทุกอย่างที่ฉันต้องการ แต่ฉันต้องการให้มันติดตั้งสิ่งต่าง ๆ ในโฟลเดอร์ของตัวเองซึ่งตรงข้ามกับระบบ / usr / bin ฯลฯ เป็นไปได้ไหม แม้ว่ามันจะอ้างอิงถึงเครื่องมือใน / usr / bin เป็นต้น?
ฉันต้องการเรียกใช้ 'ทำการติดตั้ง' ดังนั้นฉันจึงมีทุกอย่างที่ฉันต้องการ แต่ฉันต้องการให้มันติดตั้งสิ่งต่าง ๆ ในโฟลเดอร์ของตัวเองซึ่งตรงข้ามกับระบบ / usr / bin ฯลฯ เป็นไปได้ไหม แม้ว่ามันจะอ้างอิงถึงเครื่องมือใน / usr / bin เป็นต้น?
คำตอบ:
ขึ้นอยู่กับแพ็คเกจ หาก Makefile ถูกสร้างขึ้นโดยเครื่องมืออัตโนมัติของ GNU ( ./configure
) คุณสามารถตั้งค่าตำแหน่งเป้าหมายได้ดังนี้:
./configure --prefix=/somewhere/else/than/usr/local
หาก Makefile ไม่ได้สร้างขึ้นโดยเครื่องมืออัตโนมัติ แต่กระจายไปพร้อมกับซอฟต์แวร์เพียงเปิดขึ้นในตัวแก้ไขและเปลี่ยน อาจมีการกำหนดไดเรกทอรีเป้าหมายการติดตั้งในตัวแปรที่อื่น
make && make install
ทำตามคำสั่งกำหนดค่า?
--prefix
คือถ้าคุณเรียกใช้strings
ไบนารีที่เกิดขึ้นหลังจากนั้นคุณจะเห็นว่าเส้นทางถูกเก็บไว้ภายใน ฉันไม่รู้ว่าทำไมมันถึงเกิดขึ้น แต่ฉันไม่ต้องการเส้นทางของเครื่องบนไบนารีที่ฉันส่งให้กับผู้ใช้รายอื่น
เนื่องจากไม่ทราบว่า automake รุ่นใดที่คุณสามารถใช้ตัวแปรสภาพแวดล้อมDESTDIR
ดู Makefile เพื่อให้แน่ใจ
ตัวอย่างเช่น:
export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
make DESTDIR=./new/customized/path install
คำสั่งด่วนนี้ทำงานสำหรับฉันสำหรับการติดตั้ง opencv รุ่น 3.2.0 บน Ubuntu 16 เส้นทาง DESTDIR สามารถสัมพันธ์กันได้ดี
การเปลี่ยนเส้นทางดังกล่าวยังมีประโยชน์ในกรณีที่ผู้ใช้ไม่มีสิทธิ์ของผู้ดูแลระบบตราบใดที่ตำแหน่ง DESTDIR มีสิทธิ์การเข้าถึงสำหรับผู้ใช้ เช่น / home //
อาจขึ้นอยู่กับสิ่งที่ได้รับการสนับสนุนโดยโมดูลที่คุณพยายามรวบรวม หาก makefile ของคุณถูกสร้างขึ้นโดยใช้ autotools ให้ใช้:
--prefix=<myinstalldir>
เมื่อเรียกใช้. / config
แพคเกจบางอย่างช่วยให้คุณสามารถแทนที่เมื่อทำงาน:
make prefix=<myinstalldir>
อย่างไรก็ตามหากคุณไม่ได้ใช้. / config คุณจะรู้ได้อย่างเดียวคือเปิดไฟล์ makefile และตรวจสอบ มันควรจะเป็นหนึ่งในตัวแปรสองสามตัวแรกที่อยู่ด้านบน
make prefix=...
อาจส่งผลให้ระบบไบนารีที่มีเส้นทางที่ใช้รหัสผิดเนื่องจากไม่สามารถแก้ไขได้หลังจากนั้น./configure --prefix=...
หากแพ็กเกจมีMakefile.PL
- หนึ่งสามารถใช้:
perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install
* คำอธิบายเพิ่มเติม: https://www.perlmonks.org/?node_id=564720
ฉันลองแก้ไขปัญหาข้างต้น ไม่มีใครทำงาน
ในที่สุดฉันเปิดไฟล์ Makefile และเปลี่ยนเส้นทางคำนำหน้าด้วยตนเองเป็นเส้นทางการติดตั้งที่ต้องการเช่นด้านล่าง
PREFIX ?= "installation path"
เมื่อฉันพยายาม --prefix "make" บ่นว่าไม่มีคำสั่งอินพุตดังกล่าว อย่างไรก็ตามบางแพ็คเกจอาจยอมรับ --prefix ซึ่งแน่นอนว่าเป็นโซลูชันที่สะอาดกว่า
--prefix
ตัวเลือกคือการที่คุณโทรสอบถามก่อน./configure
make
ลองใช้ INSTALL_ROOT
make install INSTALL_ROOT=$INSTALL_DIRECTORY