.\" -*- 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 januari 2026" "RPM 6.0.1" .PP .SH NAMN .PP rpm\-lua — RPM\-inbäddad Lua\-tolk .PP .SH SYNOPSIS .PP %scriptlet \-p .PP %{lua:…\&} .PP .SH BESKRIVNING Lua är ett generellt programmeringsspråk specifikt designat för att bäddas in i andra program, och RPM inkluderar en inbäddad Lua\-tolk som kan användas i avancerade \fBrpm\-macros\fP(7) och transaktionsskript.\& .PP Den inbäddade Lua\-tolken gör diverse saker möjligt som är svåra eller omöjliga med vanliga makron eller externa skalskript, såsom hjälp att eliminera beroendeslingor från paketskript.\& .PP .SH MAKRON .SS "Komma åt makron" \fBRpm\fP\-utökningen har diverse funktioner för att arbeta med makron, men det bekvämaste sättet att komma åt \fBrpm\-macroproc\fP(7) från RPM\-Lua\-miljön är via den globala \fBmacros\fP\-tabellen.\& .PP Lua gör ingen skillnad mellan tabellindex och fältnamnssyntax så \fBmacros.\&apa\fP och \fBmacros['\&apa'\&]\fP är likvärdiga, använd vad som passar bäst för ändamålet.\& .PP Som i en verklig Lua\-tabell returneras poster som inte finns som \fBnil\fP, och tilldelning kan användas för att definiera eller avdefiniera makron.\& .PP Exempel: .nf .RS 4 if not macros\&.ditt then macros\&.mitt = \&'mitt makro\&' 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 All macros share the same global Lua execution environment.\& .PP .SS "Anrop av parametriserade makron" Parametriserade makron (inklusive alla inbyggda makron) kan anropas på ett normalt Lua\-sätt via tabellen \fBmacros\fP, med antingen syntaxen \fBmacros.\&\fP\fInamn\fP\fB()\fP eller \fBmacros[\fP\fInamn\fP\fB]()\fP.\& .PP Argument skickas via ett enda argument, som är antingen .PD 0 .IP \(bu 4 en enda sträng, i vilket fall den expanderas och delas med vanliga makroregler .IP \(bu 4 en tabell, i vilket fall tabellinnehållet används som bokstavliga argument som inte expanderas på något sätt .PD .PP Exempel 1: .nf .RS 4 macros\&.med(\&apa\&') .fi .RE .PP Exempel 2: .nf .RS 4 macros\&.jobba({\&'ett\&', \&'två\&', \&'tre\&'}) .fi .RE .PP .SS "Returnera data" By definition, anything \fBprint()\fP'\&ed in Lua will end up in the macro expansion.\& Lua macros can also \fBreturn\fP their output, which makes programming helper macros look more natural.\& .PP Exempel: .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 "Flaggor och argument" Parametriserade Lua\-makron får sina flaggor och argument som två lokala tabeller \fBopt\fP och \fBarg\fP, där \fBopt\fP innehåller bearbetade flaggvärden med flaggbokstaven som nyckel, och \fBarg\fP innehåller argument med numeriska index.\& .PP Dessa tabeller finns alltid oavsett huruvida flaggor eller argument faktiskt skickades för att förenkla användningen.\& .PP Exempel: .nf .RS 4 %apa(a:b) %{lua: if opt\&.b then print(\&'gör b\&') else print(\&'eller inte\&') end if opt\&.a == \&'s\&' then print(\&'gör s\&') end if #arg == 0 then print(\&'inga arument :(\&') else for i = 1, #arg do print(arg[i]) end end } .fi .RE .PP .SH SKRIPT Den interna Lua:n kan användas som tolk av RPM i transaktionsskript, inklusive utlösare och filutlösare: .PP Exempel: .nf .RS 4 %pre \-p print(\&'Hej från Lua\&') .fi .RE .PP Medan den ärevördiga \fI/bin/sh\fP vanligen är mer bekväm för paketrelaterade skriptaktiviteter har den inbäddadde Lua\-tolken några unika fördelar för transaktionsskript: de lägger inte till några extra beroenden till paketet och kan på så sätt hjälpa till att eliminera beroendeslingor.\& Detta kan vara en avgörande skillnad i den tidiga uppsättningen ”uppstartspaket” i den initiala installationen.\& .PP Speciellt är ett inbäddat Lua\-skript den enda allmänt användbara möjligheten i \fB%pretrans\fP\-skript under den initiala installationen av ett system.\& .PP Inbäddad Lua är också mycket snabbare än att köra en potentiellt tungviktig tolk bara för att köra ett par rader i ett skalskript.\& .PP Observera: skript som använder den interna Lua:n skall inte göra antaganden om att dela körmiljö med andra skript.\& .PP .SS Argument Skriptargument är tillgängliga från en global tabell \fBarg\fP.\& .PP Observera: i Lua startar index normalt på 1 (ett) istället för 0 (noll), och på gott och ont följer RPM\-implementationen denna praktik.\& Skriptens argumentindex skiljer alltså ett steg från de vanliga förväntningarna baserade på traditionella skriptargument.\& Argumentet som innehåller antalet installerade paketinstanser är \fBarg[2]\fP och det liknande argumentet till utlösarmål är \fBarg[3]\fP, till skillnad mot det vanliga \fB$1\fP och \fB$2\fP i skalskript.\& .PP Exempel: .nf .RS 4 %postun \-p if arg[2] == 0 then print("raderar") end .fi .RE .PP .SS "Omlokaliserbara paket" Skript i omlokaliserbara paket får dessutom en global tabell \fBRPM_INSTALL_PREFIX\fP som innehåller alla möjliga prefix i paketet.\& .PP Tillagt i: 4.\&18.\&0 .PP .SS Slutstatus Även om skript normalt inte skall tillåtas att misslyckas kan man signalera felstatus från skript genom att använda Lua:s funktion \fBerror(\fP\fImedd\fP, [\fInivå\fP]\fB)\fP om man behöver det. .PP .SH SPEC\-FILER I sammanhanget av en \fBrpm\-spec\fP(5)\-filtolkning med \fBrpmbuild\fP(1) eller \fBrpmspec\fP(1) innehåller RPM\-Lua\-miljön följande spec\-specifika globala tabeller: .PP \fBpatches\fP .RS 4 Filnamnen på patcharna i spec:en, i den ordning de förekom i spec:en.\& .PP .RE \fBpatch_nums\fP .RS 4 Numren på patcharna i spec:en, i den ordning de förekom i spec:en.\& .PP .RE \fBsources\fP .RS 4 Filnamnen på källkoden i spec:en, i den ordning de förekom i spec:en.\& .PP .RE \fBsource_nums\fP .RS 4 Filnamnen på källkoden i spec:en, i den ordning de förekom i spec:en.\& .PP .RE Exempel: .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 UTÖKNINGAR Utöver Lua:s standardbibliotek (med förbehåll för Lua\-versionen RPM är länkad med) är följande utökningar tillgängliga i alla sammanhang där den interna Lua:n kan användas.\& .PP .SS rpm\-utökningar .PP Följande RPM\-specifika funktioner är tillgängliga: .PP \fBb64decode(\fP\fIarg\fP\fB)\fP .RS 4 Utför base64\-avkodning av argumentet.\& Se även b64encode().\& .PP Exempel: .nf .RS 4 blob = \&'binärdata\&' print(blob) e = rpm\&.b64encode(blob) print(e) d = rpm\&.b64decode(e) print(d) .fi .RE .PP .RE \fBb64encode(\fP\fIarg\fP [, \fIradlängd\fP]\fB)\fP .RS 4 Utför base64\-kodning av argumentet.\& Radlängden får specificeras via ett andra argument.\& Se även b64decode().\& .PP .RE \fBdefine("\fP\fInamn\fP \fIkropp\fP\fB")\fP .RS 4 Definiera ett globalt makro \fInamn\fP till \fIkropp\fP.\& Se även \fBMAKRON\fP.\& .PP Exempel: .nf .RS 4 rpm\&.define(\&'apa 1\&') .fi .RE .PP .RE \fBexecute(\fP\fIsökväg\fP [, \fIarg1\fP [,…\&]\fB)\fP .RS 4 Kör ett externt kommando.\& Detta är praktiskt för att köra externa hjälpkommandon utan att vara beroende av skalet.\& \fIsökväg\fP är kommandot att köra, följt av ett valfritt antal argument att skicka till kommandot.\& .PP För bättre styrning av processkörningen och utdata, se rpm.\&spawn().±& .PP Tillagt i: 4.\&15.\&0 .PP Exempel: .nf .RS 4 rpm\&.execute(\&'ls\&', \&'\-l\&', \&'/\&') .fi .RE .RE \fBexpand(\fP\fIarg\fP\fB)\fP .RS 4 Utför RPM\-makroexpansion av strängen \fIarg\fP.\& Se även \fBMAKRON\fP.\& .PP Exempel: .nf .RS 4 rpm\&.expand(\&'%{_libdir}/minkat\&') .fi .RE .PP .RE \fBglob(\fP\fImönster\fP, [\fIflaggor\fP]\fB)\fP .RS 4 Returnera en tabell med sökvägar som matchar \fImönster\fP.\& Om \fIflaggor\fP innehåller \fBc\fP, returnera \fImönster\fP ifall inget matchar.\& .PP Exempel: .nf .RS 4 for i, p in ipairs(rpm\&.glob(\&'*\&')) do print(p) end .fi .RE .PP .RE \fBinteractive()\fP .RS 4 Starta en interaktiv session för testning och felsökning.\& Använd \fBrpmlua\fP(1) istället.\& .PP Exempel: .nf .RS 4 rpm \-\-eval "%{lua: rpm\&.interactive()}" .fi .RE .PP .RE \fBisdefined(\fP\fInamn\fP\fB)\fP .RS 4 Testa huruvida makrot \fInamn\fP är definierat och huruvida det är parametriskt, returnerar två booleaner.\& Se även \fBMAKRON\fP.\& (Tillagt i 4.\&17.\&0) .PP Exempel: .nf .RS 4 if rpm\&.isdefined(\&'_libdir\&') then …\& end .fi .RE .PP .RE \fBload(\fP\fIsökväg\fP\fB)\fP .RS 4 Ladda en makrofil från den givna sökvägen.\& Samma som det inbyggda makrot \fB%{load:…\&}\fP.\& .PP Exempel: .nf .RS 4 rpm\&.load(\&'mina\&.makron\&') .fi .RE .PP .RE \fBopen(\fP\fIsökväg\fP, [\fIläge\fP[.\&\fIflaggor\fP]]\fB)\fP .RS 4 Öppna en filström med RPM:s IO\-funktioner, med stöd för transparent komprimering och dekomprimering.\& .PP \fIpath\fP is filename string, optionally followed with \fImode\fP string to specify open behavior: .PD 0 .IP \(bu 4 \fBa\fP: öppna för tillägg på slutet .IP \(bu 4 \fBw\fP: öppna för skrivning, hugg av .IP \(bu 4 \fBr\fP: öppna för läsning (standard) .IP \(bu 4 \fB+\fP: öppna för läsning och skrivning .IP \(bu 4 \fBx\fP: misslyckas om filen redan finns .PD .PP och eventuellt följd av \fBrpm\-payloadflags\fP(7) för komprimering och dekomprimering.\& .PP Tillagt i: 4.\&17.\&0 .PP Exempel: .nf .RS 4 f = rpm\&.open(\&'någon\&.txt\&.gz\&', \&'r\&.gzdio\&') print(f:read()) .fi .RE .PP Det returnerade rpm.\&fd\-objektet har följande metoder: .PP \fBfd:close()\fP .PP Stäng filströmmen.\& .PP Exempel: .nf .RS 4 f = rpm\&.open(\&'fil\&') f:close() .fi .RE .PP \fBfd:flush()\fP .PP Töm filströmmen.\& .PP Exempel: .nf .RS 4 f = rpm\&.open(\&'fil\&', \&'w\&') f:write(\&'apa\&') f:flush() f:close() .fi .RE .PP \fBfd:read(\fP[\fIlängd\fP]\fB)\fP .PP Läs data från filströmmen upp till \fIlängd\fP byte eller om det inte angetts, hela filen.\& .PP Exempel: .nf .RS 4 f = rpm\&.open(\&'/någon/fil\&') print(f:read()) .fi .RE .PP \fBfd:seek(\fP\fIläge\fP, \fIavstånd\fP\fB)\fP .PP Positionera om filavståndet i strömmen.\& \fIläge\fP är en av \fBset\fP, \fBcur\fP och \fBend\fP, och avståndet är relativt läget: absolut, relativt aktuellt eller relativt slutet.\& Inte alla strömmar stödjer att söka.\& .PP Returnerar filavståndet efter åtgärden.\& .PP Se även \fBlseek\fP(3).\& .PP Exempel: .nf .RS 4 f = rpm\&.open(\&'nyfil\&', \&'w\&') f:seek(\&'set\&', 555) f:close() .fi .RE .PP \fBfd:write(\fP\fIbuf\fP [, \fIlängd\fP]\fB)\fP .PP Skriv data i \fIbuf\fP till filströmmen, antingen i sin helhet eller upp till \fIlängd\fP byte om angett.\& .PP Exempel: .nf .RS 4 f = rpm\&.open(\&'nyfil\&', \&'w\&') f:write(\&'data data\&') f:close() .fi .RE .PP \fBfd:reopen(\fP\fIläge\fP\fB)\fP .PP Öppna om en ström i ett nytt läge (se \fBrpm.\&open()\fP).\& .PP Exempel: .nf .RS 4 rpm\&.open(\&någon\&.txt\&.gz\&') f = f:reopen(\&'r\&.gzdio\&') print(f:read())} .fi .RE .PP .RE \fBredirect2null(\fP\fIfdnr\fP\fB)\fP (FÖRÅLDRAT) .RS 4 Omdirigera filbeskrivare fdnr till /dev/null (före 4.\&16 var detta känt som posix.\&redirect2null()) .PP Denna funktion är föråldrad och bara tillgänglig för RPM v4\-paket för bakåtkompatibilitet.\& använd ”rpm.\&spawn()” eller ”rpm.\&execute()” istället.\& .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{\fIkommando\fP} [, {\fIåtgärder\fP}]\fB)\fP .RS 4 Yngla av, även känt som kör, ett externt program.\& .PP {\fIkommando\fP} är en tabell som består av kommandot och dess argument.\& En frivillig andra tabell kan användas för att skicka diverse åtgärder relaterade till kommandokörningen, för närvarande stödjs: .PP .nf .RS 4 | Åtgärd | Argument | Beskrivning |\-\-\-\-\-\-\-\-\-|\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- | *stdin* | sökväg | Omdirigera standard in till sökväg | *stdout*| sökväg | Omdirigera standard ut till sökväg | *stderr*| sökväg | Omdirigera standard fel till sökväg .fi .RE .PP Returnerar kommandots slutstatus: noll om det gick bra, eller en tupel av (\fBnil\fP, meddelande, kod) om det misslyckades.\& .PP Tillagt i: 4.\&20 .PP Exempel: .nf .RS 4 rpm\&.spawn({\&'systemctl\&', \&'restart\&', \&'httpd\&'}, {stderr=\&'/dev/null\&'}) .fi .RE .PP .RE \fBundefine(\fP\fInamn\fP\fB)\fP .RS 4 Avdefiniera ett makro.\& Se även \fBMACRON\fP.\& .PP Observera att detta endast plockar bort den senaste makrodefinitionen av det givna namnet från stacken, d.\&v.\&s.\& det kan fortfarande finnas makrodefinitioner med samma namn efter åtgärden undefine.\& .PP Exempel: .nf .RS 4 rpm\&.undefine(\&'zzz\&') .fi .RE .PP .PP .RE \fBvercmp(\fP\fIv1\fP, \fIv2\fP\fB)\fP .RS 4 Utför jämförelse av RPM\-versioner på argumentsträngar.\& Returnerar \-1, 0 eller 1 om \fIv1\fP är mindre än, lika med eller större än \fIv2\fP.\& Se \fBrpm\-version\fP(7).\& .PP Observera: i RPM < 4.\&16 arbetade detta endast på versionssegment, vilket inte producerar korrekta resultat på fullständiga \fIEVR\fP\-strängar.\& .PP Exempel: .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 Skapa RPM\-versionsojbekt.\& Detta tar antingen en \fIevr\fP\-sträng som tolkas till dess komponenter, eller epok, version och utgåva i separata argument (vilka kan vara antingen strängar eller tal).\& Objektet har tre attribut: \fBe\fP för epok, \fBv\fP för version och \fBr\fP for utgåva, kan skrivas i sin EVR\-form och stödjer inbyggd jämförelse i Lua.\& .PP Tillagt i: 4.\&17.\&0 .PP Exempel: .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 posix\-utvidgningar .PP Lua:s standardibliotek erbjuder en ganska begränsad uppsättning io\-åtgärder.\& Utvidgningen \fBposix\fP utökar kraftigt vad som kan göras från Lua.\& .PP Följande funktioner är tillgängliga i namnrymden \fBposix\fP, d.\&v.\%s\& för att anropa dem använd \fBposix.\&funktion()\fP.\& Denna dokumentation koncentrerar sig på Lua:s API\-konventioner, för ytterligare information om motsvarande systemanrop referera systemmanualen, t.\&ex.\& \fBaccess\fP(3) för \fBposix.\&access()\fP.\& .PP \fBaccess(\fP\fIsökväg\fP [, \fIläge\fP]\fB)\fP .RS 4 Testa åtkomligheten för filen/katalogen \fIsökväg\fP.\& Se \fBaccess\fP(3).\& Om \fIläge\fP utelämnas testas existensen, annars är det en kombination av följande tester: .PD 0 .IP \(bu 4 \fBr\fP: läsbar .IP \(bu 4 \fBw\fP: skrivbar .IP \(bu 4 \fBx\fP: körbar .IP \(bu 4 \fBf\fP: finns .PD .PP Exempel: .nf .RS 4 if posix\&.access(\&'/bin/rpm\&', \&'x\&') then …\& end .fi .RE .PP .RE \fBchdir(\fP\fIsökväg\fP\fB)\fP .RS 4 Ändra aktuell arbetskatalog till \fIsökväg\fP.\& Se \fBchdir\fP(1).\& .PP Exempel: .nf .RS 4 posix\&.chdir(\&'/tmp\&') .fi .RE .PP .RE \fBchmod(\fP\fIsökväg\fP, \fIläge\fP\fB)\fP .RS 4 Change file/directory mode.\& Mode can be either an octal number as for \fBchmod\fP(2) system call, or a string presentation similar to \fBchmod\fP(1).\& .PP Exempel: .nf .RS 4 posix\&.chmod(\&'aa\&', 600) posix\&.chmod(\&'bb\&', \&'rw\-\&') posix\&.chmod(\&'cc\&', \&'u+x\&') .fi .RE .PP .RE \fBchown(\fP\fIsökväg\fP, \fIanvändare\fP, \fIgrupp\fP\fB)\fP .RS 4 Ändra filen/katalogen \fIsökväg\fPs ägare/grupp.\& Argumenten \fIanvändare\fP och \fIgrupp\fP kan antingen vara numeriska id\-värden eller användar\-/gruppnamn.\& Se \fBchown\fP(2) och \fBchown\fP(1).\& .PP Observera: detta är en privilegierad åtgärd.\& .PP Exempel: .nf .RS 4 posix\&.chown(\&'aa\&', 0, 0) posix\&.chown(\&'bb\&', \&'nobody\&', \&'nobody\&') .fi .RE .PP .RE \fBctermid()\fP .RS 4 Hämta den styrande terminalens namn.\& Se \fBctermid\fP(3).\& .PP Exempel: .nf .RS 4 print(posix\&.ctermid()) .fi .RE .PP .RE \fBdir(\fP[\fIsökväg\fP]\fB)\fP .RS 4 Hämta katalogens innehåll — som \fBreaddir\fP(3).\& Om \fIsökväg\fP utelämnas används den aktuella katalogen.\& .PP Exempel: .nf .RS 4 for i,p in pairs(posix\&.dir(\&'/\&')) do print(p\&.\&.\&'n\&') end .fi .RE .PP .RE \fBerrno()\fP .RS 4 Hämta \fBstrerror\fP(3)\-meddelandet och motsvarande nummer för det aktuella \fBerrno\fP(3).\& .PP Exempel: .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\fIsökväg\fP [, \fIarg\fP…\&]\fB)\fP (FÖRÅLDRAT) .RS 4 Kör ett program.\& Detta får bara utföras efter posix.\&fork().\& .PP Denna funktion är föråldrad och endast tillgänglig för bakåtkompatibilitet med RPM v4\-paket.\& Använd \fBrpm.\&spawn()\fP eller \fBrpm.\&execute()\fP istället.\& .PP .RE \fBfiles(\fP[\fIsökväg\fP]\fB)\fP .RS 4 Iterera över kataloginnehåll.\& Om sökväg utelämnas används den aktuella katalogen.\& .PP Exempel: .nf .RS 4 for f in posix\&.files(\&'/\&') do print(f\&.\&.\&'n\&') end .fi .RE .PP .RE \fBfork()\fP (FÖRÅLDRAT) .RS 4 Grena av en ny process.\& Se \fBfork\fP(2).\& .PP Denna funktion är föråldrad och endast tillgänglig för bakåtkompatibilitet med RPM v4\-paket.\& Använd \fBrpm.\&spawn()\fP eller \fBrpm.\&execute()\fP istället.\& .PP Exempel: .nf .RS 4 pid = posix\&.fork() if pid == 0 then posix\&.exec(\&'/apa/bepa\&') elseif pid > 0 then posix\&.wait(pid) end .fi .RE .PP .RE \fBgetcwd()\fP .RS 4 Get current directory.\& See \fBgetcwd\fP(3).\& .PP Exempel: .nf .RS 4 if posix\&.getcwd() ~= \&'/\&' then …\& endif .fi .RE .PP .RE \fBgetenv(\fP\fInamn\fP\fB)\fP .RS 4 Hämta en miljövariabel.\& Se \fBgetenv\fP(3).\& .PP Exempel: .nf .RS 4 if posix\&.getenv(\&'HOME\&') ~= posix\&.getcwd() then print(\&'inte hemma\&') end .fi .RE .PP .RE \fBgetgroup(\fP\fIgrupp\fP\fB)\fP .RS 4 Hämta \fBgroup\fP(5)\-information om en grupp.\& \fIgrupp\fP kan antingen vara ett numeriskt id eller ett gruppnamn.\& Om utelämnat används den aktuella gruppen.\& Returnerar en tabell med fälten \fBname\fP och \fBgid\fP satta till gruppnamnet respektive dess id, och index från 1 och framåt specificerar gruppmedlemmar.\& .PP Exempel: .nf .RS 4 print(posix\&.getgroup(\&'wheel\&')\&.gid) .fi .RE .PP .RE \fBgetlogin()\fP .RS 4 Hämta inloggningsnamnet.\& Se \fBgetlogin\fP(3).\& .PP Exempel: .nf .RS 4 n = posix\&.getlogin() .fi .RE .PP .RE \fBgetpasswd\fP([\fIanvändare\fP [, \fIväljare\fP]]\fB)\fP .RS 4 Get \fBpasswd\fP(5) information for a user account.\& \fIuser\fP may be either a numeric id or username.\& If omitted, current user is used.\& The optional \fIselector\fP argument may be one of: .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 Om det utelämnas returneras en tabell med alla dessa fält.\& .PP Exempel: .nf .RS 4 pw = posix\&.getpasswd(posix\&.getlogin(), \&'shell\&')| .fi .RE .PP .RE \fBgetprocessid(\fP[\fIväljare\fP]\fB)\fP .RS 4 Hämta information om den aktuella processen.\& Det frivilliga argumentet \fIväljare\fP kan vara ett av .PD 0 .IP \(bu 4 \fBegid\fP: effektivt grupp\-id .IP \(bu 4 \fBeuid\fP: effektivt användar\-id .IP \(bu 4 \fBgid\fP: grupp\-id .IP \(bu 4 \fBuid\fP: användar\-id .IP \(bu 4 \fBpgrp\fP: förälderns grupp\-id .IP \(bu 4 \fBpid\fP: process id .IP \(bu 4 \fBppid\fP: förälderns pid .PD .PP Om det utelämnas returneras en tabell med alla dessa fält.\& .PP Exempel: .nf .RS 4 if posix\&.getprocessid(\&'pid\&') == 1 then …\& end .fi .RE .PP .RE \fBkill(\fP\fIpid\fP [, \fIsignal\fP]\fB)\fP .RS 4 Skicka en \fBsignal\fP(7) till en process.\& \fIsignal\fP måste vara ett numeriskt värde, t.\&ex.\& \fB9\fP för \fBSIGKILL\fP.\& Om det utelämnas används \fBSIGTERM\fP.\& Se även \fBkill\fP(2).\& .PP Exempel: .nf .RS 4 posix\&.kill(posix\&.getprocessid(\&'pid\&')) .fi .RE .PP .RE \fBlink(\fP\fIgammalsökväg\fP, \fInysökväg\fP\fB)\fP .RS 4 Skapa ett nytt namn på \fInewpath\fP för en fil på \fIoldpath\fP, även känt som hårdlänk.\& Se även \fBlink\fP(2).\& .PP Exempel: .nf .RS 4 f = rpm\&.open(\&'aaa\&', \&'w\&') posix\&.link(\&'aaa\&', \&'bbb\&') .fi .RE .PP .RE \fBmkdir(\fP\fIsökväg\fP\fB)\fP .RS 4 Skapa en ny katalog på \fIpath\fP.\& Se även \fBmkdir\fP(2).\& .PP Exempel: .nf .RS 4 posix\&.mkdir(\&'/tmp\&') .fi .RE .PP .RE \fBmkfifo(\fP\fIsökväg\fP\fB)\fP .RS 4 Skapa en FIFO även känt som namngivet rör på \fIsökväg\fP.\& Se även \fBmkfifo\fP(2).\& .PP Exempel: .nf .RS 4 posix\&.mkfifo(\&'/tmp/dumplats\&') .fi .RE .PP .RE \fBpathconf(\fP\fIsökväg\fP [, \fIväljare\fP]\fB)\fP .RS 4 Hämta \fBpathconf\fP(3)\-information för \fIsökväg\fP.\& Den frivilliga \fIväljaren\fP kan vara en av .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 Om det utelämnas returneras en tabell med alla dessa fält.\& .PP Exempel: .nf .RS 4 posix\&.pathconf(\&'/\&', \&'path_max\&') .fi .RE .PP .RE \fBputenv(\fP\fIsträng\fP\fB)\fP .RS 4 Ändra eller lägg till en miljövariabel.\& Se även \fBputenv\fP(3).\& .PP Exempel: .nf .RS 4 posix\&.putenv(\&'HOME=/mig\&') .fi .RE .PP .RE \fBreadlink(\fP\fIsökväg\fP\fB)\fP .RS 4 Läs värdet av den symboliska länken på \fIsökväg\fP.\& Se även \fBreadlink\fP(2).\& .PP Exempel: .nf .RS 4 posix\&.mkdir(\&'aaa\&') posix\&.symlink(\&'aaa\&', \&'bbb\&') print(posix\&.readlink(\&'bbb\&')) .fi .RE .PP .RE \fBrmdir(\fP\fIsökväg\fP\fB)\fP .RS 4 Ta bort katalogen \fIsökväg\fP.\& Se även \fBrmdir\fP(2).\& .PP Exempel: .nf .RS 4 posix\&.rmdir(\&'/tmp\&') .fi .RE .PP .RE \fBsetgid(\fP\fIgrupp\fP\fB)\fP .RS 4 Sätt gruppidentitet.\& \fIgrupp\fP kan anges antingen som ett numeriskt id eller gruppnamn.\& Se även \fBsetgid\fP(2).\& .PP Observera: detta är en privilegierad åtgärd.\& .PP .RE \fBsetuid(\fP\fIanvändare\fP\fB)\fP .RS 4 Set user identity.\& \fIuser\fP may be specified either as a numeric id or username.\& See also \fBsetuid\fP(2).\& .PP Observera: detta är en privilegierad åtgärd.\& .PP Exempel: .nf .RS 4 posix\&.setuid(\&'nobody\&') .fi .RE .PP .RE \fBsleep(\fP\fIsekunder\fP\fB)\fP .RS 4 Sov under \fIsekunder\fP.\& Se även \fBsleep\fP(3).\& .PP Exempel: .nf .RS 4 posix\&.sleep(5) .fi .RE .PP .RE \fBstat(\fP\fIsökväg\fP [, \fIväljare\fP]\fB)\fP .RS 4 Hämta fil\-\fBstat\fP(3)\-information om en fil på \fIsökväg\fP.\& Den frivilliga \fIväljare\fP kan vara en av .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 Om det utelämnas returneras en tabell med alla dessa fält.\& .PP Exempel: .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 \fBsymlink(\fP\fIgammalsökväg\fP, \fInysökväg\fP\fB)\fP .RS 4 Skapa en symbolisk länk på \fInysökväg\fP till \fIgammalsökväg\fP.\& Se även \fBsymlink\fP(2).\& .PP Exempel: .nf .RS 4 posix\&.mkdir(\&'aaa\&') posix\&.symlink(\&'aaa\&', \&'bbb\&') .fi .RE .PP .RE \fBsysconf(\fP[\fIväljare\fP]\fB)\fP .RS 4 Hämta \fBsysconf\fP(3)\-information.\& Det frivilliga argumentet \fIväljare\fP kan vara en av: .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 Om det utelämnas returneras en tabell med alla dessa fält.\& .PP Exempel: .nf .RS 4 posix\&.sysconf(\&'open_max\&')| .fi .RE .PP .RE \fBtimes(\fP[\fIväljare\fP]\fB)\fP .RS 4 Hämta processens och inväntade barnprocessers \fBtimes\fP(2).\& Det frivilliga argumentet \fIväljare\fP kan vara ett av .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 Om det utelämnas returneras en tabell med alla dessa fält.\& .PP Exempel: .nf .RS 4 t = posix\&.times() print(t\&.utime, t\&.stime) .fi .RE .PP .RE \fBttyname(\fP[\fIfb\fP]\fB)\fP .RS 4 Get name of a terminal associated with file descriptor \fIfd\fP.\& If \fIfd\fP is omitted, \fB0\fP (aka standard input) is used.\& See \fBttyname\fP(3).\& .PP Exempel: .nf .RS 4 if not posix\&.ttyname() then …\& endif .fi .RE .PP .RE \fBumask(\fP[\fIläge\fP]\fB)\fP .RS 4 Hämta eller sätt processens \fBumask\fP(2).\& \fIläge\fP kan anges som ett oktalt tal eller en rättighetssträng liknande \fBposix.\&chmod()\fP.\& .PP Exempel: .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 Hämta \fBuname\fP(2)\-information om det aktuella systemet.\& Följande formatdirektiv stödjs: .PP .PD 0 .IP \(bu 4 \fB%m\fP: Namnet på hårdvarutypen .IP \(bu 4 \fB%n\fP: Namnet på denna nod .IP \(bu 4 \fB%r\fP: Aktuell utgåvenivå för denna implementation .IP \(bu 4 \fB%s\fP: Namnet på detta operativsystem .IP \(bu 4 \fB%v\fP: Aktuell versionsnivå på denna implementation .PD .PP Exempel: .nf .RS 4 print(posix\&.uname(\&'%s %r\&')) .fi .RE .PP .RE \fButime(\fP\fIsökväg\fP [, \fImtid\fP [, \fIctid\fP]]\fB)\fP .RS 4 Ändra senaste åtkomst\- och ändringstider.\& mtid och ctid uttrycks i sekunder sedan epoken.\& Se \fButime\fP(2).\& .PP Om \fImtid\fP eller \fIctid\fP utelämnas används aktuell tid, i likhet med \fBtouch\fP(1).\& .PP Exempel: .nf .RS 4 posix\&.mkdir(\&'aaa\&') posix\&.utime(\&'aaa\&', 0, 0) .fi .RE .PP .RE \fBwait(\fP[\fIpid\fP]\fB)\fP (FÖRÅLDRAT) .RS 4 Vänta på en barnprocess.\& Om \fIpid\fP anges, vänta på just det barnet.\& Se även \fBwait\fP(2).\& .PP Denna funktion är föråldrad och endast tillgänglig för bakåtkompatibilitet med RPM v4\-paket.\& Använd \fBrpm.\&spawn()\fP eller \fBrpm.\&execute()\fP istället.\& .PP Exempel: .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\fInamn\fP, \fIvärde\fP [, \fIersätt\fP]\fB)\fP .RS 4 Ändra eller lägg till miljövariabeln \fInamn\fP.\& Det frivilliga \fIersätt\fP är en boolean vilken avgör beteendet när en variabel med samma namn redan finns.\& Se även \fBsetenv\fP(3).\& .PP Exempel: .nf .RS 4 posix\&.setenv(\&'HOME\&', \&'/mig\&', true) .fi .RE .PP .RE \fBunsetenv(\fP\fInamn\fP\fB)\fP .RS 4 Ta bort variabeln \fInamn\fP från miljön.\& Se även \fBunsetenv\fP(3).\& .PP Exempel: .nf .RS 4 posix\&.unsetenv(\&'HOME\&') .fi .RE .PP .RE .SH "UTVIDGNING OCH ANPASSNING" Vid initieringen kör RPM ett global Lua\-initiieringsskript \fIinit.\&lua\fP från katalogen som \fB%getconfdir\fP expanderar till, normalt \fI/usr/lib/rpm/init.\&lua\fP.\& Detta kan användas för att anpassa rpm\-Lua\-miljön utan att kompilera om RPM.\& .PP För den inbäddade Lua\-tolken söks moduler laddade med \fBrequire\fP primärt från \fB%{getconfdir}/lua/\fP.\& \fB%_rpmluadir\fP är en kortform för denna sökväg.\& .PP .SH "SE ÄVEN" \fBrpm\-macros\fP(7) \fBrpm\-payloadflags\fP(7) \fBrpmlua\fP(1) \fBrpm\-version\fP(7) .PP \fBhttps://www.\&lua.\&org/\fP .PP .SH ÖVERSÄTTNING Den svenska översättningen av denna manualsida skapades av Göran Uddeborg . .PP Denna översättning är fri dokumentation; läs .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE eller senare för upphovsrättsvillkor. Vi tar INGET ANSVAR. .PP Om du hittar fel i översättningen av denna manualsida, skicka ett mail till .MT Tp-sv@listor.tp-sv.se .ME .