Pindah dari Windows ke Linux, saya tidak dapat memahami proses menginstal perangkat lunak di Linux. Di Windows, ketika kami menjalankan file instalasi, ia menanyakan di mana Anda ingin menginstal program, kemungkinan besar hanya di folder file program. Kemudian, itu mengedit registri. Ini disebut instalasi di Windows. Apa sebenarnya artinya 'menginstal perangkat lunak' di Linux?
Misalkan saya mengunduh kode sumber, mengkonfigurasinya, dan kemudian membangun biner menggunakan make
. Sekarang ini hanya biner, bukan program yang dapat digunakan. Bagaimana cara 'diinstal'? Oleh make install
? Dan apa tepatnya yang dilakukan perintah ini?
make
installation
KawaiKx
sumber
sumber
make install
langkah-langkah dari sudut pandang programmer.Jawaban:
Make adalah program alur kerja tujuan umum, biasanya digunakan untuk kompilasi. Tetapi bisa digunakan untuk apa saja.
Ketika Anda melakukan sesuatu seperti "make all", program make mengeksekusi aturan bernama "all" dari file di direktori saat ini bernama "Makefile". Aturan ini biasanya memanggil kompilator untuk mengkompilasi beberapa kode sumber ke dalam binari.
Ketika Anda melakukan "make install", program make mengambil binari dari langkah sebelumnya dan menyalinnya ke beberapa lokasi yang sesuai sehingga mereka dapat diakses. Tidak seperti pada Windows, instalasi hanya perlu menyalin beberapa perpustakaan dan executables dan tidak ada persyaratan registri seperti itu. Singkatnya, "make install" hanya menyalin file yang dikompilasi ke lokasi yang sesuai.
sumber
all
dalamMakefile
dan seperti apa tanda akhir bagian itu, sehingga saya bisa melihat di mana aturan pemrosesanall
berhenti.make install
melakukan apa pun yangMakefile
penulis inginkan. Biasanya, pada titik ini, sudah terlambat untuk mengubah direktori instal, seperti yang sering diketahui sebelumnya , selama pembuatan, jadi file bantuan dan file konfigurasi dapat dirujuk dengan nama path yang benar.Banyak proyek menggunakan GNU Autotools untuk mencoba meningkatkan portabilitas mereka di antara perbedaan perangkat keras dan sistem operasi. (Varian Unix yang berbeda menggunakan tajuk yang sedikit berbeda untuk deklarasi fungsi yang sedikit keluar dari jalur yang biasa - kecuali sebagian besar program membutuhkan satu atau yang lain dari yang dideklarasikan di lokasi yang berbeda.)
Ketika sebuah proyek menggunakan Autotools, mantra normal untuk menginstalnya adalah:
The
./configure
biasanya memungkinkan Anda untuk menggunakan opsi baris perintah seperti--prefix /opt/apache
atau sesuatu yang mirip untuk menentukan pathname yang berbeda./usr/local/
adalah standar umumprefix
. Jauh lebih mudah untuk perangkat lunak yang dibangun secara lokal untuk tinggal di satu tempat dan perangkat lunak yang disediakan distribusi untuk hidup di "direktori utama":,/usr/
/bin/
dan seterusnya. (Pemaket sangat berhati-hati untuk tidak pernah menyentuh file/usr/local/
- mereka tahu itu khusus untuk administrator sistem.)Bagaimanapun,
./configure --prefix /path/to/new/prefix
akan mengatur variabel dalamMakefile
yang tersedia ketika mengkompilasi program, memodifikasi halaman manual sehingga mereka menunjuk ke lokasi yang benar untuk file, memodifikasi file konfigurasi, dll. Jadimake
akan membangun perangkat lunak khusus untuk lokasi instalasi yang Anda inginkan danmake install
akan menginstalnya ke lokasi itu.Sebagian besar program dapat berjalan bahkan tanpa
make install
langkah akhir - hanya./program_name
akan sering memulainya. Ini jelas merupakan hal per proyek - beberapa, sepertipostfix
,,qmail
dll., Terdiri dari banyak bagian bergerak yang berbeda dan bergantung padanya semuanya bekerja bersama. Yang lain, sukals
atausu
mungkin cukup mandiri untuk mengeksekusi denda dari direktori tempat mereka dibangun. (Ini tidak sering berguna - tetapi kadang-kadang sangat berguna.)Namun, tidak semua proyek menggunakan Autotools - mereka besar , rumit , dan menyedihkan untuk dipelihara. Tulisan tangan
Makefile
jauh lebih mudah untuk ditulis, dan saya pribadi berpikir hanya mendistribusikan yang sederhanaMakefile
dengan variabel konfigurasi yang tersedia jauh lebih mudah pada pengembang dan pengguna keduanya. (Padahal./configure ; make ; make install
mantra itu sangat mudah bagi pengguna saat itu bekerja.)sumber
make install
tidak kurang dari menjalankaninstall
fungsi / bagian diMakefile
sumber
make clean
, pada dasarnya itu hanya mengeksekusi kode di bawah bagian.Yang paling penting untuk disebutkan tentang menginstal perangkat lunak di Linux adalah jauh lebih andal dan mudah untuk menginstal perangkat lunak dari distribusi Anda (ini tujuannya!). Hanya gunakan
make install
jika tidak ada cara lain (pertimbangkan juga program alternatif).Kesalahan umum pengguna Windows adalah mengunduh program dari tempat yang berbeda dan mencoba menginstalnya, lupa memeriksa paket distribusi mereka, yang dapat diinstal dengan satu klik atau perintah (pada manajer paket).
Juga ingat bahwa salah satu alasan utama tidak adanya infeksi virus di Linux adalah bahwa perangkat lunak (atau harus) diinstal dari lokasi pusat (tepercaya) alih-alih dari banyak situs acak.
Sebagai catatan tambahan, sementara distribusi seperti Ubuntu selalu berisi paket yang sudah ketinggalan zaman, ada juga distribusi seperti Arch Linux yang selalu terbaru (meskipun mereka tidak menawarkan secara harfiah setiap program yang pernah dirilis untuk Linux, seperti Debian / Ubuntu).
Adapun apa yang sebenarnya akan terjadi ketika Anda menggunakan manajer paket, baik itu akan memeriksa dependensi, paket unduhan, membongkar, meletakkan semua file ke direktori yang sesuai, sesuai dengan FHS dan pedoman distribusi sendiri, dan beberapa rutinitas lain yang mungkin bisa Anda temukan tentang dari halaman manual manajer paket.
sumber