/ usr / bin / install ทำอะไรนอกจากการคัดลอก?


11
  1. การmake installใช้ Makefile ใช้เวลาส่วนใหญ่/usr/bin/installหรือไม่

  2. ทำงานอะไรที่จำเป็น/usr/bin/installนอกเหนือจากการคัดลอกไฟล์ที่คอมไพล์แล้วไปยัง/usr/bin/local?

  3. หน้าคนบอกว่า/usr/bin/installคัดลอกไฟล์และตั้งค่าคุณลักษณะ คุณลักษณะใดที่มีความสำคัญต่อการตั้งค่า

  4. มันเพิ่งตั้งค่าโหมดการอนุญาตและเจ้าของ / กลุ่มซึ่งไม่จำเป็น?

"ทำการติดตั้งด้วย Makefile เป็นเวลาส่วนใหญ่การโทร / usr / bin / install หรือไม่" ไม่ทำในสิ่งที่ต้องการ มันเป็นเป้าหมายที่ทำให้ เป็นคำถามของคุณเกี่ยวกับการติดตั้งที่ปฏิบัติการได้หรือไม่? หรือเกี่ยวกับการทำ มันไม่ชัดเจน.
Faheem Mitha

ทั้งสอง @FaheemMitha
ทิม

ตกลงดี 1 และ 2 เป็นคำถามที่แตกต่างกันและคำตอบของ 1 คืออาจไม่ แต่กำหนด "ส่วนใหญ่เวลา" ฉันไม่แน่ใจในจุดที่ 1
Faheem Mitha

คำตอบ:


17

install มีคุณสมบัติมากมายนอกเหนือจากการคัดลอกไฟล์ไปยังไดเรกทอรี

  • -sตัวเลือกเอาตารางสัญลักษณ์จากปฏิบัติการประหยัดพื้นที่
  • -mตัวเลือกชุดบิตได้รับอนุญาต ไฟล์ที่อยู่ในไดเรกทอรีของผู้พัฒนานั้นสร้างขึ้นภายใต้ umask ของเขาหรือเธอซึ่งอาจป้องกันไม่ให้ผู้อื่นเรียกใช้งานพวกเขา install -m 755 file1 /usr/local/binตรวจสอบให้แน่ใจว่าทุกคนสามารถดำเนินการไฟล์ได้ซึ่งเป็นไปได้ว่านักพัฒนาต้องการไฟล์ในไดเรกทอรีที่ใช้ร่วมกัน
  • -oและ-gตั้งค่าตัวเลือกเจ้าของและกลุ่ม ด้วยcpเจ้าของและกลุ่มของไฟล์ปลายทางจะถูกตั้งค่าเป็น uid และ gid ของใครก็ตามที่ทำงานcpและด้วยcp -pเจ้าของและกลุ่มของไฟล์ปลายทางจะเหมือนกับไฟล์ในไดเรกทอรีสร้างซึ่งอาจไม่มี เป็นสิ่งที่นักพัฒนาต้องการ wallโปรแกรมจะต้องอยู่ในกลุ่มttyที่screenโปรแกรมจะต้องมีกลุ่มutmpอื่น ๆ
  • มันลดจำนวนคำสั่งที่จำเป็นต้องใส่ในสูตร makefile install -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)เป็นรวบรัดกว่าสี่คำสั่งcp, strip, และchmodchown

สัญลักษณ์แสดงหัวข้อย่อยสุดท้ายมีแนวโน้มว่าทำไมinstallคำสั่งถูกประดิษฐ์และทำไมหลาย makefiles ใช้มัน

Installแม้ว่าจะไม่ได้ใช้เสมอ ฉันเคยเห็นcp -r lib $(DESTDIR)/libเมื่อมีต้นไม้ที่เต็มไปด้วยสิ่งของที่จะคัดลอกและ./install.shหากนักพัฒนาต้องการใช้สคริปต์ที่กำหนดเอง แพ็คเกจจำนวนมากได้install.shมาจากแพ็คเกจที่มาพร้อมกับ X11 ซึ่งมีลักษณะเหมือนinstallแต่รองรับ-tตัวเลือก (เปลี่ยนรูป) เพื่อเปลี่ยนชื่อไฟล์ปลายทางในวิธีที่ระบุ


2
  1. เนื่องจากคำสั่งใดที่ใช้ใน makefile นั้นขึ้นอยู่กับผู้พัฒนาโครงการเป็นเรื่องยากที่จะให้คำตอบที่ชัดเจนที่นี่ โดยทั่วไปฉันจะบอกว่ามันเป็นวิธีปฏิบัติที่ดีในการใช้installคำสั่งใน makefile สำหรับกระบวนการติดตั้งใด ๆ ที่กล่าวถึงใน 2 แต่แล้วอีกครั้งinstallไม่ใช่ POSIX ดังนั้นการใช้งานตลอดเวลาอาจไม่ได้เป็นวิธีพกพามากที่สุด

    AFAIK เครื่องมือส่วนใหญ่สามารถใช้ในการสร้าง makefiles เช่นautomakeและcmakeจะใช้โดยinstallอัตโนมัติ

  2. โดยทั่วไปinstallจะใช้สำหรับการคัดลอกไฟล์และตั้งค่าสิทธิ์ / เจ้าของ / กลุ่มในคำสั่งเดียวอย่างที่คุณพูด อีกฟังก์ชั่นที่ใช้กันทั่วไปคือการตัดสัญลักษณ์ที่ไม่จำเป็น (เช่นสัญลักษณ์การดีบัก) จากไบนารีที่ไม่ต้องการอีกต่อไป นอกจากนี้ยังมีตัวเลือกเพิ่มเติมบางอย่างสำหรับสิ่งต่าง ๆ เช่นการสำรองข้อมูลก่อนการติดตั้งและทำงานภายในบริบทของ SELinux ซึ่งอาจเป็นประโยชน์

สิทธิ์ในการเลือกขึ้นอยู่กับไฟล์นั้น ๆ ไฟล์ที่ติดตั้งส่วนใหญ่สามารถอ่านได้โดยทุกคน แต่สามารถเขียนได้โดยรูทเท่านั้น (ความคิดคือการวางไฟล์โปรแกรมไว้ในที่ที่ทุกคนสามารถเข้าถึงได้ แต่ไม่สามารถแก้ไขได้) นี่ไม่ใช่กรณีที่มีทุกอย่างหากไฟล์มีข้อมูลที่ละเอียดอ่อนมันเป็นเรื่องปกติที่จะ จำกัด การเข้าถึงกลุ่มหรือเพื่อรูทเท่านั้น

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