Có thể đặt phiên bản cụ thể của gói, gói chính nào phụ thuộc vào?


10

Chúng tôi có môi trường phát triển trên FreeBSD 10.3. Tôi đã nghe nói rằng FreeBSD quản lý các phụ thuộc gói theo cách đó, rằng nó luôn tìm phiên bản mới nhất của tất cả các gói, gói chính phụ thuộc vào. Và nó có vẻ đúng. Vì vậy, câu hỏi của tôi là:

  1. Điều này có đúng không? Có tài liệu chính thức nào chứng minh điều đó không?
  2. Cách tốt nhất để khắc phục vấn đề này?

7
Tôi nghi ngờ, bạn có thể cài đặt gói của phiên bản cụ thể mà bạn yêu cầu trước, sau pkg lockđó là cài đặt mọi thứ bạn muốn.
mũi tên

1
Nó cũng phụ thuộc vào cổng / gói bạn muốn và trong phiên bản nào. Ví dụ, bạn có thể có các phiên bản python / postgresql / php khác nhau. Đôi khi có nhiều gói có sẵn cho một phần mềm, đôi khi bạn có thể xây dựng gói đặc biệt của mình từ các cổng.
Raphael AhDR

3
Nếu bạn mù quáng chạy các bản cập nhật freebsd (hoặc pkg upugrade), vâng, nó sẽ tìm bản mới nhất có thể và cố gắng cài đặt nó. Như mũi tên đã nói, bây giờ (kể từ 9.2 trở lên), bạn có thể khóa pkg <pkg> để bảo vệ những gì bạn đã cài đặt và phụ thuộc của nó khỏi sửa đổi. YMMV.
quadruplebucky

Câu trả lời:


1

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 lockvẫ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 upgradenó 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.

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.