Kurulum yapın, ancak varsayılan dizinlere değil mi?


154

İ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?


3
Projeyi zaten oluşturduysanız ve ./configure komutunu önek olmadan çalıştırdıysanız ve bunu özel bir yola yüklemek istiyorsanız, bkz. Stackoverflow.com/a/17679654/313113
Alex Bitek

Yanıtlar:


223

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.


9
make && make installconfigure maddesini takip etmemeli ?
nass

1
Karşılaştığım sorun --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.
Erik Aigner

Erik, görünüşe göre, kaynaktan inşa edersen, koştuğun yola referanslar olacak.
Konstantin Rybakov

46

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

9
Bu, configure betiğini --prefix komut satırı bağımsız değişkeni olmadan çalıştırdığınızda ve projeyi zaten oluşturduğunuzda ancak varsayılan konumlara yüklemek istemediğinizde bunun yerine özel bir yükleme yolu belirlediğinizde çalışır. Bu, varsayılan usr / local / bin / yolunu DESTDIR'e ekleyecek ve projeniz $ HOME / Software / LocalInstall / usr / local / bin /
Alex Bitek

Bu harika bir çözüm. Bunun neden seçilmiş cevap olmadığını bilmiyorum! Neredeyse tüm diğer yanıtlar yeniden yapılandırmayı ister, bu da kişinin de yeniden yapılması gerektiği anlamına gelir. 2 ~ 3 saat sonra tüm MITK süper yapısını derlediğinizi ve ardından derlenen dosyaları farklı bir konuma yüklemek istediğim için yeniden yapmamın istendiğini hayal edin. Bu, bu durumdan kaçınmak için harika bir çalışma.
Duck Dodgers

26
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 //


1
makefile içinde varsayılan bir değere sahipse PREFIX'in de geçersiz kılınması gerekebilir
Mark Ch

17

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.


3
Ayrıca, bunların make prefix=...yanlış sabit kodlanmış yollara sahip ikili dosyalara neden olabileceğini de bilmelisiniz , çünkü bunlar genellikle daha sonra değiştirilemez./configure --prefix=...
Tobias Kienzler,


0

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.


1
--prefixseçenek etmektir ./configurehangi ÖNCE diyoruz make.
Gus

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.