Puncte:0

Ar trebui să-mi construiesc aplicația Haskell prin fișierul RPM SPEC sau să încerc să folosesc un binar (reproducibil) din conducta CI

drapel in

Nu am construit un RPM de la zero de 20 de ani. Deci putem spune efectiv „niciodată”.

[editează] Cerința pentru RPM-uri este să ofere roll-back, controlul versiunilor și altele. Nu este negociabil.

Am un singur fișier binar și un singur fișier de configurare pe care trebuie să îl instalez. Există unele configurații cu conturile de utilizator și directoare care trebuie să se întâmple și cred că ar trebui să fie simple.

Dacă vreau o versiune reproductibilă testată în procesul de construire RPM, trebuie să replic pașii noștri conductei CI. Non-trivial. În mod ideal, pot extrage fișierele dorite dintr-o altă locație:

%prep
cp ${somefile} ${un alt fișier} $RPM_SOURCE_DIR
%înființat
:

Este posibil? Sau scap o soluție evidentă.

Mulțumiri.

Puncte:1
drapel jp
rsc

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.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.