RPM-MACROS(7) Miscellaneous Information Manual RPM-MACROS(7) NUME rpm-macros - procesor macrocomenzi RPM SINOPSIS Definirea %NUME CORP %NUME([OPIUNI]) CORP Expandarea %NUME %NUME [OPIUNI] [ARGUMENTE] %{NUME} %{NUME [OPIUNI] ARGUMENTE} %{NUME:ARGUMENT} %{?NUME} %{?NUME:VALOARE-DACA-DEFINITA} %{!?NUME:VALOARE-DACA-NU_ ESTE-DEFINITA} %(COMANDA-SHELL) %[EXPRESIE] %[EXPRESIE ? VALOARE-DACA-ADEVARAT : VALOARE-DACA-FALS] %{lua:COD-LUA} DESCRIERE RPM are un procesor de macrocomenzi incorporat puternic. Utilizarile principale ale macrocomenzilor sunt configurarea i alte funcii utilitare pentru RPM in sine, precum i ca ajutor pentru impachetare in fiierele spec. Pe langa simpla substituire a textului, procesorul de macrocomenzi accepta urmatoarele funcii: o funcie de tip MACROCOMENZI PARAMETRICE cu opiuni i procesare de argumente i macrocomenzi definite de utilizator i automate cu domeniu de aplicare local o Expansiune shell o Expansiune expresie o Expansiune Lua pentru procesarea Lua incorporata o diverse MACROCOMENZI INTEGRATE pentru procesarea irurilor de caractere i interaciunea cu sistemul de operare Sintaxa pentru definirea macrocomenzilor simple este: NUME CORP Toate spaiile albe din jurul CORPULUI sunt eliminate. NUME poate fi compus din caractere alfanumerice i din caracterul de subliniere (_) i trebuie sa aiba cel puin doua caractere. Corpul este (re)extins la fiecare invocare a macrocomenzii. Numele macrocomenzilor i opiunile sunt sensibile la majuscule i minuscule. Consultai MACROCOMENZI PARAMETRICE pentru varianta mai avansata de macrocomenzi cu procesarea opiunilor i argumentelor. Macrocomenzile pot fi definite prin fiiere rpm-macrofile(5) i gestionate integral cu ajutorul macrocomenzilor primitive %define, %global i %undefine, linia de comanda RPM descrisa in rpm-common(8) i API (C, Python, Lua). Cu excepia celor definite in macrocomenzile parametrice, macrocomenzile au intotdeauna domeniu global. Macrocomenzile RPM sunt stivuite, adica atunci cand se redefinete o macrocomanda deja existenta, aceasta acopera definiia anterioara in loc sa o inlocuiasca, iar anularea definiiei unei macrocomenzi elimina doar definiia de sus, activand astfel definiia macrocomenzii anterioare. Reinei ca acest manual descrie doar motorul procesorului de microcomenzi in sine. Intr-un sistem normal bazat pe RPM, exista un numar mare de alte microcomenzi definite prin fiiere rpm-macrofile(5) care nu vor fi abordate aici. EXPANDARE Pentru a extinde o macrocomanda, plasai % in faa acesteia. Sunt acceptate mai multe forme: %NUME Extinde macrocomanda NUME. %{NUME} Extinde macrocomanda NAME, permiand plasarea langa alt text (similar cu ${ENV} in shell). %NUME [OPIUNI] [ARGUMENTE] Extinde macrocomanda parametrica/incorporata NUME, utilizand opiunile i argumentele analizate pana la sfaritul irului sau pana la urmatorul caracter de linie noua. -- poate fi utilizat pentru a separa opiunile de argumente. %{NUME [OPIUNI] [ARGUMENTE]} Extinde macrocomanda parametrica/incorporata NUME, utilizand opiunile i argumentele analizate pana la inchiderea }. Permite utilizarea in vecinatatea altui text. %{NUME:ARGUMENT} Extinde macrocomanda parametrica/incorporata NUME, utilizand irul de caractere dupa : ca argument unic. Permite utilizarea in vecinatatea altui text. Nota: Sintaxele pentru apelarea macrocomenzilor parametrice i incorporate sunt in general interschimbabile in prezent, dar inainte de versiunea 4.18, sintaxa %{NUME:ARGUMENT} era exclusiva pentru macrocomenzile incorporate. Extinderea macrocomenzii poate fi evitata prin plasarea unui al doilea % in faa macrocomenzii, de exemplu %%{nume} ar fi extins la %{nume}. Incercarea de a extinde o macrocomanda nedefinita se extinde la invocarea literala, de exemplu %_undefined se extinde la %_undefined. Daca acest lucru nu este dorit, utilizai condiionale. Expansiunile macrocomenzii pot recurge pana la 64 de niveluri. Expansiune shell Extinderea shell-ului poate fi efectuata folosind %(comanda shell). comanda_shell este extinsa inainte de a fi executata cu /bin/sh, a carei ieire devine extinderea macrocomenzii. Caracterul de linie noua de la sfarit este ters. Exemplu: %(echo aa-bb-cc | tr '-' '.') Extindere condiionala Procesorul de macrocomenzi accepta testarea daca o macrocomanda este definita sau nu. %{?NUME:VALOARE} Se extinde la extinderea VALOARE daca NUME este definit, altfel la un ir gol. %{!?NUME:VALOARE} Se extinde la extinderea VALoarE daca NUME nu este definit, altfel se extinde la un ir gol. %{?NUME} Prescurtare pentru %{?NUME:%{NUME}}. Pentru teste mai complexe, utilizai Expansiune expresie sau Expansiune Lua. Reinei ca %if, %ifarch i altele similare nu sunt macrocomenzi, ci directive spec i pot fi utilizate numai in acel context. Reinei ca in RPM >= 4.17, condiiile din macrocomenzile incorporate verifica pur i simplu existena acelei macrocomenzi incorporate, la fel ca in cazul oricarei alte macrocomenzi. In versiunile mai vechi, comportamentul condiiilor din macrocomenzile incorporate este nedefinit. Expansiune expresie Extinderea expresiei poate fi efectuata utilizand %[EXPRESIE]. O expresie este formata din termeni care pot fi combinai utilizand operatori. RPM accepta trei tipuri de termeni: o numere formate din cifre o iruri de caractere intre ghilimele duble (de exemplu, "vreun -ir") o versiuni intre ghilimele duble precedate de v (de exemplu, v"3:1.2-1") RPM va extinde macrocomenzile atunci cand evalueaza termenii. Putei utiliza operatorii standard pentru a combina termenii: o operatori logici &&, ||, ! o operatori relaionali !=, ==, <, >, <=, >= o operatori aritmetici +, -, /, *, o operatorul ternar ? : o paranteze De exemplu, %[ 3 + 4 * (1 + %two) ] se va extinde la 15 daca %two se extinde la 2. Termenii versiunii sunt comparai folosind algoritmul de comparare a versiunii RPM ([epoch:]version[-release]), i nu prin compararea obinuita a irurilor de caractere. Reinei ca expansiunea %[EXPRESIE] este diferita de macrocomanda %{expr:EXPRESIE}. In cazul celei din urma, macrocomenzile din expresie sunt mai intai expandate, iar apoi expresia este evaluata (fara a reexpanda termenii). Astfel rpm --define 'foo 1 + 2' --eval '%{expr:%foo}' va afia 3. Utilizarea %[%foo] va genera eroarea "1 + 2" nu este un numar. Efectuarea expansiunii macrocomenzii in timpul evaluarii termenilor are doua avantaje. In primul rand, permite RPM sa efectueze o procesare corecta a scurtcircuitelor in timpul evaluarii operatorilor logici. In al doilea rand, rezultatul expansiunii nu influeneaza analizarea expresiei, de exemplu %[,,%file"] va funciona chiar i daca macrocomanda %file se extinde la un ir care conine ghilimele duble. Adaugata: 4.16.0 Expansiune Lua Cea mai puternica dintre metodele de expansiune a macrocomenzilor este utilizarea interpretului Lua incorporat in RPM: %{lua:COD-LUA} Executai LUA-CODE folosind interpretul Lua incorporat in RPM, extinzandu-l la codul print() i afiand rezultatul. Pentru detalii, consultai rpm-lua(7). MACROCOMENZI PARAMETRICE Macrocomenzile parametrice sunt un mecanism puternic care permite crearea de macrocomenzi utilitare similare funciilor, cu procesare opionala i acceptarea unui numar variabil de argumente, similar instrumentelor shell obinuite. Sintaxa pentru definirea macrocomenzilor parametrice este: NUME([OPIUNI]) CORP Daca sunt prezente, OPIUNILE (adica irul dintre paranteze) sunt transmise exact aa cum sunt catre getopt(3) pentru procesarea argc/argv la inceputul invocarii macrocomenzii. Sunt acceptate numai opiunile scurte. - ca singurul camp OPIUNI dezactiveaza procesarea opiunilor RPM. Acest lucru permite macrocomenzilor sa decida in totalitate modul de gestionare a intrarilor lor, de exemplu, daca argumentele macrocomenzii constau numai/in mare parte din elemente care incep cu -, procesarea implicita nu face decat sa incurce. Macrocomenzi automate In timpul extinderii unei macrocomenzi parametrizate, sunt disponibile urmatoarele macrocomenzi automate de tip shell: +-------------+--------------------------------------------------------+ |Macrocomanda | Descriere | +-------------+--------------------------------------------------------+ |%0 | numele macrocomenzii care este invocata | +-------------+--------------------------------------------------------+ |%* | toate argumentele (spre deosebire de shell, fara a | | | include niciun fanion procesat) | +-------------+--------------------------------------------------------+ |%** | toate argumentele (inclusiv orice fanioane procesate) | +-------------+--------------------------------------------------------+ |%# | numarul de argumente | +-------------+--------------------------------------------------------+ |%{-f} | daca este prezent la invocare, ultima apariie a | | | fanionului f (fanion i argument) | +-------------+--------------------------------------------------------+ |%{-f*} | daca este prezent la invocare, argumentul pentru | | | ultima apariie a fanionului f | +-------------+--------------------------------------------------------+ |%1, %2, ... | argumentele in sine (dupa procesarea getopt(3)) | +-------------+--------------------------------------------------------+ Daca procesarea opiunilor incorporate a fost dezactivata cu - ca camp OPIUNI , sunt disponibile numai urmatoarele macrocomenzi automate: +-------------+--------------------------------------------------------+ |Macrocomanda | Descriere | +-------------+--------------------------------------------------------+ |%0 | numele macrocomenzii care este invocata | +-------------+--------------------------------------------------------+ |%*, %** | toate argumentele | +-------------+--------------------------------------------------------+ |%# | numarul de argumente | +-------------+--------------------------------------------------------+ |%1, %2, ... | argumentele in sine | +-------------+--------------------------------------------------------+ Macrocomenzile automate sunt definite i redefinite automat la intrarea i ieirea din macrocomanda parametrica. Accesarea opiunilor In cadrul unei macrocomenzi parametrice, exista mai multe construcii care permit testarea prezenei parametrilor opionali. Cea mai simpla construcie este %{-f} care se extinde (literalmente) la -f daca -f a fost menionat atunci cand macrocomanda a fost invocata. Exista, de asemenea, prevederi pentru includerea textului daca era prezent un fanion folosind %{-f:X}. Aceasta macrocomanda se extinde la (extinderea lui) X daca fanionul era prezent. Forma negativa, %{!-f:Y}, care se extinde la (extinderea lui) Y daca -f nu era prezent, este de asemenea acceptata. Domeniul de aplicare i vizibilitatea In general, macrocomenzile au o aplicabilitate globala, indiferent de locul i modul in care au fost definite. Cu toate acestea, macrocomenzile definite in cadrul macrocomenzilor parametrice au o aplicabilitate non-globala, dupa cum urmeaza: o macrocomenzile automate au domeniu de aplicare local, adica sunt vizibile numai la nivelul apelului macrocomenzii respective o macrocomenzile locale definite de utilizator au un domeniu de aplicare imbricat, adica sunt vizibile la nivelul apelului macrocomenzii in sine i la niveluri mai profunde. Adica, o macrocomanda parametrica nu poate vedea opiunile sau argumentele altei macrocomenzi, dar o macrocomanda locala definita de utilizator intr-o macrocomanda de apel poate fi accesata in macrocomanda (macrocomenzile) apelata (apelate). Pentru a defini o macrocomanda globala in interiorul unei macrocomenzi parametrice, trebuie sa utilizai %global in loc de %define. De asemenea, reinei ca, deoarece o astfel de macrocomanda poate face referire la alte macrocomenzi vizibile numai in domeniul curent, %global extinde corpul macrocomenzii o singura data in momentul definirii. Convenia de apelare Cand o macrocomanda parametrica este extinsa, se utilizeaza urmatoarea convenie de apelare: 1. orice argumente ale macrocomenzii sunt extinse la nivelul apelului destinatarului apelului 2. orice opiuni pentru macrocomanda sunt procesate 3. macrocomenzile automate sunt configurate pentru opiuni i argumente 4. corpul macrocomenzii este extins recursiv 5. toate macrocomenzile definite la acest nivel de apel sunt eliminate MACROCOMENZI INTEGRATE RPM accepta urmatoarele macrocomenzi incorporate pentru diverse operaiuni. Macrocomenzile incorporate nu pot fi redefinite sau suprascrise. Nota: Stilul %{name:arg} este utilizat aici deoarece este cel mai compatibil cu versiunile anterioare i nu necesita citarea spaiilor albe, dar poate fi in general inlocuit i cu alte forme de expansiune. Funciile incorporate care accepta mai multe argumente trebuie sa utilizeze alte stiluri, dupa cum se indica mai jos. Manipularea macrocomenzilor Macrocomenzile primitive sunt utilizate pentru manipularea macrocomenzilor in fiierele spec i in alte macrocomenzi. Reinei ca toate acestea funcioneaza pe numele macrocomenzii fara caracterul % precedent. %define NUME[([OPIUNI])] CORP Acesta este modul principal de definire a macrocomenzilor. A %define este intotdeauna complet declarativ: nu are loc nicio expansiune a macrocomenzii i nu are efecte secundare. Macrocomenzile definite cu acesta se afla in domeniul global, cu excepia cazului in care definiia apare in interiorul unei macrocomenzi parametrice. Exemplu: %define ruta-mea /usr/bin/mine %global NUME[([OPIUNI])] CORP Primitiva %global are o sintaxa identica cu %define, dar prezinta doua diferene comportamentale extrem de importante: dupa cum sugereaza i numele, o macro definita cu %global are intotdeauna un domeniu de aplicare global, indiferent de locul in care este utilizata. A doua diferena este ca CORPUL este extins o singura data in momentul definirii, iar extinderea devine corpul macrocomenzii propriu-zis. Astfel, atunci cand se utilizeaza %global, pot aparea execuii de cod arbitrar i efecte secundare, in funcie de coninutul i de celelalte macrocomenzi utilizate in CORP. Cea din urma poate fi utila pentru a evita extinderile macrocomenzii redundante i posibil costisitoare daca valoarea nu se modifica, dar trebuie sa fii contieni de efectele secundare. Reinei ca, dei %global accepta din punct de vedere tehnic un camp OPIUNI, aceasta nu este potrivita pentru definirea macrocomenzilor parametrice din cauza comportamentului de expansiune al CORPULUI. Exemplu: %global snapver 0-0.48.20240616git %undefine NUME Reinei ca %undefine doar scoate o definiie macro din stiva, astfel incat utilizarea sa nu garanteaza ca NAME este nedefinit dupa apelarea %undefine asupra acestuia. Macrocomenzile automate i macrocomenzile incorporate nu pot fi nedefinite. Exemplu: %undefine ruta-mea %{load:FIIER} Incarca un fiier rpm-macrofile(5). (Adaugata: 4.12.0) Exemplu: %{load:/vreun/dir/macros.foo} Extinderea macrocomenzii %{expand:CORP} Extinde CORPUL ca i cum ar fi un corp al unei macrocomenzi. Util pentru o indirecie sporita, cum ar fi extinderea unui nume de macrocomanda construit din doua sau mai multe macrocomenzi. Exemplu: %{expand:%{foo_prefix}%{foo_suffix}} %{expr:EXPRESIE} Extinde EXPRESIA. Consultai Extinderea expresiei. (Adaugata in versiunea: 4.15.0) Exemplu: %{expr:5*1024} %{lua:COD-LUA} Extinde la ieirea LUA-CODE folosind interpretul Lua incorporat. Consultai Extindere Lua. Exemplu: %{lua:for i=65,90 do print(ir.char(i)) end} %{macrobody:NUME} Extinde la corpul literal al macrocomenzii NUME. (Adaugata in versiunea: 4.16.0) Exemplu: %{macrobody:_libdir} Operaii cu iruri de caractere %dnl Ignora la linia urmatoare (fara a extinde nimic). %dnl este metoda recomandata pentru a comenta elementele din fiierele spec, deoarece funcioneaza peste tot i dezactiveaza procesarea macrocomenzii pentru linia respectiva. (Adaugata in versiunea: 4.15.0) Exemplu: %dnl Acesta este un comentariu privind comportamentul %{mymacro} %{gsub IR, MODEL, INLOCUIRE [,N]} Inlocuiete toate apariiile (sau primele N, daca sunt specificate) ale MODELULUI din IR cu INLOCUIREA. Adaugata in versiunea: 4.19.0 Exemplu: %{gsub aabbaacc aa dd 1} %{len:IR} Extinde la lungimea IRULUI. (Adaugata in versiunea: 4.19.0) Exemplu: %{len:9bf7da058a7c582878310e75be3d56a5a8b67f95} %{lower:IR} Extinde la litere mici IRUL. (Adaugata in versiunea: 4.19.0) Exemplu: %{lower:CamelCase}' %{quote:ir} Citeaza argumentele pentru transmiterea irurilor goale i a irurilor cu spaii albe incorporate ca argumente ale macrocomenzii parametrice. (Adaugata in versiunea: 4.14.0) Exemplu: %myzip -x %{quote:empty spaces.zip} %{rep IR, N [,SEP]} Extinde la un ir care este concatenarea a N copii ale IR, separate prin SEP (daca este specificat). Adaugata in versiunea: 4.19.0 Exemplu: %{rep a 5} %{reverse:IR} Inverseaza un ir. (Adaugata in versiunea: 4.19.0) Exemplu: %{reverse:tac} %{shescape:IR} Citeaza simplu IRUL cu caractere de eludare pentru utilizare in shell. (Adaugata in versiunea: 4.18.0) Exemplu: %{shescape:foo's} %{shrink:IR} Elimina spaiile albe din faa i din spatele IRULUI, reduce spaiile albe intermediare la un singur spaiu. (Adaugata in versiunea: 4.14.0) Exemplu: %{shrink:aa bb ccc } %{span:IR} irul aa cum este, util pentru incadrarea macrocomenzilor pe mai multe linii. (Adaugata in versiunea: 6.0.0) Exemplu: %{span: %un lucru %un alt lucru } %{sub IR, I, [,J]} Extinde la subirul din IR care incepe la I i continua pana la J. I i J pot fi negative pentru a indexa de la sfaritul irului. Daca J este absent, se presupune ca este egal cu -1 (adica sfaritul irului). Adaugata in versiunea: 4.19.0 Exemplu: *%{sub fiierul-meu.zip 3 6}* %{upper:IR} Extinde la majuscule IRUL. (Adaugata in versiunea: 4.19.0) Exemplu: %{upper:CamelCase}' Operaii cu fiiere i rute %{basename:RUTA} basename(1) macrocomanda analoaga. Exemplu: %{nume-bazae:/vreun/dir/fiier.suf} %{dirname:RUTA} dirname(1) macrocomanda analoaga. Exemplu: %{dirname:/vreun/dir/fiier.suf} %{exists:RUTA} Verifica existena fiierului, expandeaza la 1/0. (Adaugata in versiunea: 4.18.0) Exemplu: %{exists:%{builddir}/myflag.txt} %{suffix:RUTA} Expandeaza partea de sufix a unui nume de fiier. Exemplu: %{suffix:fiierul-meu.zip} %{url2path:URL} Convertete adresa URL intr-o ruta locala. Exemplu: %{url2path:http://rpm.org/not/there} %{uncompress:RUTA} Extinde la o comanda pentru a afia argumentul RUTA la ieirea standard, decomprimand dupa cum este necesar. Exemplu: %{uncompress /sursa/mea.tar.gz} %{xdg:TIP} Extinde la rutele directorului de baza XDG. Valorile acceptate pentru TIP sunt: o cache: date neeseniale specifice utilizatorului (stocate in cache) o config: fiiere de configurare specifice utilizatorului o data: fiiere de date specifice utilizatorului o state: date de stare specifice utilizatorului Adaugata: 6.0.0 Exemplu: %{xdg config} Informaii despre mediu %getncpus Extinde la numarul de CPU-uri disponibile. (Adaugata in versiunea: 4.15.0) %{getncpus:TIP} Extinde la numarul de CPU-uri disponibile, valorile acceptate pentru TIP sunt o total: numarul total de CPU-uri disponibile (la fel ca %getncpus) o proc: numarul de CPU-uri disponibile pentru procese o thread: numarul de CPU-uri disponibile pentru fire de execuie proc i thread contabilizeaza memoria disponibila, inclusiv limitarile spaiului de adrese pentru firele de execuie. Adaugata: 4.19.0. Exemplu: %{getncpus proc} %getconfdir Extinde la directorul ,,home" RPM (de obicei ,,/usr/lib/rpm"). %{getenv:NUME} getenv(1) macrocomanda analoaga. Exemplu: %{getenv:HOME} %rpmversion Extinde la versiunea RPM in execuie. Ieire %{echo:IR} Imprima IRUL pentru a procesa ieirea standard. Exemplu: %{echo:Construirea cu foo} %{warn:IR} Imprima IRUL precedat de ,,warning: " pentru a procesa ieirea de eroare standard. Exemplu: %{warning:Foo este depreciat} %{error:IR} Imprima IRUL prefixat cu ,,error:" pentru a procesa eroarea standard i a semnaliza o eroare in procesorul macrocomenzii. Exemplu: %{error:Argument nevalid} %verbose Expandeaza la 1/0 indiferent daca RPM este in modul descriptiv sau nu. (Adaugata in versiunea: 4.17.1) %{verbose:IR} Extinde la IR daca RPM este in modul descriptiv, irul gol daca nu este. (Adaugata in versiunea: 4.17.1) Exemplu: %{verbose:-x} Macrocomenzi specifice spec %{S:NUMAR} Extinde la numele fiierului sursei specificate NUMAR. %{S:n} este echivalent cu %{SOURCEn}. %{P:NUMAR} Extinde la numele fiierului patch-ului specificat NUMAR. %{P:n} este echivalent cu %{PATCHn}. Diagnosticare %trace Comuta afiarea informaiilor de depanare inainte/dupa extindere. %dump Imprima tabelul de macrocomenzi active (adica neacoperite). %__nume_fiier Extinde la numele fiierului curent (daca se analizeaza un fiier). (Adaugata in versiunea: 4.15) %__fiier_nr.linie Extindei la numarul liniei curente din fiierul curent (daca se analizeaza un fiier). (Adaugata in versiunea: 4.15) EXEMPLE Exemplul 1. Definii o macrocomanda simpla Definii macrocomanda mylib ca o ruta relativa la macrocomanda %{_libdir} intr-un fiier spec: %define mylib %{_libdir}/mine Exemplul 2. Definii o macrocomanda parametrica Definii macrocomanda parametrica myhelper care executa programul specificat de %myprog cu primul argument al acestuia i trecand intotdeauna opiunea --some-opt catre acesta, precum i opiunea --xtra daca a primit opiunea -x: %define myhelper(x) %{myprog} --vreo-opiune %{?-x:--xtra} %{1} Exemplul 3. Definii o macrocomanda utilizand expansiunea shell-ului Definii macrocomanda %today care se extinde la data curenta in formatul AALLZZ apeland ustensila shell date(1). Reinei ca este necesara a doua macrocomanda % pentru a eluda argumentele catre date(1): %define today %(date +%%y%%m%%d) Exemplul 4. Definii o macrocomanda condiionala Definii macrocomanda mypath daca nu a fost definita anterior: %{!?mypath: %define mypath /vreun/loc} Exemplul 5. Expansiune conditionala Expandeaza la 1 daca use_foo este definit i 0 in caz contrar: %{?use_foo:1}%{!?use_foo:0} Exemplul 6. Expresii Calculeaza 5 * 1024: %[5 * 1024] Extinde la literalul true sau false in funcie de o condiie: %[1 < 2 ? "true" : "false"] Compara versiunile, extinzand la 1 sau 0 pentru true/false: %[ v"3.1.0-1" < v"1.0~alpha-2" ? 1 : 0] Expandeaza la 1 daca %aa se extinde la 5, altfel se extinde la 2: %[ "%{aa}" == "5" ? 1 : 2] DEPANAREA Cateva instrumente utile pentru lucrul cu macrocomenzi i depanarea acestora: rpm --eval "VALOARE" Extinde VALOAREA in linia de comanda. rpm --define "aa 11" --eval "%aa" Definete i evaueaza o macrocomanda in linia de comanda. rpm --eval "%global unamer %(uname -r)" --eval "%{macrobody:unamer}" Definete i examineaza corpul macrocomenzii folosind %global in linia de comanda. rpm --eval "%define unamer %(uname -r)" --eval "%{macrobody:unamer}" Definete i examineaza corpul macrocomenzii folosind %define in linia de comanda. rpmlua Ruleaza un shell interactiv in mediul Lua incorporat. rpmlua -e 'print(macros.defined("_libdir"))' Folosind interpretul Lua incorporat in forma autonoma, afieaza 1/0 indiferent daca macrocomanda _libdir este definita sau nu. rpmspec --shell Ruleaza un shell interactiv in mediul macrocomenzii. rpmspec --shell telnet.spec Ruleaza un shell interactiv in mediul macrocomenzii dupa analizarea telnet.spec. CONSULTAI I rpm(8) rpm-common(8) rpm-macrofile(5) rpm-config(5) rpm-lua(7) rpmspec(1) rpmlua(1) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . RPM 6.0.1 8 ianuarie 2026 RPM-MACROS(7)