Có ai biết làm thế nào (hoặc liệu người ta có thể) chỉ định một yêu cầu thay thế hoặc tập hợp các yêu cầu trong một tệp spec, trái ngược với một yêu cầu không?
Ví dụ, giả sử có hai gói có sẵn, được đặt tên thuận tiện foo-bar
và bar-foo
. Gói của tôi yêu cầu một trong những thứ này nhưng không phải cả hai và tôi không quan tâm cái nào có mặt. Trong thời gian chạy tôi sử dụng bất cứ điều gì có sẵn.
Vì vậy, hiệu quả tôi muốn một cách để nói:
Requires: foo-bar OR bar-foo
Theo như tôi có thể nói là không thể, nhưng tôi nghĩ rằng có những người ở đây biết nhiều về RPM hơn tôi, vì vậy có lẽ có cách để làm điều đó.
CẬP NHẬT: Tôi chỉ kiểm soát việc đóng gói bar-foo
, không foo-bar
, vì vậy cả hai cung cấp một gói ảo sẽ không hoạt động.
CẬP NHẬT: Thứ tôi thực sự cần là một gói ảo bên trong mỗi gói. Say foo-bar provides eagle' and
bar-foo cung cấp and my package works with either (or both); but other packages require either
đại bàng or
beagle beagle or
foo-bar or
bar-foo`, và hệ thống đích có thể được cài đặt hoặc cả hai.
Tôi hiện đang nghiêng về việc giải quyết vấn đề này bằng một %pre
kịch bản có nội dung như sau:
rpm -q eagle || rpm -q beagle || echo "need eagle or beagle" && /bin/false
Mặc dù tôi khá chắc chắn rằng nó sẽ hoạt động, nó có vẻ như là một sự phá vỡ tàn bạo của theo dõi phụ thuộc của RPM. Chẳng hạn, bạn sẽ không bao giờ thấy gói của tôi khi bạn hỏi whatrequires foo-bar
hay whatrequires beagle
.
CẬP NHẬT: Về suy nghĩ thứ hai, nỗi đau của việc yêu cầu mọi người cài đặt foo-bar
ở nơi họ có thể không ít hơn nỗi đau của việc lách luật quản lý phụ thuộc RPM, ít nhất là đối với tình huống của tôi. Vì vậy, trừ khi ai đó nghĩ ra cách yêu cầu "cái này HOẶC cái kia" (mà tôi nghĩ sẽ là một tính năng tuyệt vời để có trong RPM nói chung) thì tôi dự định chỉ yêu cầu foo-bar
và sau đó, khi bar-foo
có sẵn, tôi sẽ chọn giữa chúng theo bất cứ tiêu chí nào tôi cần
CẬP NHẬT: một ý tưởng khác, cũng sẽ gian lận RPM nhưng có thể đưa mọi thứ vào đúng trạng thái. Có lẽ tôi có thể, %post
trực tiếp tìm hiểu cơ sở dữ liệu của RPM. Như vậy %pre
có thể bảo vệ tôi khỏi một hợp lệ cài đặt, và %post
hồi tố sẽ nói với RPM mà tôi yêu cầu một trong hai foo-bar
hoặc bar-foo
hoặc cả hai, tùy thuộc vào những gì có khi tôi cài đặt.
Cảm ơn những lời đề nghị!
Provides: foo-bar
, để nó thỏa mãn cả hai phụ thuộc. Đối với các phiên bản vòng / phút mới hơn, hãy kiểm tra Phụ thuộc Boolean . Tránh xa %pre
và %post
các phần, đừng cố gắng đánh bại hệ thống .