Tôi muốn chạy 'make install' để tôi có mọi thứ tôi cần, nhưng tôi muốn nó cài đặt những thứ trong thư mục riêng của họ trái ngược với / usr / bin của hệ thống, v.v. ngay cả khi nó tham chiếu các công cụ trong / usr / bin, v.v.?
Tôi muốn chạy 'make install' để tôi có mọi thứ tôi cần, nhưng tôi muốn nó cài đặt những thứ trong thư mục riêng của họ trái ngược với / usr / bin của hệ thống, v.v. ngay cả khi nó tham chiếu các công cụ trong / usr / bin, v.v.?
Câu trả lời:
Nó phụ thuộc vào gói. Nếu Makefile được tạo bởi GNU autotools ( ./configure
), bạn thường có thể đặt vị trí đích như sau:
./configure --prefix=/somewhere/else/than/usr/local
Nếu Makefile không được tạo bởi autotools, nhưng được phân phối cùng với phần mềm, chỉ cần mở nó trong trình chỉnh sửa và thay đổi nó. Thư mục đích cài đặt có thể được xác định trong một biến ở đâu đó.
make && make install
tuân theo mệnh đề configure?
--prefix
là nếu bạn chạy a strings
trên nhị phân kết quả sau đó, bạn sẽ thấy rằng đường dẫn được lưu trữ bên trong. Tôi không biết tại sao điều này xảy ra, nhưng tôi chắc chắn không muốn đường dẫn máy của mình vào các tệp nhị phân mà tôi gửi cho người dùng khác.
Vì không biết phiên bản tự động nào, bạn có thể sử dụng biến môi trường DESTDIR .
Xem Makefile để chắc chắn.
Ví dụ:
export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
make DESTDIR=./new/customized/path install
Lệnh nhanh này đã giúp tôi cài đặt opencv phát hành 3.2.0 trên Ubuntu 16. Đường dẫn DESTDIR có thể tương đối cũng như tuyệt đối.
Chuyển hướng như vậy cũng có thể hữu ích trong trường hợp người dùng không có quyền quản trị miễn là vị trí DESTDIR có quyền truy cập phù hợp cho người dùng. vd / nhà //
Nó có thể phụ thuộc vào những gì được hỗ trợ bởi mô-đun bạn đang cố gắng biên dịch. Nếu tệp tạo tệp của bạn được tạo bằng cách sử dụng tự động, hãy sử dụng:
--prefix=<myinstalldir>
khi chạy ./mình
một số gói cho phép bạn ghi đè khi chạy:
make prefix=<myinstalldir>
tuy nhiên, nếu bạn không sử dụng ./mình, chỉ có một cách để biết chắc chắn là mở tệp Makefile và kiểm tra. Nó phải là một trong vài biến đầu tiên ở trên cùng.
make prefix=...
có thể dẫn đến nhị phân với các đường dẫn được mã hóa sai, vì chúng thường không thể được sửa đổi sau./configure --prefix=...
Nếu gói cung cấp một Makefile.PL
- người ta có thể sử dụng:
perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install
* giải thích thêm: https://www.perlmonks.org/?node_id=564720
Tôi đã thử các giải pháp trên. Không có làm việc.
Cuối cùng, tôi đã mở tệp Makefile và thay đổi thủ công đường dẫn tiền tố thành đường dẫn cài đặt mong muốn như bên dưới.
PREFIX ?= "installation path"
Khi tôi thử --prefix, "make" phàn nàn rằng không có đầu vào lệnh như vậy. Tuy nhiên, có lẽ một số gói chấp nhận --prefix tất nhiên là một giải pháp sạch hơn.
--prefix
lựa chọn là để ./configure
mà bạn gọi TRƯỚC make
.
thử sử dụng INSTALL_ROOT.
make install INSTALL_ROOT=$INSTALL_DIRECTORY