ข้อแตกต่างระหว่าง“ make install” และ“ sudo make install”


15

บางครั้งฉันพบปัญหาในการใช้make installซึ่งทำให้ฉันมีpermission deniedข้อผิดพลาดเมื่อเขียนไปยังบางโฟลเดอร์ sudo make installดังนั้นการใช้สัญชาตญาณผม สิ่งนี้จะนำเสนอปัญหาเพิ่มเติมหรือไม่

ฉันใช้ Debian Etch

คำตอบ:


16

หลีกเลี่ยงการติดตั้งแบบโลคัลลงในไดเรกทอรีระบบ ไดเรกทอรีระบบเช่น/usrถูกสงวนไว้สำหรับระบบการจัดการบรรจุภัณฑ์ที่จะใช้ ตามคำนิยามหากคุณกำลังทำเช่นmake installนั้นหมายความว่าคุณกำลังติดตั้งในพื้นที่และหากคุณจำเป็นต้องทำเช่นsudo make installนั้นหมายความว่าคุณไม่ได้รับอนุญาตจากที่ใดก็ตามที่คุณกำลังเขียน

ดังนั้นหากคุณได้รับข้อผิดพลาดเกี่ยวกับการอนุญาตmake installให้ตรวจสอบและดูว่าคุณกำลังพยายามติดตั้งลงในไดเรกทอรีระบบและติดตั้ง/usr/localหรือคล้ายกันแทน /usr/localสงวนไว้สำหรับการติดตั้งในพื้นที่ คุณอาจต้องอนุญาตให้ตัวเองเขียน/usr/localแต่โดยปกติจะทำได้ง่าย ใน Debian คุณสามารถทำได้โดยเพิ่มตัวคุณเองลงในstaffกลุ่ม ยังดีกว่าค้นหาหรือสร้างแพ็คเกจไบนารีและติดตั้งแทน ด้วยวิธีนี้คุณสามารถติดตามแพ็คเกจที่ติดตั้งและรับประโยชน์อื่น ๆ ของการจัดการแพ็คเกจ

โปรดทราบว่าระบบการจัดการแพคเกจจะไม่ติดตั้งลง/usr/localใน FHS ดูส่วนที่ 9.1 ของคู่มือนโยบายเดเบียน - ลำดับชั้นของระบบไฟล์สำหรับภาพรวม


3

ต่อไปนี้เป็นคำถามทั่วไปเกี่ยวกับคำสั่ง:

  • sudo- รันคำสั่งในฐานะ root
  • ทำให้สคริปต์เพื่อสร้างจากแหล่งที่มา

เนื่องจากคำสั่ง sudo รันคำสั่งที่คุณส่งเป็นรูตหมายความว่าคำสั่ง make มีสิทธิพิเศษสำหรับผู้ใช้ระดับสูง ซึ่งหมายความว่าหาก makefile เป็นอันตรายหรือสคริปต์ใด ๆ ที่อาจเรียกว่าเป็นอันตรายก็อาจทำให้ระบบของคุณเสียหาย

กล่าวโดยย่อหากคุณไม่เชื่อถือซอฟต์แวร์อย่าติดตั้ง หากคุณเชื่อถือซอฟต์แวร์การรันในฐานะรูทไม่ควรทำร้ายอะไรเลย

บันทึก:

sudo make installเหมือนกับsu; make installในกรณีส่วนใหญ่


3
คุณมีสิทธิ์ที่จะจบด้วย "ในกรณีส่วนใหญ่" นี่คือกรณีมุม
ederag

3

ตามที่ได้รับคำตอบข้างต้น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>

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