.\" -*- coding: UTF-8 -*- .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" Generated by scdoc 1.11.4 .\" Complete documentation for this program is not available as a GNU info page .nh .ad l .\" Begin generated content: .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH RPM\-LUA 7 "8 ianuarie 2026" "RPM 6.0.1" .PP .SH NUME .PP rpm\-lua \- interpretul intern Lua al RPM .PP .SH SINOPSIS .PP %scriptlet \-p .PP %{lua:.\&.\&.\&} .PP .SH DESCRIERE Lua este un limbaj de programare cu scop general, conceput special pentru a fi încorporat în alte programe, iar RPM include un interpret Lua încorporat pentru utilizare în \fBrpm\-macros\fP(7) avansate și scripturi de tranzacții.\& .PP Interpretorul Lua încorporat face posibile diverse lucruri care sunt dificile sau imposibile cu macrocomenzi simple sau scripturi shell externe, cum ar fi eliminarea buclelor de dependență din scriptlet\-urile pachetelor.\& .PP .SH MACROCOMENZI .SS "Accesarea macrocomenzilor" Extensia \fBrpm\fP are diverse funcții pentru gestionarea macrocomenzilor, dar cea mai convenabilă modalitate de a accesa \fBrpm\-macroproc\fP(7) din mediul RPM Lua este prin intermediul tabelului global \fBmacros\fP.\& .PP Lua nu face diferență între sintaxele indexului tabelului și ale numelui câmpului, astfel încât \fBmacros.\&foo\fP și \fBmacros['\&foo'\&]\fP sunt echivalente. Utilizați cea care se potrivește mai bine scopului.\& .PP Ca orice tabel Lua real, elementele inexistente sunt returnate ca \fBnil\fP, iar atribuirea poate fi utilizată pentru a defini sau a anula definiția macrocomenzilor.\& .PP Exemplu: .nf .RS 4 if not macros\&.yours then macros\&.my = \&'my macro\&' end local v = { \&'_libdir\&', \&'_bindir\&', \&'_xbindir\&' } for _, v in ipairs(v) do if not macros[v] then macros[v] = \&'default\&' end end .fi .RE .PP Toate macrocomenzile împărtășesc același mediu global de execuție Lua.\& .PP .SS "Apelarea macrocomenzilor parametrice" Macrocomenzile parametrice (inclusiv toate macrocomenzile încorporate) pot fi apelate într\-un mod nativ Lua prin intermediul tabelului \fBmacros\fP, folosind sintaxa \fBmacros.\&\fP\fInume\fP\fB()\fP sau \fBmacros[\fP\fInume\fP\fB]()\fP.\& .PP Argumentele sunt pasate printr\-un singur argument, care este fie .PD 0 .IP \(bu 4 un singur șir, caz în care este extins și împărțit cu regulile native ale macrocomenzii .IP \(bu 4 fie un tabel, caz în care conținutul tabelului este utilizat ca argumente literale care nu sunt extinse în niciun fel. .PD .PP Exemplul 1: .nf .RS 4 macros\&.with(\&'foo\&') .fi .RE .PP Exemplul 2: .nf .RS 4 macros\&.dostuff({\&'one\&', \&'two\&', \&'three\&'}) .fi .RE .PP .SS "Returnarea datelor" Prin definiție, orice \fBprint()\fP'\&ed în Lua va ajunge în expansiunea macrocomenzii.\& Macrocomenzile Lua pot, de asemenea, \fBreturn\fP (să returneze) rezultatul, ceea ce face ca macrocomenzile de ajutor pentru programare să pară mai naturale.\& .PP Exemplu: .nf .RS 4 %sum() %{lua: local v = 0 for _, a in ipairs(arg) do v = v + tonumber(a) end return v } .fi .RE .PP .SS "Opțiuni și argumente" Macrocomenzile parametrice Lua primesc opțiunile și argumentele lor sub forma a două tabele locale \fBopt\fP și \fBarg\fP, unde \fBopt\fP conține valorile opțiunilor procesate, indexate după caracterul opțiunii, iar \fBarg\fP conține argumentele indexate numeric.\& .PP Aceste tabele sunt întotdeauna prezente, indiferent dacă opțiunile sau argumentele au fost efectiv pasate pentru a simplifica utilizarea.\& .PP Exemplu: .nf .RS 4 %foo(a:b) %{lua: if opt\&.b then print(\&'fă b\&') else print(\&'sau nu\&') end if opt\&.a == \&'s\&' then print(\&'fă s\&') end if #arg == 0 then print(\&'fără argumente :(\&') else for i = 1, #arg do print(arg[i]) end end } .fi .RE .PP .SH SCRIPTLET\-uri Lua intern poate fi utilizat ca interpret al scriptlet\-urilor de tranzacții RPM, inclusiv declanșatoarele și declanșatoarele de fișiere: .PP Exemplu: .nf .RS 4 %pre \-p print(\&'Salutare din Lua\&') .fi .RE .PP Deși venerabilul \fI/bin/sh\fP este de obicei mai convenabil pentru activitățile de scripturi legate de împachetare, interpretul Lua încorporat are câteva avantaje unice pentru scriptlet\-urile de tranzacții: acestea nu adaugă dependențe suplimentare pachetelor și astfel pot ajuta la eliminarea buclelor de dependență. Aceasta poate fi o diferență crucială în setul de pachete „bootstrap” inițial dintr\-o instalare inițială.\& .PP În special, un script Lua încorporat este singura opțiune general utilizabilă în scriplet\-urile \fB%pretrans\fP în timpul instalării inițiale a unui sistem.\& .PP Lua încorporat este, de asemenea, mult mai rapid decât executarea unui interpret potențial greoi doar pentru a rula câteva linii de script shell.\& .PP Notă: scriptlet\-urile care utilizează Lua intern nu trebuie să facă presupuneri cu privire la partajarea mediului de execuție cu alte scriptlet\-uri.\& .PP .SS Argumente Argumentele scriptlet\-ului sunt accesibile dintr\-un tabel de \fBarg\fP global.\& .PP Notă: în Lua, indexurile încep de obicei de la 1 (unu) în loc de 0 (zero) și, în bine sau în rău, implementarea RPM urmează această practică.\& Astfel, indexurile arg ale scriptlet\-ului sunt cu unu mai mici decât se așteaptă în mod normal, pe baza argumentelor tradiționale ale scriptlet\-ului.\& Argumentul care conține numărul de instanțe ale pachetului instalat este \fBarg[2]\fP, iar argumentul similar pentru țintele declanșatoare este \fBarg[3]\fP, față de \fB$1\fP și \fB$2\fP tradiționale din scripturile shell.\& .PP Exemplu: .nf .RS 4 %postun \-p if arg[2] == 0 then print("erasing") end .fi .RE .PP .SS "Pachete realocabile" Scriptlet\-urile pachetelor realocabile conțin în plus un tabel global \fBRPM_INSTALL_PREFIX\fP care conține toate prefixele posibile ale pachetului.\& .PP Adăugat: 4.18.0 .PP .SS "Starea de ieșire" Deși scriptlet\-urile nu ar trebui să poată eșua în mod normal, puteți semnaliza starea de eșec a scriptlet\-ului utilizând funcția Lua \fBerror(\fP\fImesaj\fP, [\fInivel\fP]\fB)\fP dacă este necesar.\& .PP .SH "FIȘIERELE DE SPECIFICAȚII" În contextul unei analize a fișierului \fBrpm\-spec\fP(5) cu \fBrpmbuild\fP(1) sau \fBrpmspec\fP(1), mediul RPM Lua conține următoarele tabele globale specifice specificațiilor: .PP \fBpatches\fP .RS 4 Numele fișierelor corecțiilor (plasturilor) din specificație, în ordinea în care apar în specificație.\& .PP .RE \fBpatch_nums\fP .RS 4 Numerele corecțiilor din specificație, în ordinea în care au apărut în specificație.\& .PP .RE \fBsources\fP .RS 4 Numele fișierelor surselor din specificație, în ordinea în care apar în specificație.\& .PP .RE \fBsource_nums\fP .RS 4 Numerele surselor din specificație, în ordinea în care apar în specificație.\& .PP .RE Exemplu: .nf .RS 4 for i, p in ipairs(patches) do print(string\&.format("echo %d: %sn", patch_nums[i], patches[i])) end .fi .RE .PP .SH EXTENSII În plus față de bibliotecile standard Lua (în funcție de versiunea Lua la care este legat RPM), următoarele extensii sunt disponibile în interpretul intern Lua al RPM. Acestea pot fi utilizate în toate contextele în care poate fi utilizat Lua intern.\& .PP .SS "extensie rpm" .PP Sunt disponibile următoarele funcții specifice RPM: .PP \fBb64decode(\fP\fIargument\fP\fB)\fP .RS 4 Efectuează decodificarea base64 pe argument.\& A se vedea de asemenea, b64encode().\& .PP Exemplu: .nf .RS 4 blob = \&'binary data\&' print(blob) e = rpm\&.b64encode(blob) print(e) d = rpm\&.b64decode(e) print(d) .fi .RE .PP .RE \fBb64encode(\fP\fIargument\fP [, \fIlungime\-linie\fP]\fB)\fP .RS 4 Efectuează codificarea base64 pe argument.\& Lungimea liniei poate fi specificată opțional prin al doilea argument.\& A se vedea de asemenea, b64decode().\& .PP .RE \fBdefine("\fP\fInume\fP \fIcorp\fP\fB")\fP .RS 4 Definește o macrocomandă globală \fInume\fP cu \fIcorp\fP.\& A se vedea de asemenea, secțiunea \fBMACROCOMENZI\fP.\& .PP Exemplu: .nf .RS 4 rpm\&.define(\&'foo 1\&') .fi .RE .PP .RE \fBexecute(\fP\fIrută\fP [, \fIargument1\fP [,.\&.\&.\&]\fB)\fP .RS 4 Execută o comandă externă.\& Aceasta este utilă pentru executarea comenzilor auxiliare externe fără a depinde de shell.\& \fIrută\fP este comanda de executat, urmată de un număr opțional de argumente care trebuie transmise comenzii.\& .PP Pentru un control mai bun asupra execuției procesului și a rezultatului, consultați rpm.\&spawn().\& .PP Adăugată: 4.15.0 .PP Exemplu: .nf .RS 4 rpm\&.execute(\&'ls\&', \&'\-l\&', \&'/\&') .fi .RE .RE \fBexpand(\fP\fIargument\fP\fB)\fP .RS 4 Efectuează expansiunea macrocomenzii RPM pe șirul \fIargumentului\fP.\& A se vedea de asemenea, secțiunea \fBMACROCOMENZI\fP.\& .PP Exemplu: .nf .RS 4 rpm\&.expand(\&'%{_libdir}/mydir\&') .fi .RE .PP .RE \fBglob(\fP\fImodel\fP, [\fIfanioane\fP]\fB)\fP .RS 4 Returnează un tabel cu numele de rute care corespund cu \fImodel\fP.\& Dacă \fIfanioane\fP conține \fBc\fP, returnează \fImodel\fP în cazul în care nu există coincidențe.\& .PP Exemplu: .nf .RS 4 for i, p in ipairs(rpm\&.glob(\&'*\&')) do print(p) end .fi .RE .PP .RE \fBinteractive()\fP .RS 4 Lansează sesiunea interactivă pentru testare și depanare. Utilizați în schimb \fBrpmlua\fP(1).\& .PP Exemplu: .nf .RS 4 rpm \-\-eval "%{lua: rpm\&.interactive()}" .fi .RE .PP .RE \fBisdefined(\fP\fInume\fP\fB)\fP .RS 4 Testează dacă o macrocomandă \fInume\fP este definită și dacă este parametrică, returnând două valori booleene. A se vedea de asemenea, secțiunea \fBMACROCOMENZI\fP. (Adăugată: 4.17.0) .PP Exemplu: .nf .RS 4 if rpm\&.isdefined(\&'_libdir\&') then \&.\&.\&. end .fi .RE .PP .RE \fBload(\fP\fIrută\fP\fB)\fP .RS 4 Încarcă un fișier de macrocomandă din ruta specificată.\& La fel ca macrocomanda încorporată \fB%{load:.\&.\&.\&}\fP.\& .PP Exemplu: .nf .RS 4 rpm\&.load(\&'my\&.macros\&') .fi .RE .PP .RE \fBopen(\fP\fIrută\fP, [\fImod\fP[.\&\fIfanioane\fP]]\fB)\fP .RS 4 Deschide un flux de fișiere utilizând facilitățile RPM IO, cu suport pentru comprimare și decomprimare transparentă.\& .PP \fIrută\fP este șirul numelui fișierului, urmat opțional de șirul \fImod\fP pentru a specifica comportamentul de deschidere: .PD 0 .IP \(bu 4 \fBa\fP: deschide pentru adăugare .IP \(bu 4 \fBw\fP: deschide pentru scriere, trunchiere .IP \(bu 4 \fBr\fP: deschide pentru citire (implicit) .IP \(bu 4 \fB+\fP: deschide pentru citire și scriere .IP \(bu 4 \fBx\fP: eșuează dacă fișierul există .PD .PP și, opțional, urmat de \fBrpm\-payloadflags\fP(7) pentru comprimare și decomprimare.\& .PP Adăugată: 4.17.0 .PP Exemplu: .nf .RS 4 f = rpm\&.open(\&'some\&.txt\&.gz\&', \&'r\&.gzdio\&') print(f:read()) .fi .RE .PP Obiectul rpm.\&fd returnat are următoarele metode: .PP \fBfd:close()\fP .PP Închide fluxul fișierului.\& .PP Exemplu: .nf .RS 4 f = rpm\&.open(\&'file\&') f:close() .fi .RE .PP \fBfd:flush()\fP .PP Golește fluxul fișierului.\& .PP Exemplu: .nf .RS 4 f = rpm\&.open(\&'file\&', \&'w\&') f:write(\&'foo\&') f:flush() f:close() .fi .RE .PP \fBfd:read(\fP[\fIlungime\fP]\fB)\fP .PP Citește datele din fluxul de fișiere până la \fIlungime\fP octeți sau, dacă nu este specificată, întregul fișier.\& .PP Exemplu: .nf .RS 4 f = rpm\&.open(\&'/vreun/fișier\&') print(f:read()) .fi .RE .PP \fBfd:seek(\fP\fImod\fP, \fIpoziție\fP\fB)\fP .PP Repoziționează poziția fișierului în flux.& \fImod\fP este unul dintre \fBset\fP, \fBcur\fP și \fBend\fP, iar poziția este relativă la mod: absolută, relativă la curent sau relativă la sfârșit.& Nu toate fluxurile acceptă căutarea.& .PP Returnează decalajul fișierului după operație.\& .PP A se vedea de asemenea \fBlseek\fP(3).\& .PP Exemplu: .nf .RS 4 f = rpm\&.open(\&'newfile\&', \&'w\&') f:seek(\&'set\&', 555) f:close() .fi .RE .PP \fBfd:write(\fP\fIbuffer\fP [, \fIlungime\fP]\fB)\fP .PP Scrie datele din \fIbuffer\fP în fluxul de fișiere, fie în întregime, fie până la \fIlungime\fP octeți, dacă este specificată.\& .PP Exemplu: .nf .RS 4 f = rpm\&.open(\&'newfile\&', \&'w\&') f:write(\&'data data\&') f:close() .fi .RE .PP \fBfd:reopen(\fP\fImod\fP\fB)\fP .PP Redeschide un flux cu un mod nou (a se vedea \fBrpm.\&open()\fP).\& .PP Exemplu: .nf .RS 4 rpm\&.open(\&'vreun\&.txt\&.gz\&') f = f:reopen(\&'r\&.gzdio\&') print(f:read())} .fi .RE .PP .RE \fBredirect2null(\fP\fIfdno\fP\fB)\fP (OBSOLETĂ) .RS 4 Redirecționează descriptorul de fișier fdno către /dev/null (înainte de 4.\&16, aceasta era cunoscută sub numele de posix.\&redirect2null()) .PP Această funcție este învechită și disponibilă numai pentru pachetele RPM v4, din motive de compatibilitate cu versiunile anterioare. Utilizați în schimb „rpm.spawn()” sau „rpm.execute()”.\& .PP .nf .RS 4 pid = posix\&.fork() if pid == 0 then posix\&.redirect2null(2) assert(posix\&.exec(\&'/bin/awk\&')) elseif pid > 0 then posix\&.wait(pid) end .fi .RE .PP .RE \fBspawn(\fP{\fIcomanda\fP} [, {\fIacțiuni\fP}]\fB)\fP .RS 4 Lansează, adică execută, un program extern.\& .PP {\fIcomanda\fP} este un tabel format din comandă și argumentele sale.\& Un al doilea tabel opțional poate fi utilizat pentru a transmite diverse acțiuni legate de executarea comenzii. În prezent, sunt acceptate următoarele: .PP .nf .RS 4 | Acțiune | Argument(e) | Descriere |\-\-\-\-\-\-\-\-\-\-|\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- | *stdin* | rută | Redirecționează intrarea standard către rută | *stdout* | rută | Redirecționează ieșirea standard către rută | *stderr* | rută | Redirecționează ieșirea de eroare standard către rută .fi .RE .PP Returnează starea de ieșire a comenzii: zero în caz de succes sau un tuplet de (\fBnil\fP, mesaj, cod) în caz de eșec.\& .PP Adăugată: 4.20 .PP Exemplu: .nf .RS 4 rpm\&.spawn({\&'systemctl\&', \&'restart\&', \&'httpd\&'}, {stderr=\&'/dev/null\&'}) .fi .RE .PP .RE \fBundefine(\fP\fInume\fP\fB)\fP .RS 4 Anulează definirea unei macrocomenzi.\& A se vedea și secțiunea \fBMACROCOMENZI\fP.\& .PP Rețineți că aceasta afișează doar cea mai recentă definiție a macrocomenzii cu numele dat din stivă, adică pot exista încă definiții ale macrocomenzii cu același nume după o operație de anulare a definiției.\& .PP Exemplu: .nf .RS 4 rpm\&.undefine(\&'zzz\&') .fi .RE .PP .PP .RE \fBvercmp(\fP\fIv1\fP, \fIv2\fP\fB)\fP .RS 4 Efectuează compararea versiunilor RPM pe șirurile de argumente. Returnează \-1, 0 sau 1 dacă \fIv1\fP este mai mică, egală sau mai mare decât \fIv2\fP.\& Consultați \fBrpm\-version\fP(7).\& .PP Notă: în RPM < 4.\&16, aceasta funcționa numai pe segmente de versiune, ceea ce nu produce rezultate corecte pe șiruri \fIEVR\fP complete.\& .PP Exemplu: .nf .RS 4 rpm\&.vercmp(\&'1\&.2\-1\&', \&'2\&.0\-1\&') .fi .RE .PP .RE \fBver(\fP\fIevr\fP\fB)\fP, \fBver(\fP\fIe\fP, \fIv\fP, \fIr\fP\fB)\fP .RS 4 Creează obiectul versiune RPM. Acesta acceptă fie un șir \fIevr\fP care este analizat în componentele sale, fie epoca, versiunea și lansarea în argumente separate (care pot fi șiruri sau numere).\& Obiectul are trei atribute: \fBe\fP pentru epocă, \fBv\fP pentru versiune și \fBr\fP pentru lansare, poate fi afișat în forma EVR și acceptă comparații native în Lua.\& .PP Adăugată: 4.17.0 .PP Exemplu: .nf .RS 4 v1 = rpm\&.ver(\&'5:1\&.0\-2) v2 = rpm\&.ver(3, \&'5a\&', 1) if v1 < v2 then \&.\&.\&. end if v1\&.e then \&.\&.\&. end .fi .RE .PP .RE .SS "extensie posix" .PP Biblioteca standard Lua oferă un set destul de limitat de operații de In/Ieș. Extensia \fBposix\fP îmbunătățește considerabil posibilitățile oferite de Lua.\& .PP Următoarele funcții sunt disponibile în spațiul de nume \fBposix\fP, adică pentru a le apela utilizați \fBposix.\&funcția()\fP.\& Această documentație se concentrează pe convențiile API Lua. Pentru informații suplimentare despre apelurile de sistem corespunzătoare, consultați manualul de sistem, de exemplu \fBaccess\fP(3) pentru \fBposix.\&access()\fP.\& .PP \fBaccess(\fP\fIrută\fP [, \fImod\fP]\fB)\fP .RS 4 Testează accesibilitatea fișierului/directorului \fIrută\fP.\& A se vedea \fBacces\fP(3).\& Dacă \fImod\fP este omis, se testează existența, în caz contrar se efectuează o combinație dintre următoarele teste: .PD 0 .IP \(bu 4 \fBr\fP: poate fi citit .IP \(bu 4 \fBw\fP: poate fi scis .IP \(bu 4 \fBx\fP: este executabil .IP \(bu 4 \fBf\fP: există .PD .PP Exemplu: .nf .RS 4 if posix\&.access(\&'/bin/rpm\&', \&'x\&') then \&.\&.\&. end .fi .RE .PP .RE \fBchdir(\fP\fIrută\fP\fB)\fP .RS 4 Schimbă directorul de lucru curent la \fIrută\fP.\& A se vedea \fBchdir\fP(1).\& .PP Exemplu: .nf .RS 4 posix\&.chdir(\&'/tmp\&') .fi .RE .PP .RE \fBchmod(\fP\fIrută\fP, \fImod\fP\fB)\fP .RS 4 Modifică modul fișierului/directorului.\& Modul poate fi fie un număr octal, ca în cazul apelului de sistem \fBchmod\fP(2), fie o reprezentare sub formă de șir similară cu \fBchmod\fP(1).\& .PP Exemplu: .nf .RS 4 posix\&.chmod(\&'aa\&', 600) posix\&.chmod(\&'bb\&', \&'rw\-\&') posix\&.chmod(\&'cc\&', \&'u+x\&') .fi .RE .PP .RE \fBchown(\fP\fIrută\fP, \fIutilizator\fP, \fIgrup\fP\fB)\fP .RS 4 Modifică proprietarul/grupul fișierului/directorului \fIrută\fP.\& Argumentele \fIutilizator\fP și \fIgrup\fP pot fi valori numerice de identificare sau nume de utilizator/grup.\& A se vedea \fBchown\fP(2) și \fBchown\fP(1).\& .PP Notă: Aceasta este o operație privilegiată.\& .PP Exemplu: .nf .RS 4 posix\&.chown(\&'aa\&', 0, 0) posix\&.chown(\&'bb\&', \&'nobody\&', \&'nobody\&') .fi .RE .PP .RE \fBctermid()\fP .RS 4 Obține numele terminalului de control. Consultați \fBctermid\fP(3).\& .PP Exemplu: .nf .RS 4 print(posix\&.ctermid()) .fi .RE .PP .RE \fBdir(\fP[\fIrută\fP]\fB)\fP .RS 4 Obține conținutul directorului \- ca \fBreaddir\fP(3).\& Dacă argumentul \fIrută\fP este omis, se utilizează directorul curent.\& .PP Exemplu: .nf .RS 4 for i,p in pairs(posix\&.dir(\&'/\&')) do print(p\&.\&.\&'n\&') end .fi .RE .PP .RE \fBerrno()\fP .RS 4 Obține mesajul \fBstrerror\fP(3) și numărul corespunzător pentru ieșirea \fBerrno\fP(3) curentă.\& .PP Exemplu: .nf .RS 4 f = \&'/zzz\&' if not posix\&.chmod(f, 100) then s, n = posix\&.errno() print(f, s) end .fi .RE .PP .RE \fBexec(\fP\fIrută\fP [, \fIargumete\fP.\&.\&.\&]\fB)\fP (OBSOLETĂ) .RS 4 Execută un program.\& Aceasta poate fi exectuată numai după posix.\&fork().\& .PP Această funcție este învechită și disponibilă numai pentru pachetele RPM v4, din motive de compatibilitate cu versiunile anterioare.\& Utilizați în schimb \fBrpm.\&spawn()\fP sau \fBrpm.\&execute()\fP.\& .PP .RE \fBfiles(\fP[\fIrută\fP]\fB)\fP .RS 4 Iterare peste conținutul directorului.\& Dacă ruta este omisă, se utilizează directorul curent.\& .PP Exemplu: .nf .RS 4 for f in posix\&.files(\&'/\&') do print(f\&.\&.\&'n\&') end .fi .RE .PP .RE \fBfork()\fP (OBSOLETĂ) .RS 4 Bifurcă un nou proces (dintr\-unul existent).\& A se vedea \fBfork\fP(2).\& .PP Această funcție este învechită și disponibilă numai pentru pachetele RPM v4, din motive de compatibilitate cu versiunile anterioare.\& Utilizați în schimb \fBrpm.\&spawn()\fP sau \fBrpm.\&execute()\fP.\& .PP Exemplu: .nf .RS 4 pid = posix\&.fork() if pid == 0 then posix\&.exec(\&'/foo/bar\&') elseif pid > 0 then posix\&.wait(pid) end .fi .RE .PP .RE \fBgetcwd()\fP .RS 4 Obține directorul curent.\& A se vedea \fBgetcwd\fP(3).\& .PP Exemplu: .nf .RS 4 if posix\&.getcwd() ~= \&'/\&' then \&.\&.\&. endif .fi .RE .PP .RE \fBgetenv(\fP\fInume\fP\fB)\fP .RS 4 Obține o variabilă de mediu. Consultați \fBgetenv\fP(3).\& .PP Exemplu: .nf .RS 4 if posix\&.getenv(\&'HOME\&') ~= posix\&.getcwd() then print(\&'not at home\&') end .fi .RE .PP .RE \fBgetgroup(\fP\fIgroup\fP\fB)\fP .RS 4 Obține informații \fBgrup\fP(5) pentru un grup.\& \fIgrup\fP poate fi fie un ID numeric, fie un nume de grup.\& Dacă este omis, se utilizează grupul curent.\& Returnează un tabel cu câmpurile \fBnume\fP și \fBgid\fP definite ca nume și ID de grup, respectiv, și indexuri începând de la 1 care specifică membrii grupului.\& .PP Exemplu: .nf .RS 4 print(posix\&.getgroup(\&'wheel\&')\&.gid) .fi .RE .PP .RE \fBgetlogin()\fP .RS 4 Obține numele de conectare.\& A se vedea \fBgetlogin\fP(3).\& .PP Exemplu: .nf .RS 4 n = posix\&.getlogin() .fi .RE .PP .RE \fBgetpasswd\fP([\fIutilizator\fP [, \fIselector\fP]]\fB)\fP .RS 4 Obține informații \fBpasswd\fP(5) pentru un cont de utilizator.\& \fIutilizator\fP poate fi fie un ID numeric, fie un nume de utilizator.\& Dacă este omis, se utilizează utilizatorul curent.\& Argumentul opțional \fIselector\fP poate fi unul dintre următoarele: .PD 0 .IP \(bu 4 \fBname\fP .IP \(bu 4 \fBuid\fP .IP \(bu 4 \fBgid\fP .IP \(bu 4 \fBdir\fP .IP \(bu 4 \fBshell\fP .IP \(bu 4 \fBgecos\fP .IP \(bu 4 \fBpasswd\fP .PD .PP Dacă este omis, se returnează un tabel cu toate aceste câmpuri.\& .PP Exemplu: .nf .RS 4 pw = posix\&.getpasswd(posix\&.getlogin(), \&'shell\&')| .fi .RE .PP .RE \fBgetprocessid(\fP[\fIselector\fP]\fB)\fP .RS 4 Obține informații despre procesul curent.\& Argumentul opțional \fIselector\fP poate fi unul dintre .PD 0 .IP \(bu 4 \fBegid\fP: ID\-ul grupului efectiv .IP \(bu 4 \fBeuid\fP: ID\-ul utilizatorului efectiv .IP \(bu 4 \fBgid\fP: ID\-ul grupului .IP \(bu 4 \fBuid\fP: ID\-ul utilizatorului .IP \(bu 4 \fBpgrp\fP: id\-ul grupului părinte .IP \(bu 4 \fBpid\fP: id\-ul procesului .IP \(bu 4 \fBppid\fP: pid\-ul părinte .PD .PP Dacă este omis, se returnează un tabel cu toate aceste câmpuri.\& .PP Exemplu: .nf .RS 4 if posix\&.getprocessid(\&'pid\&') == 1 then \&.\&.\&. end .fi .RE .PP .RE \fBkill(\fP\fIpid\fP [, \fIsemnal\fP]\fB)\fP .RS 4 Trimite un \fBsemnal\fP(7) către un proces.\& \fIsemnal\fP trebuie să fie o valoare numerică, de exemplu \fB9\fP pentru \fBSIGKILL\fP.\& Dacă este omis, se utilizează \fBSIGTERM\fP.\& A se vedea de asemenea, \fBkill\fP(2).\& .PP Exemplu: .nf .RS 4 posix\&.kill(posix\&.getprocessid(\&'pid\&')) .fi .RE .PP .RE \fBlink(\fP\fIruta\-veche\fP, \fIruta\-nouă\fP\fB)\fP .RS 4 Creează un nou nume la \fIruta\-nouă\fP pentru un fișier de la \fIruta\-veche\fP, cunoscut și sub numele de legătură dură.\& A se vedea de asemenea, \fBlink\fP(2).\& .PP Exemplu: .nf .RS 4 f = rpm\&.open(\&'aaa\&', \&'w\&') posix\&.link(\&'aaa\&', \&'bbb\&') .fi .RE .PP .RE \fBmkdir(\fP\fIrută\fP\fB)\fP .RS 4 Creează un nou director la \fIrută\fP.\& A se vedea de asemenea, \fBmkdir\fP(2).\& .PP Exemplu: .nf .RS 4 posix\&.mkdir(\&'/tmp\&') .fi .RE .PP .RE \fBmkfifo(\fP\fIrută\fP\fB)\fP .RS 4 Creează o FIFO, adică o conductă cu nume, la \fIrută\fP.\& A se vedea de asemenea, \fBmkfifo\fP(2).\& .PP Exemplu: .nf .RS 4 posix\&.mkfifo(\&'/tmp/loc\-greșit\&') .fi .RE .PP .RE \fBpathconf(\fP\fIrută\fP [, \fIselector\fP]\fB)\fP .RS 4 Obține informații \fBpathconf\fP(3) pentru \fIrută\fP.\& Argumentul opțional \fIselector\fP poate fi unul dintre următoarele .PD 0 .IP \(bu 4 \fBlink_max\fP .IP \(bu 4 \fBmax_canon\fP .IP \(bu 4 \fBmax_input\fP .IP \(bu 4 \fBname_max\fP .IP \(bu 4 \fBpath_max\fP .IP \(bu 4 \fBpipe_buf\fP .IP \(bu 4 \fBchown_restricted\fP .IP \(bu 4 \fBno_trunc\fP .IP \(bu 4 \fBvdisable\fP.\& .PD .PP Dacă este omis, se returnează un tabel cu toate aceste câmpuri.\& .PP Exemplu: .nf .RS 4 posix\&.pathconf(\&'/\&', \&'path_max\&') .fi .RE .PP .RE \fBputenv(\fP\fIșir\fP\fB)\fP .RS 4 Modifică sau adaugă o variabilă de mediu.\& A se vedea de asemenea, \fBputenv\fP(3).\& .PP Exemplu: .nf .RS 4 posix\&.putenv(\&'HOME=/me\&') .fi .RE .PP .RE \fBreadlink(\fP\fIrută\fP\fB)\fP .RS 4 Citește valoarea legăturii simbolice de la \fIrută\fP.\& A se vedea de asemenea, \fBreadlink\fP(2).\& .PP Exemplu: .nf .RS 4 posix\&.mkdir(\&'aaa\&') posix\&.symlink(\&'aaa\&', \&'bbb\&') print(posix\&.readlink(\&'bbb\&')) .fi .RE .PP .RE \fBrmdir(\fP\fIrută\fP\fB)\fP .RS 4 Elimină un director \fIrută\fP.\& A se vedea de asemenea, \fBrmdir\fP(2).\& .PP Exemplu: .nf .RS 4 posix\&.rmdir(\&'/tmp\&') .fi .RE .PP .RE \fBsetgid(\fP\fIgrup\fP\fB)\fP .RS 4 Stabilește identitatea grupului.\& \fIgrup\fP poate fi specificat fie ca un identificator numeric, fie ca nume de grup.\& A se vedea de asemenea, \fBsetgid\fP(2).\& .PP Notă: Aceasta este o operație privilegiată.\& .PP .RE \fBsetuid(\fP\fIutilizator\fP\fB)\fP .RS 4 Stabilește identitatea utilizatorului.& \fIutilizator\fP poate fi specificat fie ca un ID numeric, fie ca nume de utilizator.& A se vedea de asemenea, \fBsetuid\fP(2).& .PP Notă: Aceasta este o operație privilegiată.\& .PP Exemplu: .nf .RS 4 posix\&.setuid(\&'nobody\&') .fi .RE .PP .RE \fBsleep(\fP\fIsecunde\fP\fB)\fP .RS 4 Adoarme pentru o durată de \fIsecunde\fP.\& A se vedea de asemenea, \fBsleep\fP(3).\& .PP Exemplu: .nf .RS 4 posix\&.sleep(5) .fi .RE .PP .RE \fBstat(\fP\fIrută\fP [, \fIselector\fP]\fB)\fP .RS 4 Obține informații despre fișierul \fBstat\fP(3) din \fIrută\fP.\& Selectorul opțional \fIselector\fP poate fi unul dintre următoarele .PD 0 .IP \(bu 4 \fBmode\fP .IP \(bu 4 \fBino\fP .IP \(bu 4 \fBdev\fP .IP \(bu 4 \fBnlink\fP .IP \(bu 4 \fBuid\fP .IP \(bu 4 \fBgid\fP .IP \(bu 4 \fBsize\fP .IP \(bu 4 \fBatime\fP .IP \(bu 4 \fBmtime\fP .IP \(bu 4 \fBctime\fP .IP \(bu 4 \fBtype\fP.\& .PD .PP Dacă este omis, se returnează un tabel cu toate aceste câmpuri.\& .PP Exemplu: .nf .RS 4 print(posix\&.stat(\&'/tmp\&', \&'mode\&'))| s1 = posix\&.stat(\&'f1\&') s2 = posix\&.stat(\&'f2\&') if s1\&.ino == s2\&.ino and s1\&.dev == s2\&.dev then \&.\&.\&. end .fi .RE .PP .RE \fBssymlink(\fP\fIruta\-veche\fP, \fIruta\-nouă\fP\fB)\fP .RS 4 Creează o legătură simbolică la \fIruta\-nouă\fP către \fIruta\-veche\fP.\& A se vedea de asemenea, \fBsymlink\fP(2).\& .PP Exemplu: .nf .RS 4 posix\&.mkdir(\&'aaa\&') posix\&.symlink(\&'aaa\&', \&'bbb\&') .fi .RE .PP .RE \fBsysconf(\fP[\fIselector\fP]\fB)\fP .RS 4 Obține informații \fBsysconf\fP(3). Argumentul opțional \fIselector\fP poate fi unul dintre următoarele: .PD 0 .IP \(bu 4 \fBarg_max\fP .IP \(bu 4 \fBchild_max\fP .IP \(bu 4 \fBclk_tck\fP .IP \(bu 4 \fBngroups_max\fP .IP \(bu 4 \fBstream_max\fP .IP \(bu 4 \fBtzname_max\fP .IP \(bu 4 \fBopen_max\fP .IP \(bu 4 \fBjob_control\fP .IP \(bu 4 \fBsaved_ids\fP .IP \(bu 4 \fBversion\fP.\& .PD .PP Dacă este omis, se returnează un tabel cu toate aceste câmpuri.\& .PP Exemplu: .nf .RS 4 posix\&.sysconf(\&'open_max\&')| .fi .RE .PP .RE \fBtimes(\fP[\fIselector\fP]\fB)\fP .RS 4 Obține procesul și procesul\-copil așteptat \fBtimes\fP(2).\& Argumentul opțional \fIselector\fP poate fi unul dintre .PD 0 .IP \(bu 4 \fButime\fP .IP \(bu 4 \fBstime\fP .IP \(bu 4 \fBcutime\fP .IP \(bu 4 \fBcstime\fP .IP \(bu 4 \fBelapsed\fP .PD .PP Dacă este omis, se returnează un tabel cu toate aceste câmpuri.\& .PP Exemplu: .nf .RS 4 t = posix\&.times() print(t\&.utime, t\&.stime) .fi .RE .PP .RE \fBttyname(\fP[\fIfd\fP]\fB)\fP .RS 4 Obține numele unui terminal asociat cu descriptorul de fișier \fIfd\fP.\& Dacă \fIfd\fP este omis, se utilizează \fB0\fP (cunoscut și sub numele de intrarea standard).\& A se vedea \fBttyname\fP(3).\& .PP Exemplu: .nf .RS 4 if not posix\&.ttyname() then \&.\&.\&. endif .fi .RE .PP .RE \fBumask(\fP[\fImod\fP]\fB)\fP .RS 4 Obține sau definește procesul \fBumask\fP(2).\& \fImod\fP poate fi specificat ca număr octal sau șir de moduri similar cu \fBposix.\&chmod()\fP.\& .PP Exemplu: .nf .RS 4 print(posix\&.umask()) posix\&.umask(222) posix\&.umask(\&'ug\-w\&') posix\&.umask(\&'rw\-rw\-r\-\-\&') .fi .RE .PP .RE \fBuname(\fP\fIformat\fP\fB)\fP .RS 4 Obține informații \fBuname\fP(2) despre sistemul curent.\& Sunt acceptate următoarele directive de format: .PP .PD 0 .IP \(bu 4 \fB%m\fP: Numele tipului de hardware .IP \(bu 4 \fB%n\fP: Numele acestui nod (mașini) .IP \(bu 4 \fB%r\fP: Nivelul actual de lansare al acestei implementări .IP \(bu 4 \fB%s\fP: Numele acestui sistem de operare .IP \(bu 4 \fB%v\fP: Nivelul actual al versiunii acestei implementări .PD .PP Exemplu: .nf .RS 4 print(posix\&.uname(\&'%s %r\&')) .fi .RE .PP .RE \fButime(\fP\fIrută\fP [, \fImtime\fP [, \fIctime\fP]]\fB)\fP .RS 4 Modifică ora ultimei accesări și modificări. mtime și ctime sunt exprimate în secunde de la epocă. A se vedea \fButime\fP(2).\& .PP Dacă \fImtime\fP sau \fIctime\fP sunt omise, se utilizează ora curentă, similar cu \fBtouch\fP(1).\& .PP Exemplu: .nf .RS 4 posix\&.mkdir(\&'aaa\&') posix\&.utime(\&'aaa\&', 0, 0) .fi .RE .PP .RE \fBwait(\fP[\fIpid\fP]\fB)\fP (DEPRECIATĂ) .RS 4 Așteaptă un proces\-copil.\& Dacă este specificat \fIpid\fP, așteaptă acel proces\-copil particular. A se vedea de asemenea, \fBwait\fP(2).\& .PP Această funcție este învechită și disponibilă numai pentru pachetele RPM v4, din motive de compatibilitate cu versiunile anterioare.\& Utilizați în schimb \fBrpm.\&spawn()\fP sau \fBrpm.\&execute()\fP.\& .PP Exemplu: .nf .RS 4 pid = posix\&.fork() if pid == 0 then posix\&.exec(\&'/bin/ls\&')) elseif pid > 0 then posix\&.wait(pid) end .fi .RE .PP .PP .RE \fBsetenv(\fP\fInume\fP, \fIvaloare\fP [, \fIînlocuirea\fP]\fB)\fP .RS 4 Modifică sau adaugă variabila de mediu \fInume\fP.\& Parametrul opțional \fIînlocuirea\fP este o valoare booleană care definește comportamentul atunci când există deja o variabilă cu același nume.\& A se vedea de asemenea, \fBsetenv\fP(3).\& .PP Exemplu: .nf .RS 4 posix\&.setenv(\&'HOME\&', \&'/me\&', true) .fi .RE .PP .RE \fBunsetenv(\fP\fInume\fP\fB)\fP .RS 4 Elimină variabila \fInume\fP din mediu.\& A se vedea de asemenea, \fBunsetenv\fP(3).\& .PP Exemplu: .nf .RS 4 posix\&.unsetenv(\&'HOME\&') .fi .RE .PP .RE .SH "EXTINDEREA ȘI PERSONALIZAREA" La inițializare, RPM execută un script global de inițializare Lua \fIinit.\&lua\fP din directorul \fB%getconfdir\fP, de obicei \fI/usr/lib/rpm/init.\&lua\fP.\& Acesta poate fi utilizat pentru a personaliza mediul Lua rpm fără a recompila RPM.\& .PP Pentru interpretul Lua încorporat, modulele încărcate cu \fBrequire\fP sunt căutate în primul rând în \fB%{getconfdir}/lua/\fP. \fB%_rpmluadir\fP este o prescurtare pentru această rută.\& .PP .SH "CONSULTAȚI ȘI" \fBrpm\-macros\fP(7) \fBrpm\-payloadflags\fP(7) \fBrpmlua\fP(1) \fBrpm\-version\fP(7) .PP \fBhttps://www.\&lua.\&org/\fP .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .