- คำนำหน้าทำอะไรกันแน่เมื่อใช้ใน. / config


29

ดังนั้นฉันมีคำถามง่าย ๆ ที่อาจทำให้ฉันดูโง่ แต่ฉันกำลังเรียนรู้

เมื่อฉันทำ

./configure --prefix/usr/bin/

คำนำหน้าทำอะไร นี่เป็นเพียงการติดตั้งแพคเกจลงในตำแหน่งนั้น

และการตอบกลับสามารถให้คำตอบที่ซับซ้อนมากขึ้นสำหรับการติดตั้งที่ซับซ้อนและอธิบายรายละเอียดเกี่ยวกับคำนำหน้าและตัวเลือกที่ไปพร้อมกับมัน

ถ้าฉันจะเรียกใช้ apt-get install ฉันจะติดตั้งไปยังตำแหน่งที่แน่นอนด้วยคำนำหน้าได้อย่างไร

ฉันเคยเห็นเช่นกัน

 PREFIX=/tmp/installdir make


 PREFIX=/tmp/installdir make install

หากมีคำนำหน้าเรียกว่า. / ตั้งค่าทำไมมันถึงถูกทำในตัวอย่างทั้งสองนี้เสมอ?

ขอบคุณล่วงหน้า!



ตรวจสอบคำตอบที่อัปเดต
luv.preet

freetds.org/userguide/config.htmสิ่งนี้จะช่วยคุณได้มากขึ้น
luv.preet

ความคิดเห็นที่: นี้เป็นเรื่องเกี่ยวกับการติดตั้งซอฟต์แวร์ มีสามปิดหัวข้อโหวตเป็น "ไม่เกี่ยวกับ Ubuntu" หากการปิดนี่สอดคล้องกับนโยบายไซต์จริง ฉันขอแนะนำให้แสดงความคิดเห็น มิฉะนั้นจะมีการเปิดใหม่แม้ว่าจะปิด
Eliah Kagan

คำตอบ:


32

เมื่อคุณติดตั้งซอฟต์แวร์ด้วยmake installหรือsudo make installไฟล์ต่าง ๆ จะอยู่ในไดเรกทอรีที่ต่างกัน ไฟล์เรียกทำงานที่ให้คำสั่งที่ผู้ใช้ตั้งใจจะใช้มักจะอยู่ในbinไดเรกทอรีโดยปกติแล้วไลบรารี่จะอยู่ในlibไดเรกทอรีหน้าคู่มือมักจะอยู่ในmanไดเรกทอรีและอื่น ๆ

เมื่อคุณเรียกใช้./configure, ตัวเลือกที่ช่วยให้คุณสามารถระบุตำแหน่งที่ผู้ไดเรกทอรี มันถูกเรียกเพราะมันช่วยให้คุณให้คำนำหน้าที่ปรากฏในเส้นทางไปยังแต่ละไดเรกทอรีที่ไฟล์จากโปรแกรมหรือห้องสมุดที่คุณกำลังสร้างที่จะติดตั้ง ส่วนใหญ่สคริปต์สนับสนุนและไม่ใส่มันและก็ทำงานเป็นปกติเทียบเท่ากับ--prefix--prefixconfigure--prefix./configure./configure --prefix=/usr/local

เพื่อที่จะตอบคำถามนี้ได้อย่างเต็มที่ฉันได้ทำซ้ำสองส่วนจากคำตอบของฉันไปยังวิธีการติดตั้งไฟล์ tar“ ทั่วโลก”? (บนUnix & Linux ) ซึ่งตอบคำถามนี้โดยเฉพาะ:

การกำหนดค่า Build ของคุณ

เมื่อคุณมีซอร์สโค้ดที่คอมไพล์ด้วยการรัน./configure และmakeโดยปกติคุณจะใช้make install(หรือsudo make install) เพื่อติดตั้ง สิ่งนี้คัดลอกไฟล์จากไดเรกทอรีการสร้างลงในตำแหน่งการติดตั้ง เมื่อสิ่งที่คุณกำลังติดตั้งให้คำสั่งปฏิบัติการ executables เหล่านั้นมักจะถูกคัดลอกลงในไดเรกทอรีที่อยู่ในหรือที่คุณควรพิจารณาการเพิ่ม$PATH $PATH

แม้ว่าการสร้างและติดตั้งซอฟแวร์มักจะเป็นง่ายๆเป็นที่ทำงาน./configure, makeบางครั้งmake checkหรือmake testแล้วmake installหรือsudo make installบางครั้งคุณจะต้องการที่จะผ่านตัวเลือกให้กับconfigureสคริปต์การกำหนดค่าการสร้าง โดยเฉพาะอย่างยิ่งตามที่ pfnuesel กล่าวว่านี่เป็นวิธีที่คุณกำหนดค่า ว่าจะติดตั้งซอฟต์แวร์อย่างไร แม้ว่าmake installขั้นตอนการติดตั้งซอฟต์แวร์จริง ๆ แล้วสถานที่ที่ทุกอย่างจะถูกติดตั้งมักจะสร้างใน ./configureขั้นตอน

