Apakah
make install
dengan Makefile sebagian besar panggilan waktu/usr/bin/install
?Apa yang perlu
/usr/bin/install
dilakukan selain menyalin file yang baru saja dikompilasi/usr/bin/local
?Halaman manual mengatakan
/usr/bin/install
menyalin file dan mengatur atribut. Atribut apa yang begitu penting untuk ditetapkan?- Apakah itu hanya mengatur mode izin dan pemilik / grup, yang tidak perlu?
11
Jawaban:
install
menawarkan sejumlah fitur selain menyalin file ke direktori.-s
pilihan menghapus tabel simbol dari sebuah eksekusi menghemat ruang,-m
pilihan menetapkan izin bit. File-file yang duduk di direktori pengembang dibuat tunduk pada umask-nya, yang dapat mencegah orang lain untuk mengeksekusinya.install -m 755 file1 /usr/local/bin
memastikan bahwa semua orang dapat mengeksekusi file, yang kemungkinan apa yang diinginkan pengembang untuk file dalam direktori bersama.-o
dan-g
pilihan set pemilik dan kelompok. Dengancp
, pemilik dan grup file tujuan akan diatur ke uid dan gid dari siapa pun yang menjalankancp
, dan dengancp -p
, pemilik dan grup file tujuan akan sama dengan file di direktori build, yang keduanya mungkin tidak menjadi apa yang diinginkan pengembang. Thewall
Program perlu di kelompoktty
, yangscreen
Program perlu kelompokutmp
, dllinstall -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)
lebih ringkas daripada empat perintahcp
,strip
,chmod
, danchown
.Poin terakhir adalah kemungkinan mengapa
install
perintah itu ditemukan dan mengapa banyak makefile menggunakannya.Install
tidak selalu digunakan. Saya telah melihatcp -r lib $(DESTDIR)/lib
ketika ada seluruh pohon yang penuh dengan hal-hal untuk disalin, dan./install.sh
jika pengembang lebih suka menggunakan skrip khusus. Banyak paket memilikiinstall.sh
turunan dari X11, yang miripinstall
tetapi mendukung-t
opsi (transform) untuk mengubah nama file tujuan dengan cara yang ditentukan.sumber
Karena perintah apa yang digunakan dalam makefile pada dasarnya tergantung pada pengembang proyek, sulit untuk memberikan jawaban yang pasti di sini. Secara umum saya akan mengatakan bahwa itu adalah praktik yang baik untuk menggunakan
install
perintah dalam makefile untuk setiap proses instalasi yang disebutkan dalam 2, tapi sekali lagiinstall
bukan POSIX jadi selalu menggunakannya mungkin bukan pendekatan yang paling portabelAFAIK sebagian besar alat dapat digunakan untuk secara otomatis menghasilkan makefile seperti
automake
dancmake
akan digunakaninstall
.Umumnya
install
digunakan untuk menyalin file dan mengatur izin / pemilik / grup dalam satu perintah seperti yang Anda katakan. Satu fungsi lain yang umum digunakan adalah untuk menghapus simbol yang tidak perlu (mis. Simbol debugging) dari biner yang tidak lagi membutuhkannya. Ini juga memiliki beberapa opsi tambahan untuk hal-hal seperti membuat cadangan sebelum menginstal dan bekerja dalam konteks SELinux yang mungkin berguna.Izin mana yang dipilih bergantung pada file itu sendiri. Sebagian besar file yang diinstal dapat dibaca oleh semua orang, tetapi hanya dapat ditulis oleh root (idenya adalah untuk meletakkan file program di tempat di mana ia dapat diakses oleh semua orang tetapi tidak dapat dirusak). Ini tidak terjadi dengan semuanya, jika file tersebut berisi data sensitif maka itu adalah umum untuk membatasi akses ke grup atau hanya root.
sumber