--Prefix làm gì chính xác khi được sử dụng trong ./mình?


29

Vì vậy, tôi chỉ có một câu hỏi đơn giản có lẽ sẽ khiến tôi trông ngớ ngẩn, nhưng tôi đang học

Khi tôi làm một

./configure --prefix/usr/bin/

Tiền tố đang làm gì? Đây có phải chỉ là cài đặt gói vào vị trí đó

Và một câu trả lời có thể cung cấp nhiều hơn một câu trả lời công phu cho một cài đặt phức tạp và giải thích chi tiết các tiền tố và các tùy chọn đi kèm với nó.

Nếu tôi chạy một cài đặt apt-get, làm thế nào tôi có thể cài đặt nó đến một vị trí nhất định có tiền tố

Tôi cũng đã thấy

 PREFIX=/tmp/installdir make


 PREFIX=/tmp/installdir make install

Nếu tiền tố được gọi trong ./mình tại sao nó luôn được tạo trong hai ví dụ này?

Cảm ơn bạn trước!


Một số thông tin ở đây: Tiêu chuẩn mã hóa GNU: Biến thư mục
Steeldo

kiểm tra câu trả lời được cập nhật
luv.preet

freetds.org/userguide/config.htm , điều này sẽ giúp bạn nhiều hơn
luv.preet

Người đánh giá: Đây là về cài đặt phần mềm . Nó có ba phiếu ngoài chủ đề là "không phải về Ubuntu." Nếu việc đóng này phù hợp với bất kỳ chính sách trang web thực tế nào , tôi khuyên bạn nên bình luận. Nếu không, điều này có thể sẽ được mở lại ngay cả khi nó đóng cửa.
Eliah Kagan

Câu trả lời:


32

Khi bạn cài đặt phần mềm có make installhoặc sudo make install, các tệp khác nhau được đặt trong các thư mục khác nhau. Các tệp thực thi cung cấp các lệnh mà người dùng dự định chạy thường đi trong một binthư mục, các thư viện thường đi trong một libthư mục, các trang thủ công thường đi trong một manthư mục, v.v.

Khi bạn chạy ./configure, các --prefixtùy chọn cho phép bạn chỉ định nơi những thư mục được . Nó được gọi --prefixbởi vì nó cho phép bạn đưa tiền tố xuất hiện trong các đường dẫn đến từng thư mục chứa các tệp từ chương trình hoặc thư viện mà bạn đang xây dựng sẽ được cài đặt. Hầu hết các configuretập lệnh hỗ trợ --prefix, và bỏ qua nó và chỉ chạy ./configurethường tương đương với ./configure --prefix=/usr/local.

Để trả lời câu hỏi này đầy đủ hơn, tôi đã sao chép hai phần từ câu trả lời của mình sang Cách cài đặt tập tin tar trên toàn cầu (trên Unix & Linux ), giải quyết cụ thể câu hỏi này:

Cấu hình bản dựng của bạn

Khi bạn có mã nguồn được biên dịch bằng cách chạy ./configuremake, bạn thường sẽ sử dụng make install(hoặc sudo make install) để cài đặt nó. Điều này sao chép các tập tin từ thư mục xây dựng vào vị trí cài đặt. Khi thứ bạn đang cài đặt cung cấp các lệnh thực thi, các tệp thực thi đó thường được sao chép vào một thư mục nằm trong $PATHhoặc bạn nên xem xét thêm vào $PATH.

Mặc dù việc xây dựng và cài đặt phần mềm thường là đơn giản như chạy ./configure, makeđôi khi make checkhay make test, và sau đó make installhoặc sudo make install, bạn sẽ đôi khi muốn vượt qua tùy chọn để các configurekịch bản để cấu hình xây dựng. Cụ thể, như pfnuesel nói , đây là cách bạn định cấu hình nơi phần mềm sẽ được cài đặt. Mặc dù make installbước thực sự cài đặt phần mềm, các vị trí nơi mọi thứ sẽ được cài đặt thường được thiết lập trong ./configurebước.

Tùy chọn phổ biến nhất cho việc này là --prefix. Tiền tố mặc định, khi bạn không cho biết configurenên sử dụng cái gì, thường là /usr/local. (Đôi khi, mã nguồn của chương trình hoặc thư viện mặc định cho một số tiền tố khác. May mắn thay, điều này rất hiếm.)

