ฉันเคยเห็นinstall
คำสั่งที่ใช้ใน Makefiles จำนวนมากและการมีอยู่และการใช้งานของมันค่อนข้างสับสน จาก manpages ก็ดูเหมือนว่าชุ่ยของcp
ที่มีคุณสมบัติที่น้อยลง cp
แต่ฉันคิดว่ามันจะไม่ถูกนำมาใช้จนกว่าจะมีข้อได้เปรียบบางกว่า ตกลงคืออะไร?
ฉันเคยเห็นinstall
คำสั่งที่ใช้ใน Makefiles จำนวนมากและการมีอยู่และการใช้งานของมันค่อนข้างสับสน จาก manpages ก็ดูเหมือนว่าชุ่ยของcp
ที่มีคุณสมบัติที่น้อยลง cp
แต่ฉันคิดว่ามันจะไม่ถูกนำมาใช้จนกว่าจะมีข้อได้เปรียบบางกว่า ตกลงคืออะไร?
คำตอบ:
install
ไม่เพียง แต่คัดลอกไฟล์ แต่ยังเปลี่ยนความเป็นเจ้าของและการอนุญาตและเลือกที่จะลบสัญลักษณ์การดีบักจากไฟล์เรียกทำงาน มันรวมcp
กับchown
, และchmod
strip
เป็นเครื่องมือระดับสูงที่สะดวกในการทำภารกิจพื้นฐานตามลำดับให้สำเร็จ
ข้อได้เปรียบของinstall
over 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
rm
cp
ซึ่งหมายความว่าสามารถเขียนทับไฟล์ที่ใช้งานโดยยกเลิกการเชื่อมโยง (rm
) ก่อนcp
เพียงอย่างเดียวจะให้ข้อผิดพลาด