Saya telah melihat di banyak tempat yang digunakan install -duntuk membuat direktori dan install -cmenyalin file. Mengapa tidak menggunakan mkdirdan cp? Apakah ada keuntungan menggunakan install?
Saya telah melihat di banyak tempat yang digunakan install -duntuk membuat direktori dan install -cmenyalin file. Mengapa tidak menggunakan mkdirdan cp? Apakah ada keuntungan menggunakan install?
Jawaban:
Itu tergantung pada apa yang Anda lakukan.
The installPerintah biasanya digunakan dalam skrip instalasi yang datang dengan paket dan kode sumber untuk menginstal binary untuk sistem Anda. Itu juga dapat digunakan untuk menginstal file atau direktori lain. Selain opsi -ddan yang -cAnda miliki -muntuk menentukan izin baru file yang akan diinstal, jadi Anda tidak perlu melakukan cpdan chmoduntuk mendapatkan hasil yang sama. Misalnya:
install -m644 "$srcdir/$pkgname-$pkgver-linux64" "$pkgdir/opt/$pkgname"
Anda juga memiliki opsi -gdan -ountuk mengatur grup target dan pemilik, masing-masing. Ini untuk menghindari panggilan terpisah chown. Secara umum, menggunakan installmemperpendek skrip Anda dan membuatnya lebih ringkas dengan melakukan pembuatan file, menyalin, pengaturan mode, dan hal-hal terkait dalam satu perintah, bukan banyak.
Untuk referensi, lihat man install. Untuk penggunaan, lihat saja skrip instalasi yang dikirimkan dengan beberapa kode sumber paket .
"instal" umumnya menggabungkan tindakan berikut:
Jadi, itu mengikuti pendekatan Unix bahwa alat harus dibuat untuk tindakan tunggal tetapi lengkap menginstal file yang dibuat oleh beberapa alat bangunan ke lokasi kerjanya.
Konsep lengkap seperti yang saya jelaskan diimplementasikan dalam sistem BSD (dalam versi yang disebut "xinstall"); Saya memperlakukan mode "salinan aman" di sini (versi baru dengan penggantian nama atom) sebagai hal yang vital untuk ini. Sistem Linux (dari coreutils) ketinggalan bagian penting ini dan rentan terhadap perlombaan antara menghapus dan membuka kembali oleh proses pengamat; tapi ini bisa dicakup oleh manajer paket.
Terlepas dari deskripsi sebelumnya di sini tentang penggunaan, ada perbedaan tingkat rendah antara cpdan install, setidaknya di Linux. Jika menyalin di atas file yang ada, cptimpa inode file yang ada, sambil installselalu membuat inode baru untuk nama file yang sama.
Ini membuat perbedaan ketika menginstal versi baru dari biner yang berjalan. Penggunaan cpmenyebabkan kesalahan EBUSY, sementara installakan berhasil. Biner yang berjalan masih akan menggunakan versi lama, tetapi versi baru digunakan jika program di-restart.
Jika direktori yang dimaksud sudah ada:
mkdir -p akan mencoba untuk mengatur bit mode kepemilikan dan fileinstall -d tidak akan mencoba mengatur bit mode kepemilikan dan fileIni untuk mkdirdan installdari GNU coreutils . Keduanya menggunakan make_dir_parentsfungsi yang sama , tetapi dengan preserve_existingparameter yang diatur ke falseatau true, masing-masing.
installatau$(INSTALL)dalam file makefile juga menandai langkah-langkah tersebut sebagai langkah penyalinan instalasi dan bukan langkah penyalinan biasa. Itu bisa bermanfaat.