RedHat: có thể cài đặt các gói trong một loại môi trường giả để xây dựng RPM không


10

Có công cụ nào cho phép cài đặt các phần phụ thuộc của RPM .spec vào một môi trường bị cô lập không? Tôi sẽ không cài đặt các phụ thuộc như vậy trên toàn cầu vào hệ thống và tôi không thể làm như vậy vì tôi không có quyền root.

Nguyên nhân

Tôi muốn xây dựng gói A phụ thuộc vào phiên bản B mới hơn (không thể cài đặt trên toàn cầu trên hệ thống).

Tôi muốn xây dựng phiên bản mới hơn của B và để cho các công cụ xây dựng cài đặt B-develnó thành một môi trường bị cô lập để cung cấp tất cả các file cần thiết cho việc xây dựng của Một .

Các giải pháp

  • Có công cụ nào để làm việc này không?
  • Nếu không, tôi nên quan tâm điều gì khi cố gắng làm điều này bằng cách nói chroot?
  • Đây sẽ là một thực hành xấu?

Câu trả lời:


8

Có, công cụ được gọi mockvà nó có trong EPEL.

Cách sử dụng điển hình:

rpmbuild -bs mypackage.spec
mock -r epel-6-x86_64 mypackage-0.1-1.src.rpm

Đây thực sự là cách ưa thích để xây dựng RPM, chính xác bởi vì nó cách ly quy trình khỏi hệ thống để các phụ thuộc không mong muốn không bị kéo vào.

Bạn có thể sửa đổi các tệp trong đó /etc/mockđể có các gói trong gói riêng của mình, repo riêng, v.v. hoặc kiểm tra tài liệu để biết thông tin về cách thêm gói vào mockmôi trường chroot theo cách thủ công.

Lưu ý rằng người dùng nên được thêm vào mocknhóm để được phép sử dụng mock.

Không phải ngẫu nhiên, kojimáy chủ xây dựng mà Red Hat sử dụng các cuộc gọi mockđể xây dựng từng gói riêng lẻ. Nếu bạn phải xây dựng rất nhiều gói mọi lúc, có thể đáng để xem xét việc thiết lập kojimáy chủ xây dựng.


Cảm ơn Michael. Điều này nghe có vẻ rất tốt. Tôi mừng vì câu hỏi của tôi không ngu ngốc như tôi nghĩ. ;)
thử bắt cuối cùng vào

3

Tôi nghĩ rằng việc cố gắng xây dựng các gói trên các máy chủ sản xuất là thực tế tồi và cố gắng thực hiện nó mà không có quyền root thì phức tạp hơn việc đưa lên các máy xây dựng của riêng bạn. Những gì tôi thường làm là sau đây.

  1. Cài đặt VirtualBox hoặc công cụ tương tự trên máy tính để bàn / máy tính xách tay của bạn
  2. Tạo 32/64 VM của HĐH bạn sử dụng trong sản xuất
  3. Cài đặt các công cụ thường giả, rpmbuild, v.v.
  4. Tạo RPM cho gói và mọi deps bổ sung cho cả hai vòm trên máy ảo của bạn
  5. Sau khi kiểm tra, đẩy RPM vào repo nội bộ của bạn để phân phối đến máy chủ của bạn
  6. Kiểm tra lại để đảm bảo các phụ thuộc thích hợp đang được kéo vào
  7. Phát hành thông qua quản lý cấu hình của bạn.

Điều này sẽ làm việc. Làm thế nào là tốt hơn so với sử dụng giả? Tôi nghĩ rằng giả sẽ dễ dàng hơn, nhưng tôi nghi ngờ rằng một trong hai cách tương tự đang xảy ra.
emory

Tôi không gặp vấn đề gì với giả và tôi tin rằng gần như tất cả các tài liệu "cách tạo vòng / phút" đã cài đặt nó. Tuy nhiên, không có quyền truy cập root Tôi không chắc chắn OP sẽ thêm tài khoản của họ vào nhóm giả, cài đặt giả, v.v. Ngoài ra, việc có các VM xây dựng sạch sẽ giúp tránh các phụ thuộc lẻ do vô tình được thêm vào các gói.
Ramin

Điểm tuyệt vời. Tôi đã không xem xét điều đó. Với ý nghĩ đó, tôi nghĩ đây là câu trả lời đúng.
emory

@emory dựa trên phản hồi của bạn Tôi đã làm rõ lý do tại sao tôi nghĩ rằng xây dựng VM là giải pháp tốt hơn về tổng thể mà tôi nghĩ là câu trả lời tốt hơn. Cảm ơn đã chọc giận tôi. :-)
Ramin

@Ramin trong tình huống của tôi (tại nơi làm việc) Tôi chỉ là người dùng . Hệ thống này là một hệ thống xây dựng chuyên dụng và tốt, nếu tất cả các nhà phát triển trên máy chủ đó sẽ có quyền root, hộp đó sẽ không khởi động sau 1 tuần. ;) Vì vậy, sử dụng một công cụ như Mock chính xác là điều đúng đắn để sử dụng! Thiết lập máy ảo cũng là một ý tưởng tốt nếu nó có thể được tự động hóa. Tôi nghĩ Vagrant (tôi chưa thử nghiệm nó) chỉ là công cụ phù hợp cho việc đó.
thử bắt cuối cùng vào

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.