Apa tujuan dari perintah 'install'?

49

Saya telah melihat installperintah yang digunakan di banyak Makefiles, dan keberadaan serta penggunaannya agak membingungkan. Dari manual, sepertinya tiruan cpdengan fitur yang lebih sedikit, tapi saya berasumsi itu tidak akan digunakan kecuali memiliki kelebihan cp. Apa masalahnya?

azernik
sumber

Jawaban:

50

installtidak hanya menyalin file tetapi juga mengubah kepemilikan dan izinnya dan secara opsional menghapus simbol debug dari executable. Menggabungkan cpdengan chown, chmoddan strip. Ini adalah alat tingkat tinggi yang nyaman untuk mencapai urutan umum dari tugas-tugas dasar.

Keuntungan installlebih cpuntuk menginstal executable adalah bahwa jika target sudah ada, itu menghapus file target dan membuat yang baru. Ini menghilangkan semua properti saat ini seperti daftar kontrol akses dan kemampuan, yang dapat dilihat sebagai sisi atas maupun sisi bawah. Saat memperbarui yang dapat dieksekusi, jika ada contoh yang dapat dijalankan yang dapat dijalankan, mereka tetap berjalan tidak terpengaruh. Sebaliknya, cpperbarui file pada tempatnya jika ada. Pada sebagian besar varian Unix, ini gagal dengan kesalahan EBUSY¹ jika targetnya adalah executable yang berjalan; pada beberapa hal itu dapat menyebabkan target mogok karena memuat bagian kode secara dinamis dan memodifikasi file menyebabkan kode tidak masuk akal dimuat.

installadalah perintah BSD (ditambahkan pada 4.2BSD , yaitu pada awal 1980-an). Itu belum diadopsi oleh POSIX.

¹ "File teks sibuk". Dalam konteks ini, "file teks" berarti "file biner yang dapat dieksekusi", karena alasan historis yang tidak jelas .

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Catatan penting (sejauh yang saya bisa mengerti) adalah bahwa ia juga bergabung rmbersama cp. Ini berarti dapat menimpa file yang sedang digunakan dengan memutuskan tautannya ( rm) terlebih dahulu. cpsendiri akan memberikan kesalahan.
code_fodder
10

Ini memberikan cara standar memanipulasi kepemilikan dan izin file atau direktori saat menyalin file atau membuat direktori, dalam satu perintah.

Ignacio Vazquez-Abrams
sumber
9
Itu bukan atom. Atomic berarti tidak ada keadaan peralihan yang terlihat oleh proses lain. installapakah salinan diikuti oleh chown dan chmod, semua syscall terpisah, dan tidak menggunakan rename-to-place (setidaknya pada coreutils 8.13 versi GNU tidak). Jika Anda menganggap semua itu terjadi secara atomis, Anda mungkin akan terkejut.
3

Dengan installperintah, kita dapat menyalin file dengan izin keinginan

Contoh yang banyak digunakan saat mengatur ldap

install -o ldap -g ldap /etc/openldap/DB_CONFIG_EXAMPLE  /var/lib/ldap/DB_CONFIG

Ini menyelamatkan kami dari melakukan chown ldap. /var/lib/ldap/DB_CONFIG, jika Anda menyalin menggunakan cpmaka Anda juga perlu chowndalam skenario ini

Rahul Patil
sumber
1

Lihat halaman manual untuk install:

$ man install

kutipan

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.

Hal-hal berguna lainnya seperti menginstal dengan kepemilikan khusus, izin, dan menjaga cap waktu file asli juga dapat dicapai melalui penggunaan 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

Referensi

slm
sumber
4
Seperti yang saya katakan dalam pertanyaan, saya membaca halaman utama; itu membuat saya tidak tahu tentang apa ini menambah fungsionalitas cp.
azernik
slm menyoroti fungsionalitas khusus yang membedakan keduanya: Anda dapat mengatur pemilik, grup, dan mode spesifik untuk file tujuan install, bukan hanya mempertahankan izin yang adacp
Joshua Miller