--prefixตัวเลือกที่พบมากที่สุดสำหรับเรื่องนี้คือ คำนำหน้าเริ่มต้นเมื่อคุณไม่ได้บอกว่าจะใช้เป็นปกติconfigure /usr/local(บางครั้งซอร์สโค้ดของโปรแกรมหรือไลบรารีจะใช้ค่าเริ่มต้นเป็นส่วนนำหน้าอื่น ๆ โชคดีที่นี่เป็นของหายาก)

ดังนั้นมักจะเทียบเท่ากับ./configure ./configure --prefix=/usr/localในการติดตั้งซอฟต์แวร์ในโฮมไดเร็กตอรี่ของคุณคุณสามารถใช้./configure --prefix=/home/galahad(ถ้า/home/galahadเป็นโฮมไดเร็กตอรี่ของคุณ) หรือ--prefix="$HOME". makeแล้วแน่นอนคุณยังจะต้องสร้างและติดตั้งซอฟต์แวร์ที่มี ฉันควรจะบอกว่าไม่ใช่ทุกซอฟต์แวร์ที่เผยแพร่ในรูปแบบซอร์สโค้ดถูกสร้างขึ้นด้วยวิธีนี้ คุณควรมองหาเอกสารที่อยู่ในแหล่งเก็บรหัสที่แยกออกมาเสมอ

--prefixหมายถึงอะไร

เมื่อคุณเรียกใช้คุณกำลังแสดงให้เห็นว่าควรติดตั้งซอฟต์แวร์ภายใต้ ไดเรกทอรี แต่สิ่งนี้ไม่ค่อยบ่อยนักหากวางไฟล์ไว้หลวมๆ แต่มันวางแฟ้มที่ใช้เพื่อวัตถุประสงค์ที่แตกต่างกันในไดเรกทอรีย่อยที่แตกต่างกันของ หากไดเรกทอรีย่อยเหล่านั้นไม่มีอยู่มันจะสร้างขึ้นมา./configure --prefix=directorydirectorydirectorydirectory

โดยปกติแล้วไฟล์เอ็กซีคิวต์มักจะเข้าไปdirectory/binแม้ว่าพวกเขาจะเข้าไปdirectory/sbinหากพวกมันถูกใช้เพื่อการดูแลระบบหรือพวกเขาอาจจะเข้าไป directory/gamesเล่นเกม ไลบรารี่เข้าสู่ directory/libหรือไดเรกทอรีอื่นที่มีชื่อคล้ายกันเช่น ไฟล์ส่วนหัวไปdirectory/lib32 directory/includeหน้าคู่มือเข้า directory/manสู่ directory/shareไฟล์ข้อมูลที่ใช้โดยการเดินทางในซอฟแวร์

นั่นคือสิ่งที่มันหมายถึงdirectoryจะต้องมีคำนำหน้า เป็นไดเรกทอรีหลักที่มีสถานที่ติดตั้งไฟล์ที่แตกต่างกัน มันจึงปรากฏเป็นคำนำหน้าในเส้นทางที่แน่นอนของไฟล์และไดเรกทอรีส่วนใหญ่ที่สร้างขึ้นโดยการทำงานหรือmake install sudo make install

มีข้อยกเว้นบางประการสำหรับเรื่องนี้ แฟ้มการกำหนดค่า Systemwide - ซึ่งบางครั้งจะสร้างขึ้นเมื่อติดตั้งซอฟต์แวร์ที่จะใช้พวกเขาแม้จะไม่ใช่ - /etcมักจะไปใน โดยทั่วไปจะไม่ได้รับผลกระทบจากการระบุคำนำหน้าอื่น แม้ว่าคุณจะติดตั้งซอฟต์แวร์จำนวนมาก/usr/localแต่ก็ยังคงใช้เป็นส่วนใหญ่ /etcและ/usr/local/etcไดเรกทอรีของคุณอาจไม่มีอยู่ว่างเปล่าหรือมีไฟล์น้อยมาก

man hierในระบบจำนวนมากคุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบระบบแฟ้มโดยทั่วไปการทำงาน หากคุณกำลังใช้ระบบ GNU / Linux คุณอาจจะสนใจในระบบแฟ้มลำดับชั้นมาตรฐาน


2

มันบอกตำแหน่งของสิ่งต่าง ๆ ที่จำเป็นในการกำหนดค่าแพคเกจหรือซอฟต์แวร์ปัจจุบัน

เช่นเดียวกับในกรณีง่าย ๆ มันสามารถบอกตำแหน่งของไลบรารี ssl ได้:

--with-libssh2=/usr/local  #used in configuring nagios

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

--disable-shared  # used in configuring nagios
--disable-link-balancer  # used in configuring Firehol

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

การติดตั้งตัวเลือกสถาปัตยกรรมไฟล์อิสระ--prefix=PREFIX PREFIXเมื่อคุณเรียกใช้make installคำสั่งไลบรารีจะถูกวางไว้ในPREFIX/libไดเรกทอรีไฟล์ปฏิบัติการในPREFIX/binไดเรกทอรีและอื่น ๆ

ถ้าเรื่องนี้ไม่ได้ถูกส่งผ่านไปยังคำสั่งแล้วค่าเริ่มต้นคือconfigure/usr/local

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