Perintah install Linux: salin file dan tetapkan izin serta pemilik

GNU install menyalin file sambil menetapkan mode izin dan, jika diizinkan, pemilik serta grupnya. Gunakan -d untuk membuat direktori atau -D untuk melengkapi induk tujuan saat menyalin; perintah ini tidak mengelola paket dan dependensi seperti apt atau dnf.

Contoh-contohnya menggunakan perilaku GNU Coreutils. Periksa install --help, man install, dan dokumentasi distribusi Anda ketika portabilitas atau opsi spesifik-versi menjadi penting.

Apa itu perintah install?

install sering dipakai pada tahap pemasangan hasil build atau penempatan file konfigurasi. Sumber tetap ada setelah penyalinan, tetapi tujuan yang sudah ada dapat diganti. Perintah ini bukan penyalin pohon direktori secara rekursif; pilih cp untuk penyalinan file dan direktori umum bila itu yang dibutuhkan.

Sintaks Dasar

install [OPSI]... SUMBER TUJUAN
install [OPSI]... SUMBER... DIREKTORI
install -d [OPSI]... DIREKTORI...

Kutip jalur yang mengandung spasi. Ketika didukung, letakkan -- sebelum operand yang dimulai dengan tanda hubung sehingga tidak diinterpretasikan sebagai opsi.

Penggunaan dasar install

Menempatkan file yang dapat dijalankan

Siapkan mytool sebagai program atau skrip yang sudah diperiksa dan pastikan /usr/local/bin tersedia. Mode 0755 memberi pemilik hak baca, tulis, dan eksekusi; grup serta pengguna lain mendapat baca dan eksekusi. Gunakan sudo jika izin tujuan memerlukannya. Untuk latihan, hilangkan sudo dan ganti tujuan dengan direktori milik Anda.

sudo install -m 0755 mytool /usr/local/bin/mytool

Hasil yang diharapkan adalah salinan /usr/local/bin/mytool dengan mode yang diminta; sumber mytool tetap ada. Pastikan tujuan bukan direktori atau symlink yang tidak Anda maksud. Pada GNU, -T dapat dipakai jika operand terakhir harus diperlakukan sebagai satu nama file yang tepat.

Menempatkan file konfigurasi

Siapkan mytool.conf dan pastikan direktori /etc/mytool sudah tersedia dengan izin yang sesuai. Jika baru dibuat dan kebijakannya memang demikian, induk itu dapat disiapkan dengan sudo install -d -m 0755 /etc/mytool; install -d juga dapat mengubah atribut direktori yang sudah ada. Periksa dan cadangkan konfigurasi lama sebelum menjalankan penimpaan.

sudo install -m 0644 mytool.conf /etc/mytool/mytool.conf

Mode 0644 memberi pemilik hak baca-tulis dan pengguna lain hak baca, tanpa eksekusi. Mode ini sesuai hanya bila isi boleh dibaca pengguna lain. Untuk kredensial atau kunci pribadi, pilih kebijakan lebih ketat seperti 0600 serta pemilik yang benar. Opsi -b dapat menyimpan tujuan lama sebagai cadangan; periksa nama cadangan yang sebenarnya karena VERSION_CONTROL memengaruhi penamaannya.

Membuat direktori instalasi

Opsi -d membuat direktori tanpa menyalin file. Contoh berikut mengasumsikan akun dan grup myapp sudah ada; install tidak membuat akun. Mode 0750 memberi pemilik hak penuh, grup hak baca dan masuk direktori, serta tidak memberi akses kepada pengguna lain. Perubahan pemilik memerlukan kewenangan yang sesuai.

sudo install -d -m 0750 -o myapp -g myapp /var/lib/myapp

Atribut tersebut diterapkan pada direktori yang disebutkan. Induk baru yang dibuat otomatis oleh GNU memakai mode 0755, terlepas dari -m dan masker izin pembuatan (umask). Jika induk juga harus dibatasi, buat serta atur setiap tingkat yang relevan secara eksplisit; jangan menganggap -m 0750 otomatis berlaku pada seluruh rantai induk.

Memeriksa mode setelah instalasi

Jalankan contoh berikut dalam direktori latihan baru dan pastikan kedua nama belum ada. Contoh membuat skrip lengkap yang mencetak demo-ok. Rangkaian && hanya menjalankan pemeriksaan atribut jika pembuatan sumber dan pemasangan berhasil.

printf '%s\n' '#!/bin/sh' 'printf "demo-ok\n"' > demo-tool &&
install -m 0755 -- demo-tool demo-tool-installed &&
stat -c '%a %n' -- demo-tool-installed

Contoh keluaran:

755 demo-tool-installed

Keluaran tersebut menunjukkan mode file tujuan pada Linux dengan izin yang berhasil diterapkan; ia bukan bukti bahwa seluruh program sudah benar. Jalankan ./demo-tool-installed untuk melihat demo-ok, lalu bandingkan isi dengan cmp -s -- demo-tool demo-tool-installed bila perlu. Status sukses harus diperiksa segera dan jangan diabaikan hanya karena sebuah file sudah muncul. Lokasi layanan, arsitektur, dan dependensi program tetap perlu diperiksa terpisah.

Opsi utama

Opsi Tujuan
-m MODE Menetapkan mode izin file atau direktori yang disebutkan; bukan semua induk yang dibuat otomatis.
-o OWNER Tetapkan pemilik saat diizinkan.
-g GROUP Tetapkan grup.
-d Buat direktori dan induk yang diperlukan.
-D Buat induk yang hilang dari tujuan akhir dan instal file.
-t DIR Tentukan direktori target.
-p Pertahankan waktu akses dan modifikasi sumber.
-s Menghapus tabel simbol biner terpasang melalui strip; bukan opsi untuk skrip atau konfigurasi.
-C Melewati perubahan bila isi dan atribut yang relevan sudah sesuai.

