İhtiyacım olan her şeye sahip olduğum için 'make install' komutunu çalıştırmak istiyorum, ancak sistemin / usr / bin vb. Yerine kendi klasörlerine şeyler yüklemesini istiyorum. Bu mümkün mü? / usr / bin vb. içindeki araçlara başvursa bile?
İhtiyacım olan her şeye sahip olduğum için 'make install' komutunu çalıştırmak istiyorum, ancak sistemin / usr / bin vb. Yerine kendi klasörlerine şeyler yüklemesini istiyorum. Bu mümkün mü? / usr / bin vb. içindeki araçlara başvursa bile?
Yanıtlar:
Pakete bağlıdır. Makefile, GNU autotools ( ./configure
) tarafından oluşturulmuşsa , genellikle hedef konumu şu şekilde ayarlayabilirsiniz:
./configure --prefix=/somewhere/else/than/usr/local
Makefile, autotools tarafından oluşturulmaz ancak yazılımla birlikte dağıtılırsa, bir düzenleyicide açın ve değiştirin. Yükleme hedef dizini muhtemelen bir yerde bir değişken içinde tanımlanmıştır.
make && make install
configure maddesini takip etmemeli ?
--prefix
şu ki strings
, ortaya çıkan ikili üzerinde daha sonra a çalıştırırsanız , yolun içinde depolandığını görürsünüz. Bunun neden olduğunu bilmiyorum, ancak diğer kullanıcılara gönderdiğim ikili dosyalar üzerinde makine yollarımı kesinlikle istemiyorum.
Automake'nin hangi sürümünü kullanabileceğinizi bilmediğiniz için DESTDIR ortam değişkenini kullanabilirsiniz .
Emin olmak için Makefile'a bakın.
Örneğin:
export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
make DESTDIR=./new/customized/path install
Bu hızlı komut, Ubuntu 16 üzerinde opencv sürüm 3.2.0 kurulumunda benim için çalıştı. DESTDIR yolu mutlak olduğu kadar göreli de olabilir.
Bu tür yeniden yönlendirme, DESTDIR konumu kullanıcı için doğru erişime sahip olduğu sürece kullanıcının yönetici ayrıcalıklarına sahip olmaması durumunda da yararlı olabilir. örneğin / home //
Derlemeye çalıştığınız modül tarafından neyin desteklendiğine bağlı olabilir. Makefile dosyanız autotools kullanılarak oluşturulmuşsa, şunu kullanın:
--prefix=<myinstalldir>
./configure çalıştırırken
bazı paketler çalıştırırken de geçersiz kılmanıza izin verir:
make prefix=<myinstalldir>
ancak, ./configure kullanmıyorsanız, emin olmanın tek yolu makefile dosyasını açıp kontrol etmektir. En üstteki ilk birkaç değişkenden biri olmalıdır.
make prefix=...
yanlış sabit kodlanmış yollara sahip ikili dosyalara neden olabileceğini de bilmelisiniz , çünkü bunlar genellikle daha sonra değiştirilemez./configure --prefix=...
Paket bir Makefile.PL
- sağlıyorsa, şunlar kullanılabilir:
perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install
* daha fazla açıklama: https://www.perlmonks.org/?node_id=564720
Yukarıdaki çözümleri denedim. Hiçbiri işe yaramadı.
Sonunda Makefile dosyasını açtım ve önek yolunu aşağıdaki gibi istenen kurulum yoluna manuel olarak değiştirdim.
PREFIX ?= "installation path"
--Prefix'i denediğimde, "make" komutu böyle bir komut girişi olmadığından şikayet etti. Bununla birlikte, belki de bazı paketler, elbette daha temiz bir çözüm olan --prefix'i kabul eder.
--prefix
seçenek etmektir ./configure
hangi ÖNCE diyoruz make
.
INSTALL_ROOT kullanmayı deneyin.
make install INSTALL_ROOT=$INSTALL_DIRECTORY