ฉันเคยเห็นinstallคำสั่งที่ใช้ใน Makefiles จำนวนมากและการมีอยู่และการใช้งานของมันค่อนข้างสับสน จาก manpages ก็ดูเหมือนว่าชุ่ยของcpที่มีคุณสมบัติที่น้อยลง cpแต่ฉันคิดว่ามันจะไม่ถูกนำมาใช้จนกว่าจะมีข้อได้เปรียบบางกว่า ตกลงคืออะไร?
ฉันเคยเห็นinstallคำสั่งที่ใช้ใน Makefiles จำนวนมากและการมีอยู่และการใช้งานของมันค่อนข้างสับสน จาก manpages ก็ดูเหมือนว่าชุ่ยของcpที่มีคุณสมบัติที่น้อยลง cpแต่ฉันคิดว่ามันจะไม่ถูกนำมาใช้จนกว่าจะมีข้อได้เปรียบบางกว่า ตกลงคืออะไร?
คำตอบ:
installไม่เพียง แต่คัดลอกไฟล์ แต่ยังเปลี่ยนความเป็นเจ้าของและการอนุญาตและเลือกที่จะลบสัญลักษณ์การดีบักจากไฟล์เรียกทำงาน มันรวมcpกับchown, และchmod stripเป็นเครื่องมือระดับสูงที่สะดวกในการทำภารกิจพื้นฐานตามลำดับให้สำเร็จ
ข้อได้เปรียบของinstallover cpสำหรับการติดตั้ง executables คือถ้าเป้าหมายมีอยู่แล้วมันจะลบไฟล์เป้าหมายและสร้างขึ้นมาใหม่ สิ่งนี้จะกำจัดคุณสมบัติในปัจจุบันเช่นรายการการควบคุมการเข้าถึงและความสามารถซึ่งสามารถมองเห็นได้ทั้งในลักษณะกลับหัวและมีข้อเสีย เมื่ออัปเดตไฟล์เรียกทำงานหากมีการใช้งานอินสแตนซ์ของไฟล์เรียกทำงานนี้ไฟล์จะไม่ได้รับผลกระทบใด ๆ ในทางตรงกันข้ามcpอัพเดทไฟล์ให้เข้าที่หากมี สำหรับตัวแปร Unix ส่วนใหญ่สิ่งนี้จะล้มเหลวด้วยข้อผิดพลาดEBUSY¹หากเป้าหมายนั้นทำงานได้ ในบางครั้งมันสามารถทำให้เป้าหมายผิดพลาดได้เนื่องจากมันจะโหลดส่วนของโค้ดแบบไดนามิกและการแก้ไขไฟล์ทำให้โหลดโค้ดแบบไร้สาระ
installคือคำสั่ง BSD (เพิ่มใน4.2BSDเช่นในช่วงต้นทศวรรษ 1980) มันไม่ได้รับการรับรองจาก POSIX
¹ “ ไฟล์ข้อความไม่ว่าง” ในบริบทนี้“แฟ้มข้อความ” หมายถึง“ไฟล์ไบนารี” สำหรับเหตุผลทางประวัติศาสตร์ปิดบัง
มันมีวิธีการมาตรฐานในการจัดการความเป็นเจ้าของและการอนุญาตของไฟล์หรือไดเรกทอรีในขณะที่คัดลอกไฟล์หรือสร้างไดเรกทอรีในคำสั่งเดียว
ด้วยinstallคำสั่งเราสามารถคัดลอกไฟล์ที่มีสิทธิ์ปรารถนา
ตัวอย่างที่ส่วนใหญ่ใช้ในขณะตั้งค่า ldap
install -o ldap -g ldap /etc/openldap/DB_CONFIG_EXAMPLE /var/lib/ldap/DB_CONFIG
สิ่งนี้ช่วยให้เราประหยัดchown ldap. /var/lib/ldap/DB_CONFIGหากคุณคัดลอกโดยใช้cpคุณจำเป็นต้องทำchownในสถานการณ์นี้เช่นกัน
ดู man page สำหรับinstall:
$ man install
สิ่งที่สกัดมา
SYNOPSIS
install [OPTION]... [-T] SOURCE DEST
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
install [OPTION]... -d DIRECTORY...
DESCRIPTION
This install program copies files (often just compiled) into
destination locations you choose. If you want to download and
install a ready-to-use package on a GNU/Linux system, you should instead
be using a package manager like yum(1) or apt-get(1).
In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to
the existing DIRECTORY, while setting permission modes and
owner/group. In the 4th form, create all components of the given
DIRECTORY(ies).
Mandatory arguments to long options are mandatory for short options too.
สิ่งที่มีประโยชน์อื่น ๆ เช่นการติดตั้งกับเจ้าของที่เฉพาะเจาะจงสิทธิ์และรักษาไฟล์ต้นฉบับ timestamps installยังสามารถทำได้ผ่านการใช้งานของ
-g, --group=GROUP
set group ownership, instead of process' current group
-m, --mode=MODE
set permission mode (as in chmod), instead of rwxr-xr-x
-o, --owner=OWNER
set ownership (super-user only)
-p, --preserve-timestamps
apply access/modification times of SOURCE files to corresponding
destination files
installแทนที่จะเก็บรักษาสิทธิ์ที่มีอยู่เช่นเดียวกับcp
rmcpซึ่งหมายความว่าสามารถเขียนทับไฟล์ที่ใช้งานโดยยกเลิกการเชื่อมโยง (rm) ก่อนcpเพียงอย่างเดียวจะให้ข้อผิดพลาด