Opsi GNU dapat berbeda dari implementasi pada sistem lain; periksa bantuan lokal bila skrip perlu portabel. Pada GNU, -C membandingkan isi, pemilik, grup, izin, dan bila relevan konteks Security-Enhanced Linux (SELinux). Sebutkan kebijakan -m, -o, dan -g secara jelas agar asumsi bawaan tidak menyebabkan penyalinan ulang atau atribut yang tidak diinginkan. Opsi -p dapat tetap memperbarui waktu meski pengoptimalan -C dipakai.

Contoh praktis

Menempatkan file beserta induk tujuannya

Siapkan myapp.service sebagai file unit yang sudah diperiksa. -D membuat induk tujuan yang belum ada, kemudian menempatkan file pada nama akhirnya. -m 0644 mengatur file, bukan mode seluruh induk. Buat induk lewat langkah install -d tersendiri bila memerlukan kebijakan khusus.

sudo install -D -m 0644 myapp.service /etc/systemd/system/myapp.service

Hasilnya adalah file /etc/systemd/system/myapp.service. Penyalinan saja tidak memvalidasi unit, memuat ulang pengelola layanan, atau menjalankan layanan; langkah pengelolaan systemd tetap merupakan prosedur terpisah.

Menempatkan beberapa file dalam satu direktori

Siapkan beberapa file di templates, misalnya index.html dan help.html. Direktori tujuan harus sudah ada untuk bentuk berikut; jika baru diperlukan, siapkan dengan sudo install -d -m 0755 /usr/local/share/myapp. Opsi -t menandai direktori tujuan secara eksplisit sebelum daftar sumber.

sudo install -m 0644 -t /usr/local/share/myapp templates/*.html

Hasilnya antara lain /usr/local/share/myapp/index.html dan help.html pada direktori yang sama. Shell memperluas *.html; pada Bash biasa, pola ini tidak menyertakan file tersembunyi, dan pola yang tidak cocok dapat diteruskan sebagai teks sehingga terjadi kesalahan. Periksa daftar sumber sebelum menimpa file yang sudah dipakai.

Verifikasi atribut yang terpasang

Periksa jalur tujuan yang benar, mode, pemilik, grup, dan jenis file. Contoh menggunakan hasil pemasangan mytool sebelumnya; untuk latihan, sesuaikan kedua jalur dengan salinan lokal Anda. Perintah file mungkin perlu dipasang terpisah dari Coreutils.

stat -c '%A %U:%G %n' /usr/local/bin/mytool
file /usr/local/bin/mytool

stat seharusnya menunjukkan izin seperti -rwxr-xr-x untuk mode 0755, beserta pemilik dan grup yang diharapkan. file membantu mengenali format, tetapi bukan uji dependensi atau kebenaran program. Verifikasi byte sumber dan tujuan, lalu jalankan uji program yang sesuai pada sistem target sebelum mengganti layanan aktif.

install dan perintah terkait

Perintah atau metode Peran utama Penggunaan yang sesuai
install Salin dan tetapkan atribut Penempatan hasil build dan konfigurasi
cp Penyalinan file umum Atribut dikelola secara terpisah
mkdir Buat direktori biasa Pohon direktori ruang kerja
apt atau dnf Kelola paket dan dependensi Perangkat lunak yang disediakan distribusi

Perhatian Penting

Ini bukan manajer paket

File yang ditempatkan dengan install tidak otomatis dicatat untuk pembaruan paket, perubahan dependensi, atau penghapusan. Simpan daftar artefak serta kebijakan pengembaliannya, atau gunakan paket distribusi bila itu metode distribusi perangkat lunaknya.

Jangan mengandalkan mode default

Mode bawaan GNU adalah u=rwx,go=rx,a-s: lazimnya 0755 pada file biasa, dengan set-user-ID dan set-group-ID dinonaktifkan. Sebutkan -m sesuai peran file. Opsi -p mempertahankan waktu akses dan modifikasi, bukan seluruh metadata. GNU install tidak mempertahankan atribut tambahan secara umum (extended attributes atau xattr), jadi jangan menganggapnya setara dengan penyalinan arsip.

Rencanakan penggantian berkas yang sedang digunakan

Siapkan salinan cadangan, validasi format dan izin, lalu tentukan kapan layanan memakai versi baru serta cara mengembalikan versi lama. Menyalin beberapa file bukan satu transaksi deployment: setelah kegagalan, sebagian keluaran mungkin sudah dibuat atau berubah. Periksa status setiap langkah sebelum melanjutkan. Gunakan -s hanya untuk biner yang cocok dengan program strip, dan simpan simbol debug yang masih diperlukan untuk diagnosis.

FAQ

Apakah install memasang paket perangkat lunak?

Tidak. install menyalin file dan menerapkan atribut; dependensi paket perlu dikelola melalui alat paket yang sesuai.

Mengapa menggunakan install daripada cp?

Ini menggabungkan penyalinan dengan mode, kepemilikan, dan pembuatan direktori tujuan secara eksplisit.

Bisakah install membuat direktori tanpa menyalin file?

Ya. Gunakan install -d DIREKTORI dan tambahkan -m, -o, atau -g sesuai kebutuhan.

Bagaimana cara mempertahankan cap waktu sumber?

Gunakan -p atau --preserve-timestamps.

Dokumentasi resmi

Referensi perintah Linux menurut tugas (bahasa Inggris) memberi konteks pengelolaan file lainnya.