Saya ingin menjalankan 'make install' jadi saya memiliki semua yang saya butuhkan, tetapi saya ingin menginstalnya di folder mereka sendiri sebagai lawan dari sistem / usr / bin dll. Apakah itu mungkin? bahkan jika referensi alat di / usr / bin dll?
148
Jawaban:
Tergantung paketnya. Jika Makefile dihasilkan oleh GNU autotools (
./configure
) Anda biasanya dapat mengatur lokasi target seperti:Jika Makefile tidak dihasilkan oleh autotools, tetapi didistribusikan bersama dengan perangkat lunak, cukup buka di editor dan ubah. Direktori target instal mungkin didefinisikan dalam suatu variabel di suatu tempat.
sumber
make && make install
mengikuti klausa configure?--prefix
adalah bahwa jika Anda menjalankanstrings
biner yang dihasilkan setelahnya, Anda melihat bahwa path disimpan di dalamnya. Saya tidak tahu mengapa ini terjadi, tetapi saya tentu tidak ingin jalur mesin saya pada biner yang saya kirimkan ke pengguna lain.Karena tidak tahu versi automake yang mana Anda dapat menggunakan variabel lingkungan DESTDIR .
Lihat Makefile untuk memastikan.
Sebagai contoh:
sumber
Perintah cepat ini berfungsi untuk saya untuk instalasi rilis 3.2.0 opencv pada Ubuntu 16. Path DESTDIR bisa relatif dan absolut.
Pengalihan seperti itu juga dapat bermanfaat jika pengguna tidak memiliki hak admin selama lokasi DESTDIR memiliki akses yang tepat bagi pengguna. misalnya / home //
sumber
Itu bisa bergantung pada apa yang didukung oleh modul yang Anda coba kompilasi. Jika makefile Anda dihasilkan dengan menggunakan autotools, gunakan:
--prefix=<myinstalldir>
saat menjalankan ./configure
beberapa paket memungkinkan Anda juga mengganti ketika menjalankan:
namun, jika Anda tidak menggunakan ./configure, satu-satunya cara untuk mengetahui dengan pasti adalah membuka makefile dan periksa. Itu harus menjadi salah satu dari beberapa variabel pertama di atas.
sumber
make prefix=...
mungkin menghasilkan biner dengan jalur kode yang salah, karena itu biasanya tidak dapat dimodifikasi setelah./configure --prefix=...
Jika paket menyediakan a
Makefile.PL
- seseorang dapat menggunakan:* penjelasan lebih lanjut: https://www.perlmonks.org/?node_id=564720
sumber
Saya mencoba solusi di atas. Tidak ada yang berhasil.
Pada akhirnya saya membuka file Makefile dan secara manual mengubah jalur awalan ke jalur instalasi yang diinginkan seperti di bawah ini.
Ketika saya mencoba --prefix, "make" mengeluh bahwa tidak ada input perintah seperti itu. Namun, mungkin beberapa paket menerima --prefix yang tentu saja merupakan solusi yang lebih bersih.
sumber
--prefix
pilihan adalah./configure
yang Anda sebut SEBELUMmake
.coba gunakan INSTALL_ROOT.
sumber