Apa yang dilakukan / usr / bin / install selain menyalin?

11
  1. Apakah make installdengan Makefile sebagian besar panggilan waktu /usr/bin/install?

  2. Apa yang perlu /usr/bin/installdilakukan selain menyalin file yang baru saja dikompilasi /usr/bin/local?

  3. Halaman manual mengatakan /usr/bin/installmenyalin file dan mengatur atribut. Atribut apa yang begitu penting untuk ditetapkan?

  4. Apakah itu hanya mengatur mode izin dan pemilik / grup, yang tidak perlu?
Tim
sumber
"Apakah make install dengan Makefile sebagian besar panggilan waktu / usr / bin / install?" Tidak, itu melakukan apa pun yang diinginkannya. Itu adalah target make. Apakah pertanyaan Anda tentang instalasi dapat dieksekusi? Atau tentang membuat? Ini tidak jelas.
Faheem Mitha
kedua. @FaheemMitha
Tim
Ok, well, 1 dan 2 adalah pertanyaan yang berbeda, dan jawaban untuk 1 adalah, mungkin tidak, tetapi tentukan "sebagian besar waktu". Lagi pula, saya tidak yakin dengan poin 1.
Faheem Mitha

Jawaban:

17

install menawarkan sejumlah fitur selain menyalin file ke direktori.

  • yang -spilihan menghapus tabel simbol dari sebuah eksekusi menghemat ruang,
  • yang -mpilihan 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/binmemastikan bahwa semua orang dapat mengeksekusi file, yang kemungkinan apa yang diinginkan pengembang untuk file dalam direktori bersama.
  • yang -odan -gpilihan set pemilik dan kelompok. Dengan cp, pemilik dan grup file tujuan akan diatur ke uid dan gid dari siapa pun yang menjalankan cp, dan dengan cp -p, pemilik dan grup file tujuan akan sama dengan file di direktori build, yang keduanya mungkin tidak menjadi apa yang diinginkan pengembang. The wallProgram perlu di kelompok tty, yang screenProgram perlu kelompok utmp, dll
  • ini mengurangi jumlah perintah yang perlu dimasukkan dalam resep makefile. install -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)lebih ringkas daripada empat perintah cp, strip, chmod, dan chown.

Poin terakhir adalah kemungkinan mengapa installperintah itu ditemukan dan mengapa banyak makefile menggunakannya.

Installtidak selalu digunakan. Saya telah melihat cp -r lib $(DESTDIR)/libketika ada seluruh pohon yang penuh dengan hal-hal untuk disalin, dan ./install.shjika pengembang lebih suka menggunakan skrip khusus. Banyak paket memiliki install.shturunan dari X11, yang mirip installtetapi mendukung -topsi (transform) untuk mengubah nama file tujuan dengan cara yang ditentukan.

Tandai Plotnick
sumber
2
  1. 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 installperintah dalam makefile untuk setiap proses instalasi yang disebutkan dalam 2, tapi sekali lagi installbukan POSIX jadi selalu menggunakannya mungkin bukan pendekatan yang paling portabel

    AFAIK sebagian besar alat dapat digunakan untuk secara otomatis menghasilkan makefile seperti automakedan cmakeakan digunakan install.

  2. Umumnya installdigunakan 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.

Graeme
sumber