Din punctul meu de vedere, depinde puțin ce anume vizați:
Distribuțiile Linux precum Fedora se așteaptă de fapt pentru versiunile lor de distribuție ca software-ul să fie construit din sursă folosind fișierul spec (în interiorul unui sistem de construcție sigilat care documentează, de asemenea, pachetele/componentele utilizate pentru construirea) și consideră că aceasta este o bună practică, de asemenea, pentru a obține cât mai multă reproductibilitate. pe cat posibil.
Cu toate acestea, într-adevăr puteți doar să extrageți binare pre-construite și să le utilizați într-un fișier cu specificații pentru a construi un pachet RPM, exemplu scurtat pentru scenariul dvs.:
# [â¦]
Sursa 0: <fișier binar>
Sursa 1: <fișier de configurare>
# [â¦]
%prep
%setup -q -c -T
%construi
%instalare
instalați -D -p -m 0755 %{SOURCE0} $RPM_BUILD_ROOT%{_bindir}/%{name}
instalați -D -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}.conf
# [â¦]
Deși acest lucru ar putea funcționa, ar trebui să verificați în mod explicit dacă dependențele pachetului RPM rezultat sunt adecvate (rpm -qp --necesită <â¦>.rpm
) sau dacă lipsesc dependențe de rulare. Adesea există opțiuni sau parametri la momentul compilarii (de ex. CFLAGS
sau LDFLAGS
software scris în C), precum și scripturi de post-procesare (de ex. /usr/lib/rpm/(redhat/)brp-*
) în timp ce construiți pachetul RPM care adaugă lucruri specifice distribuției și/sau extrage dependențe de rulare pentru dvs. Acest lucru poate fi sau nu relevant pentru dvs. (și unele scripturi de post-procesare ar putea funcționa și pentru binare pre-construite, dar altele nu din cauza lipsei opțiunilor de compilare). Deși împachetez o mulțime de software, nu am experiență cu Haskell, dar când mă uit la unele pachete Fedora, există pachete RPM care au dependențe de rulare (și dacă există dependențe de rulare, acestea trebuie să fie satisfăcute de Pachete RPM, pentru că așa funcționează RPM; și nu este suficient să aveți biblioteca de potrivire undeva în sistemul dvs. de fișiere, deoarece RPM nu va ști despre asta decât este furnizată de un pachet RPM). Astfel, construirea unui pachet RPM din binare pre-construite ar putea duce la un pachet RPM fără dependențe adecvate, care ar putea dezvălui mai târziu erori de rulare.
Referitor la exemplul de mai sus: În timp ce SursaX:
i se poate da o adresă URL, rpmbuild
încă se așteaptă aceste fișiere pe disc în fișierul SURSE
directorul la construirea pachetului RPM (deci cum intră în SURSE
directorul depinde de tine).
Având în vedere că nu ați menționat ce distribuție Linux vizați, le conectez la Fedora Ghid de ambalare Haskell
aici, care poate oferi sau nu inspirație suplimentară.Și da, pachetele RPM pot fi distribuție încrucișată, ceea ce practic duce adesea la binare statice în interiorul pachetelor RPM, datorită deseori diferitelor versiuni de bibliotecă/pachet pe diferite distribuții Linux.