บางครั้งฉันพบปัญหาในการใช้make install
ซึ่งทำให้ฉันมีpermission denied
ข้อผิดพลาดเมื่อเขียนไปยังบางโฟลเดอร์ sudo make install
ดังนั้นการใช้สัญชาตญาณผม สิ่งนี้จะนำเสนอปัญหาเพิ่มเติมหรือไม่
ฉันใช้ Debian Etch
บางครั้งฉันพบปัญหาในการใช้make install
ซึ่งทำให้ฉันมีpermission denied
ข้อผิดพลาดเมื่อเขียนไปยังบางโฟลเดอร์ sudo make install
ดังนั้นการใช้สัญชาตญาณผม สิ่งนี้จะนำเสนอปัญหาเพิ่มเติมหรือไม่
ฉันใช้ Debian Etch
คำตอบ:
หลีกเลี่ยงการติดตั้งแบบโลคัลลงในไดเรกทอรีระบบ ไดเรกทอรีระบบเช่น/usr
ถูกสงวนไว้สำหรับระบบการจัดการบรรจุภัณฑ์ที่จะใช้ ตามคำนิยามหากคุณกำลังทำเช่นmake install
นั้นหมายความว่าคุณกำลังติดตั้งในพื้นที่และหากคุณจำเป็นต้องทำเช่นsudo make install
นั้นหมายความว่าคุณไม่ได้รับอนุญาตจากที่ใดก็ตามที่คุณกำลังเขียน
ดังนั้นหากคุณได้รับข้อผิดพลาดเกี่ยวกับการอนุญาตmake install
ให้ตรวจสอบและดูว่าคุณกำลังพยายามติดตั้งลงในไดเรกทอรีระบบและติดตั้ง/usr/local
หรือคล้ายกันแทน /usr/local
สงวนไว้สำหรับการติดตั้งในพื้นที่ คุณอาจต้องอนุญาตให้ตัวเองเขียน/usr/local
แต่โดยปกติจะทำได้ง่าย ใน Debian คุณสามารถทำได้โดยเพิ่มตัวคุณเองลงในstaff
กลุ่ม ยังดีกว่าค้นหาหรือสร้างแพ็คเกจไบนารีและติดตั้งแทน ด้วยวิธีนี้คุณสามารถติดตามแพ็คเกจที่ติดตั้งและรับประโยชน์อื่น ๆ ของการจัดการแพ็คเกจ
โปรดทราบว่าระบบการจัดการแพคเกจจะไม่ติดตั้งลง/usr/local
ใน FHS ดูส่วนที่ 9.1 ของคู่มือนโยบายเดเบียน - ลำดับชั้นของระบบไฟล์สำหรับภาพรวม
ต่อไปนี้เป็นคำถามทั่วไปเกี่ยวกับคำสั่ง:
เนื่องจากคำสั่ง sudo รันคำสั่งที่คุณส่งเป็นรูตหมายความว่าคำสั่ง make มีสิทธิพิเศษสำหรับผู้ใช้ระดับสูง ซึ่งหมายความว่าหาก makefile เป็นอันตรายหรือสคริปต์ใด ๆ ที่อาจเรียกว่าเป็นอันตรายก็อาจทำให้ระบบของคุณเสียหาย
กล่าวโดยย่อหากคุณไม่เชื่อถือซอฟต์แวร์อย่าติดตั้ง หากคุณเชื่อถือซอฟต์แวร์การรันในฐานะรูทไม่ควรทำร้ายอะไรเลย
บันทึก:
sudo make install
เหมือนกับsu; make install
ในกรณีส่วนใหญ่
ตามที่ได้รับคำตอบข้างต้นsudo make install
ให้คุณติดตั้งไฟล์ในไดเรกทอรีที่คุณเป็นผู้ใช้แบบอ่านอย่างเดียว
ปัญหาที่ฉันสามารถคาดการณ์ได้คือในภายหลังคุณอาจต้องการถอนการติดตั้งหรืออัพเกรดโปรแกรม หากคุณยังมีแผนผังไดเรกทอรีซอร์สโค้ดอยู่แล้ว a make uninstall
จะถอนการติดตั้งโปรแกรมสำหรับคุณ แต่หากผู้ใช้ทั่วไปอื่น ๆ จำนวนมากคุณลบแผนผังไดเรกทอรีซอร์สโค้ดคุณจะโชคไม่ดี และเนื่องจากคุณยังไม่ได้ติดตั้งโปรแกรมโดยใช้ระบบการจัดการแพ็คเกจคุณอาจไม่สามารถถอนการติดตั้งโปรแกรมด้วยวิธีดังกล่าวได้
วิธีที่ดีที่สุดในการติดตั้งโปรแกรมดังกล่าวอาจเป็นการติดตั้งในไดเรกทอรีบ้านของคุณ ผ่านตัวเลือกที่จะ--prefix=/home/<user>/<some>/<directory>
./configure
นี้จะช่วยให้คุณสามารถใช้make install
แทนsudo make install
ตั้งแต่/home/<user>/<some>/<directory>
เป็นเขียนได้โดยคุณ นอกจากนี้การถอนการติดตั้งนั้นง่ายมาก -rm -rf /home/<user>/<some>/<directory>