Apakah ada yang tahu bagaimana (atau apakah seseorang dapat) menentukan persyaratan alternatif atau serangkaian persyaratan dalam file spesifikasi, yang bertentangan dengan persyaratan tunggal?
Misalnya, ada dua paket yang tersedia, yang dinamai dengan mudah foo-bar
dan bar-foo
. Paket saya membutuhkan salah satu dari ini tetapi tidak keduanya, dan saya tidak peduli yang mana yang hadir. Saat runtime saya menggunakan mana yang tersedia.
Jadi secara efektif saya ingin mengatakan:
Requires: foo-bar OR bar-foo
Sejauh yang saya tahu itu tidak mungkin, tapi saya pikir ada orang di sini yang tahu lebih banyak tentang RPM daripada saya, jadi mungkin ada cara untuk melakukannya.
UPDATE: Saya hanya mengontrol kemasan bar-foo
, tidak foo-bar
, jadi memiliki keduanya menyediakan paket virtual tidak akan berfungsi.
UPDATE: Hal yang sebenarnya saya butuhkan adalah paket virtual di dalam masing-masing paket. Katakanlah foo-bar provides eagle' and
bar-foo menyediakan beagle and my package works with either (or both); but other packages require either
eagle or
beagle or
foo-bar or
bar-foo`, dan sistem target dapat menginstal salah satu atau keduanya.
Saat ini saya condong untuk menyelesaikan ini dengan %pre
skrip yang melakukan sesuatu seperti:
rpm -q eagle || rpm -q beagle || echo "need eagle or beagle" && /bin/false
Sementara saya cukup yakin itu akan berhasil, sepertinya ini adalah pengelakan brutal pelacakan ketergantungan RPM. Misalnya Anda tidak akan pernah melihat paket saya ketika Anda bertanya whatrequires foo-bar
atau whatrequires beagle
.
UPDATE: Setelah dipikir-pikir, rasa sakit yang mengharuskan orang untuk menginstal di foo-bar
mana mereka mungkin tidak kurang dari rasa sakit menghindari manajemen ketergantungan RPM, setidaknya untuk situasi saya. Jadi, kecuali jika seseorang datang dengan cara yang benar membutuhkan "ini ATAU itu" (yang saya pikir akan menjadi fitur yang bagus di RPM pada umumnya) maka saya berencana untuk meminta hanya foo-bar
dan kemudian, pada saat runtime, jika bar-foo
tersedia saya akan memilih antara mereka sesuai dengan kriteria apa pun yang saya butuhkan.
UPDATE: ide lain, yang juga akan menipu RPM tetapi mungkin membuat keadaan menjadi benar. Mungkin saya bisa, dalam %post
, bermain-main dengan basis data RPM secara langsung. Jadi %pre
bisa melindungi saya dari pemasangan yang tidak valid, dan %post
akan berlaku surut memberitahu RPM bahwa saya memerlukan baik foo-bar
atau bar-foo
atau keduanya, tergantung pada apa yang ada ketika saya menginstal.
Terima kasih atas sarannya!
Provides: foo-bar
, sehingga memenuhi kedua dependensi. Untuk versi rpm yang lebih baru, periksa Boolean Dependencies . Tinggal jauh dari %pre
dan %post
bagian, jangan mencoba untuk mengalahkan sistem .