2010-07-13 63 views
75

我想運行'make install',因此我擁有我需要的所有東西,但是我希望它將這些東西安裝到它們自己的文件夾中,而不是系統的/ usr/bin等。即使它引用/ usr/bin等工具?進行安裝,但不是默認目錄?

+2

如果您已經構建了項目並運行了./configure而沒有前綴,並且想要將其安裝在自定義路徑中,請參閱http://stackoverflow.com/a/17679654/313113 – bitek 2014-07-08 09:06:10

回答

118

這取決於包裝。如果是由GNU自動(./configure)所產生的Makefile文件通常可以設定目標地址,像這樣:

./configure --prefix=/somewhere/else/than/usr/local 

如果沒有通過自動工具所產生的Makefile文件,但與軟件一起分發,只需在打開它編輯並更改它。安裝目標目錄可能在某個變量中定義。

+5

不應該'make && make install'遵循configure子句嗎? – nass 2015-06-26 16:41:18

+4

當然。我認爲OP會知道這一點。 – Thomas 2015-06-28 09:41:09

12

它可能取決於您嘗試編譯的模塊所支持的內容。如果是使用自動工具生成你的makefile,使用:

--prefix=<myinstalldir>

運行./configure的

當一些軟件包允許你還覆蓋運行時:

make prefix=<myinstalldir> 

但是,如果你不使用./configure,唯一確切的方法是打開makefile並檢查。它應該是頂部的前幾個變量之一。

+2

你還應該知道,'make prefix = ...'可能會導致硬編碼路徑錯誤的二進制文件,因爲在'./configure --prefix = ...' – 2013-11-20 10:28:16

22

既然不知道你可以使用哪個版本的automake DESTDIR環境變量。
請參閱Makefile以確保。

例如:

export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install 
+5

之後通常不會修改這些文件。您運行configure時沒有--prefix命令行參數,並且您已經構建了該項目,但不希望將其安裝在默認位置,而是指定一個自定義安裝路徑。這會將默認的usr/local/bin /路徑附加到DESTDIR,並且您的項目將被安裝到$ HOME/Software/LocalInstall/usr/local/bin/ – bitek 2014-07-08 09:10:59

-5

嘗試使用INSTALL_ROOT。

make install INSTALL_ROOT=$INSTALL_DIRECTORY 
+6

。不要建議人們在沒有任何確鑿信息的情況下「嘗試」某些內容。 – RichieHH 2016-10-31 00:15:59

6
make DESTDIR=./new/customized/path install 

這種快速命令爲我工作Ubuntu的16 DESTDIR路徑上OpenCV的版本3.2.0安裝可以是相對和絕對。

只要DESTDIR位置對用戶具有正確的訪問權限,此類重定向也可以用於用戶不具有管理權限的情況。例如/ home //

相關問題