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?
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?
Jawaban:
Tergantung paketnya. Jika Makefile dihasilkan oleh GNU autotools ( ./configure
) Anda biasanya dapat mengatur lokasi target seperti:
./configure --prefix=/somewhere/else/than/usr/local
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.
make && make install
mengikuti klausa configure?
--prefix
adalah bahwa jika Anda menjalankan strings
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:
export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
make DESTDIR=./new/customized/path install
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 //
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:
make prefix=<myinstalldir>
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.
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:
perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install
* penjelasan lebih lanjut: https://www.perlmonks.org/?node_id=564720
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.
PREFIX ?= "installation path"
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.
--prefix
pilihan adalah ./configure
yang Anda sebut SEBELUM make
.