FreeBSD xây dựng các gói như thế nào
Dự án FreeBSD được sử dụng để xây dựng các gói chỉ dành cho các bản phát hành và đôi khi cho các nhánh ỔN ĐỊNH. Các nhà xây dựng gói cũ đã sử dụng một hệ thống phân tán có tên là Portbuild. Nó sẽ sử dụng một cụm lớn các máy 2GB-4GB nhỏ hơn để xây dựng các gói. Điều này dễ bị lỗi và chậm, chủ yếu là do các máy cũ hơn. Một bản dựng đầy đủ vẫn có thể mất một tuần. Ngày nay các gói được xây dựng bằng các máy lớn đơn sử dụng Poudriere. (Từ trang web của Brian Drewery ).
Xem thêm: Cách cập nhật kết hợp các gói và cổng trên FreeBSD
FreeBSD có ABI (và API) đang phát triển giống như Solaris và Windows trong khi Linux có ABI (và API) ổn định, vì vậy với các nhị phân cũ của Linux vẫn sẽ chạy trên phiên bản HĐH mới hơn trong khi với các HĐH không phải Linux thì đây không phải là ' t luôn luôn như vậy (đôi khi nó là).
Việc sử dụng pkg lock
vẫn có thể dẫn đến đau đầu , trong khi nó sẽ khóa (đưa ra cảnh báo) khi bạn cố nâng cấp bằng cách sử dụng pkg upgrade
nó vẫn cho rằng các phiên bản được đánh số cao hơn là tốt hơn (mong muốn) và đó là điều bạn muốn làm - vì vậy, nó yêu cầu sự cho phép, và bạn có thể cho phép, nhưng nó không đảm bảo thứ gì khác sẽ không bị phá vỡ. Xem URL ở trên hoặc thảo luận này: " Bạn có muốn FreeBSD khóa các phiên bản của gói nhị phân được phân phối qua pkg cho phiên bản HĐH không? ".
Nếu một gói bị khóa đôi khi bạn sẽ phải cho phép mở khóa và thực hiện nâng cấp, trong khi đó gói đó sẽ hoạt động cho một gói (và tất cả các phụ thuộc của gói), không có gì đảm bảo rằng thứ khác sẽ không tương thích với các thư viện mới ( và do đó cũng cần nâng cấp, nếu hiện tại có sẵn).
Blog của Brian Drewery: " Tạp chí FreeBSD: Poudriere " tỏa sáng :
"Ngừng sử dụng portmaster, portupgrad và port trên máy chủ của bạn và chuyển sang các gói.
Thiết lập các bản dựng gói của riêng bạn với Poudriere chỉ mất vài phút và sẽ giúp bạn tiết kiệm rất nhiều thời gian trong tương lai.
...
Nếu bạn đang duy trì nhiều hơn một hệ thống FreeBSD và chưa sử dụng các gói, bạn nên. Tôi chỉ duy trì 20 máy chủ, nhưng việc xây dựng các cổng trên mỗi hệ thống tốn rất nhiều thời gian của tôi và lãng phí tài nguyên trên các máy sản xuất. Khi xây dựng các cổng trên nhiều máy chủ, rất dễ dàng để các tùy chọn hoặc phiên bản của chúng không đồng bộ. Bằng cách xây dựng các gói một lần trên một hệ thống, tôi đã giảm tải cho các hệ thống của mình, giảm bớt số lượng công việc tôi phải làm và làm cho tất cả các hệ thống của tôi nhất quán. Thay vì xử lý cùng một lỗi trên mỗi hệ thống, tôi chỉ cần xử lý nó trên hệ thống xây dựng.
Nhưng, quá giang ...
Tại sao bạn cần đi chệch khỏi các gói chính thức? Khung cổng cung cấp các tùy chọn hỗ trợ cho các cổng để thay đổi cấu hình thời gian xây dựng. Không phải tất cả các ứng dụng đều hỗ trợ cấu hình thời gian chạy. Một số ứng dụng phải được biên dịch khác nhau tùy thuộc vào tính năng nào được bật. Những người khác có các tùy chọn chỉ đơn giản là giảm bớt số lượng tính năng và phụ thuộc trong cổng mặc định. Đối với quản trị viên máy chủ, điều này có thể nhanh chóng dẫn đến việc phát hiện ra rằng một số gói mặc định không đáp ứng yêu cầu của họ.
Vì thế ...
Có một vài cách để có được các gói tùy chỉnh. Pkg hỗ trợ sử dụng nhiều kho lưu trữ. Nó có thể được thiết lập để sử dụng kho lưu trữ FreeBSD chính thức làm kho chính và tùy chỉnh làm phụ. Pkg không bị giới hạn bởi số lượng kho lưu trữ mà nó có thể theo dõi và chúng có thể được sắp xếp lại theo thứ tự ưu tiên. Vấn đề với nhiều kho lưu trữ là hiện tại có thể khó bảo trì. Khi Pkg phát hiện ra rằng gói đã cài đặt có các tùy chọn hoặc phụ thuộc khác nhau từ kho lưu trữ mà nó đang theo dõi, gói sẽ được cài đặt lại từ bất kỳ phiên bản từ xa nào. Bạn có thể khóa gói trong khi nâng cấp với pkg khóa PKGNAME và pkg mở khóa PKGNAME hoặc liên kết nó với một kho lưu trữ cụ thể với pkg annotate -A Kho lưu trữ PKGNAME REPONAME. Ngoài ra còn có vấn đề tinh tế trong việc giữ cây cổng cho kho lưu trữ tùy chỉnh của bạn đồng bộ hóa với các gói FreeBSD. Vì các gói được xây dựng từ ảnh chụp nhanh cây cổng được thực hiện mỗi tuần một lần, nếu kho lưu trữ tùy chỉnh của bạn không khớp, nó có thể dẫn đến xung đột. Sẽ đơn giản hơn nhiều khi chỉ cần xây dựng toàn bộ bộ gói chỉ những gì bạn cần với các tùy chọn mà bạn muốn.
Giải pháp:
Poudriere (phát âm gần như poo-dree-year, tiếng Pháp cho loại bột keg ') được viết như một sự thay thế nhanh hơn và đơn giản hơn cho Tinderbox. Nó được viết bởi tác giả Pkg Baptiste Daroussin và hiện tại hầu hết được tôi duy trì cùng với Baptiste và một số người đóng góp khác. Nó đã nhanh chóng trở thành công cụ kiểm tra và xây dựng gói FreeBSD trên thực tế. Nó là công cụ xây dựng cụm chính thức và cũng được sử dụng bởi dự án FreeBSD Cổng để thử nghiệm các bản vá lỗi quét trong cái được gọi là các exp exp chạy chạy. Nó được viết bằng vỏ POSIX và đang dần được chuyển đến các thành phần C. Không giống như Tinderbox, nó không có phụ thuộc và không yêu cầu cơ sở dữ liệu. Nó đã được tối ưu hóa rất nhiều để được song song cao trong tất cả các hoạt động. Nó sử dụng các nhà tù để xây dựng các cổng trong môi trường hộp cát trong điều kiện rất nghiêm ngặt. Tạo tù được thực hiện một lần với một lệnh đơn giản. Trong quá trình xây dựng, nhà tù được nhân bản tự động cho mỗi CPU được sử dụng để cung cấp cho các cổng một nơi sạch sẽ để xây dựng. ".
Thiết lập kho lưu trữ của riêng bạn với poudriere cho phép bạn có sự linh hoạt của các cổng và dễ dàng quản lý các gói.
pkg lock
đó là cài đặt mọi thứ bạn muốn.