Vì vậy, ./configurethường là tương đương với ./configure --prefix=/usr/local. Để cài đặt phần mềm trong thư mục chính của bạn, bạn có thể sử dụng ./configure --prefix=/home/galahad(nếu /home/galahadlà thư mục chính của bạn) hoặc --prefix="$HOME". Sau đó, tất nhiên bạn vẫn phải xây dựng và cài đặt phần mềm với make. Tôi nên nói rằng không phải tất cả các phần mềm được phân phối ở dạng mã nguồn đều được xây dựng theo cách này. Bạn phải luôn luôn tìm tài liệu bên trong kho lưu trữ mã nguồn được trích xuất.

--prefixnghĩa là gì

Khi bạn chạy , bạn đang chỉ ra rằng phần mềm nên được cài đặt trong thư mục. Nhưng điều này hiếm khi, nếu có, đặt các tập tin lỏng lẻo trong . Thay vào đó, nó đặt các tệp phục vụ các mục đích khác nhau trong các thư mục con khác nhau của . Nếu những thư mục con đó không tồn tại, nó sẽ tạo ra chúng../configure --prefix=directorydirectorydirectorydirectory

Thực thi thường đi vào directory/bin, mặc dù chúng có thể đi vào directory/sbinnếu chúng thường được sử dụng cho quản trị hệ thống hoặc chúng có thể đi (hiếm hơn, những ngày này) trong directory/gamesnếu chúng là trò chơi. Thư viện đi vào directory/libhoặc một thư mục có tên tương tự như thế directory/lib32. Tập tin tiêu đề đi vào directory/include. Các trang hướng dẫn đi vào directory/man. Các tệp dữ liệu được sử dụng bởi phần mềm đi vào directory/share.

Đó là ý nghĩa của directoryviệc trở thành tiền tố . Đó là thư mục mẹ chứa các vị trí chứa các tệp khác nhau. Do đó, nó xuất hiện dưới dạng tiền tố trong đường dẫn tuyệt đối của hầu hết các tệp và thư mục được tạo bằng cách chạy make install hoặc sudo make install.

Có một số trường hợp ngoại lệ cho điều này. Các tệp cấu hình toàn hệ thống - đôi khi được tạo khi cài đặt phần mềm sẽ sử dụng chúng, mặc dù không phải lúc nào cũng vậy - thường đi vào /etc. Điều này thường không bị ảnh hưởng bằng cách chỉ định một tiền tố khác. Ngay cả khi bạn cài đặt nhiều phần mềm /usr/local, phần lớn vẫn sẽ sử dụng /etc/usr/local/etcthư mục của bạn có thể sẽ không tồn tại, trống hoặc chứa rất ít tệp.

Trên nhiều hệ thống, bạn có thể tìm thêm thông tin về bố cục hệ thống tập tin điển hình bằng cách chạy man hier. Nếu bạn đang sử dụng hệ thống GNU / Linux, bạn có thể quan tâm đến Tiêu chuẩn phân cấp hệ thống tệp .


2

Nó cho biết vị trí của những thứ được yêu cầu để cấu hình gói hoặc phần mềm hiện tại.

Giống như trong một trường hợp đơn giản, nó có thể cho biết vị trí của các thư viện ssl:

--with-libssh2=/usr/local  #used in configuring nagios

và nó cũng cho biết gói nào không được cấu hình, để thực hiện các phần tổng hợp phù hợp của chương trình theo hệ thống của bạn:

--disable-shared  # used in configuring nagios
--disable-link-balancer  # used in configuring Firehol

Đây chỉ là các tùy chọn bổ sung để thực hiện một trình biên dịch phù hợp với hệ thống của bạn. Đó là những gì tôi nghĩ. Làm cho tôi đúng nếu nó là một cái gì đó khác.

Các --prefix=PREFIXtùy chọn cài đặt kiến trúc file độc lập trong PREFIX. Khi bạn chạy một make installlệnh, các thư viện sẽ được đặt trong PREFIX/libthư mục, các tệp thực thi trong PREFIX/binthư mục, v.v.

Nếu đối số này không được truyền cho configurelệnh thì giá trị mặc định là /usr/local.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.