Trong quá trình xây dựng gói RPM, tôi phải chỉ định BuildRoot và sau này sẽ được sử dụng trong% cài đặt có giá $ RPM_BUILD_ROOT. Tôi luôn nghĩ rằng RPM_BUILD_ROOT là cài đặt giả cho RPM để thực hiện đóng gói. Sau đó, tại thời điểm cài đặt bằng gói RPM, nó sẽ cài đặt vào vị trí thực tế. Ví dụ:
$RPM_BUILD_ROOT/usr/bin
Tôi nghĩ rằng $ RPM_BUILD_ROOT là cho quá trình đóng gói duy nhất, và trong một số cách RPM có thể phân biệt $ RPM_BUILD_ROOT và thực tế vị trí cài đặt khi người dùng thực hiện "rpm -ivh package.rpm" sẽ là/usr/bin.
Nhưng gần đây khi đọc một số tài liệu, RPM_BUILD_ROOT là vị trí thực tế sẽ được cài đặt và $ RPM_BUILD_ROOT được chỉ định bởi người dùng có cài đặt biến môi trường $ RPM_BUILD_ROOT để cho phép người dùng cài đặt gói trong vị trí mong muốn của họ. Nếu không, $ RPM_BUILD_ROOT sẽ rỗng và sẽ cài đặt vào vị trí mặc định. Trong trường hợp trên, nó là/usr/bin. Do đó, $ RPM_BUILD_ROOT không chỉ dành cho quy trình đóng gói hoặc "cài đặt giả" mà là một cách để người dùng xác định vị trí cài đặt, tương tự như chọn vị trí thư mục trong Windows.
Tôi không biết suy nghĩ của mình là chính xác hay không. Ai đó có thể vui lòng xác minh? Cảm ơn trước.
Vì vậy, trong kết thúc, $ RPM_BUILD_RooT chỉ là giá trị được sử dụng cho quá trình xây dựng và cho RPM giả mạo cài đặt các tệp vào thư mục gốc của trình xây dựng, vì vậy nó có thể lấy cấu trúc thư mục cho các vị trí cài đặt cuối cùng. Tôi nghĩ rằng sự hiểu biết ban đầu của tôi về gốc xây dựng là chính xác. – Amumu
Làm cách nào để chuyển một thư mục gốc tùy chỉnh sang 'make install'? – Jeroen
Đề xuất $ RPM_BUILD_ROOT duy nhất để hỗ trợ các bản dựng song song trên cùng một máy chủ bằng cách sử dụng một cái gì đó như thế này: 'BuildRoot:% {_ tmppath} /% {name} -buildroot -% {version} -% {release}' – MarkHu