<Name>
<Version>
<Framework>
<Vendor>
<URL>
<License>
<ChangeLog>
<Description>
<BuildHost>
<BuildDate>
<PackageRequired>
<ModuleRequired>
<OS>
<Filelist>
<DatabaseInstall>
<DatabaseUpgrade>
<DatabaseReinstall>
<DatabaseUninstall>
<IntroInstall>
<IntroUninstall>
<IntroReinstall>
<IntroUpgrade>
<CodeInstall>
<CodeUninstall>
<CodeReinstall>
<CodeUpgrade>
<PackageMerge>
IfPackage
és IfNotPackage
Ha egy OPM csomagot (.opm
) szeretne létrehozni, akkor
létre kell hoznia egy specifikációs fájl (.sopm
), amely a
csomag tulajdonságait tartalmazza.
Az OPM csomag XML alapú. A .sopm
fájlt egy szöveg- vagy
egy XML-szerkesztővel hozhatja létre és szerkesztheti. Ez metaadatokat, egy
fájllistát és adatbázis-beállításokat tartalmaz.
A megcélzott keretrendszer verziója (a 3.2.x jelentése például 3.2.1 vagy 3.2.2) (kötelező).
<Framework>3.2.x</Framework>
Több alkalommal is használható.
<Framework>3.0.x</Framework> <Framework>3.1.x</Framework> <Framework>3.2.x</Framework>
A csomag licence (kötelező).
<License>GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007</License>
A csomag változásnaplója (elhagyható).
<ChangeLog Version="1.1.2" Date="2013-02-15 18:45:21">Néhány funkció hozzáadva.</ChangeLog> <ChangeLog Version="1.1.1" Date="2013-02-15 16:17:51">Új csomag.</ChangeLog>
A csomag leírása különböző nyelveken (kötelező).
<Description Lang="en">A web calendar.</Description> <Description Lang="hu">Egy webes naptár.</Description>
A csomag lehetséges műveletei a telepítés után. Ha ezen műveletek valamelyike nincs meghatározva a csomagnál, akkor lehetségesként fogja tekinteni.
<PackageIsVisible>1</PackageIsVisible> <PackageIsDownloadable>0</PackageIsDownloadable> <PackageIsRemovable>1</PackageIsRemovable>
Csomagok, amelyeket előzetesen telepíteni kell (elhagyható). Ha a
PackageRequired
használatban van, akkor a szükséges
csomag egy verzióját meg kell adni.
<PackageRequired Version="1.0.3">ValamilyenMasikCsomag</PackageRequired> <PackageRequired Version="5.3.2">ValamilyenMasikCsomag2</PackageRequired>
Perl-modulok, amelyeket előzetesen telepíteni kell (elhagyható).
<ModuleRequired Version="1.03">Encode</ModuleRequired> <ModuleRequired Version="5.32">MIME::Tools</ModuleRequired>
Ez a csomagban lévő fájlok listája (elhagyható).
<Filelist> <File Permission="644" Location="Kernel/Config/Files/Calendar.pm"/> <File Permission="644" Location="Kernel/System/CalendarEvent.pm"/> <File Permission="644" Location="Kernel/Modules/AgentCalendar.pm"/> <File Permission="644" Location="Kernel/Language/de_AgentCalendar.pm"/> </Filelist>
Adatbázis-bejegyzések, amelyeket létre kell hozni, amikor a csomagot telepítik (elhagyható).
<DatabaseInstall> <TableCreate Name="calendar_event"> <Column Name="id" Required="true" PrimaryKey="true" AutoIncrement="true" Type="BIGINT"/> <Column Name="title" Required="true" Size="250" Type="VARCHAR"/> <Column Name="content" Required="false" Size="250" Type="VARCHAR"/> <Column Name="start_time" Required="true" Type="DATE"/> <Column Name="end_time" Required="true" Type="DATE"/> <Column Name="owner_id" Required="true" Type="INTEGER"/> <Column Name="event_status" Required="true" Size="50" Type="VARCHAR"/> </TableCreate> </DatabaseInstall>
Választhat <DatabaseInstall Type="post">
vagy
<DatabaseInstall Type="pre">
típust is a
végrehajtás idejének külön-külön történő meghatározásához (a
post
az alapértelmezett). További információkért nézze
meg a csomagéletciklus szakaszt.
Információk arról, hogy mely műveleteket kell végrehajtani egy frissítés esetén (elhagyható). Például ha egy korábban telepített csomag verziója 1.3.4 alatt van (mondjuk 1.2.6), akkor végre lesz hajtva a meghatározott művelet:
<DatabaseUpgrade> <TableCreate Name="calendar_event_involved" Version="1.3.4"> <Column Name="event_id" Required="true" Type="BIGINT"/> <Column Name="user_id" Required="true" Type="INTEGER"/> </TableCreate> </DatabaseUpgrade>
Választhat <DatabaseUpgrade Type="post">
vagy
<DatabaseUpgrade Type="pre">
típust is a
végrehajtás idejének külön-külön történő meghatározásához (a
post
az alapértelmezett). További információkért nézze
meg a csomagéletciklus szakaszt.
Információk arról, hogy mely műveleteket kell végrehajtani, ha a csomagot újratelepítik (elhagyható).
<DatabaseReinstall></DatabaseReinstall>
Választhat <DatabaseReinstall Type="post">
vagy
<DatabaseReinstall Type="pre">
típust is a
végrehajtás idejének külön-külön történő meghatározásához (a
post
az alapértelmezett). További információkért nézze
meg a csomagéletciklus szakaszt.
A végrehajtandó műveletek a csomag eltávolításakor (elhagyható).
<DatabaseUninstall> <TableDrop Name="calendar_event" /> </DatabaseUninstall>
Választhat <DatabaseUninstall Type="post">
vagy
<DatabaseUninstall Type="pre">
típust is a
végrehajtás idejének külön-külön történő meghatározásához (a
post
az alapértelmezett). További információkért nézze
meg a csomagéletciklus szakaszt.
Egy telepítés előtti („pre”) vagy utáni („post”) bevezető megjelenítéséhez a telepítési párbeszédablakban.
<IntroInstall Type="post" Lang="hu" Title="Valamilyen cím"><![CDATA[ Valamilyen HTML formátumú információ… ]]></IntroInstall>
Használhatja a Format
attribútumot is annak
meghatározásához, hogy „html” (amely alapértelmezett) vagy „plain” (egyszerű
szöveg) tartalmat szeretne használni. Az utóbbi automatikusan egy
<pre></pre>
címkét használ, amikor a bevezető
megjelenik (a tartalom új sorai és üres karakterei megtartásához).
Egy eltávolítás előtti („pre”) vagy utáni („post”) bevezető megjelenítéséhez az eltávolítási párbeszédablakban.
<IntroUninstall Type="post" Lang="hu" Title="Valamilyen cím"><![CDATA[ Valamilyen HTML formátumú információ… ]]></IntroUninstall>
Használhatja a Format
attribútumot is annak
meghatározásához, hogy „html” (amely alapértelmezett) vagy „plain” (egyszerű
szöveg) tartalmat szeretne használni. Az utóbbi automatikusan egy
<pre></pre>
címkét használ, amikor a bevezető
megjelenik (a tartalom új sorai és üres karakterei megtartásához).
Egy újratelepítés előtti („pre”) vagy utáni („post”) bevezető megjelenítéséhez az újratelepítési párbeszédablakban.
<IntroReinstall Type="post" Lang="hu" Title="Valamilyen cím"><![CDATA[ Valamilyen HTML formátumú információ… ]]></IntroReinstall>
Használhatja a Format
attribútumot is annak
meghatározásához, hogy „html” (amely alapértelmezett) vagy „plain” (egyszerű
szöveg) tartalmat szeretne használni. Az utóbbi automatikusan egy
<pre></pre>
címkét használ, amikor a bevezető
megjelenik (a tartalom új sorai és üres karakterei megtartásához).
Egy frissítés előtti („pre”) vagy utáni („post”) bevezető megjelenítéséhez a frissítési párbeszédablakban.
<IntroUpgrade Type="post" Lang="hu" Title="Valamilyen cím"><![CDATA[ Valamilyen HTML formátumú információ… ]]></IntroUpgrade>
Használhatja a Format
attribútumot is annak
meghatározásához, hogy „html” (amely alapértelmezett) vagy „plain” (egyszerű
szöveg) tartalmat szeretne használni. Az utóbbi automatikusan egy
<pre></pre>
címkét használ, amikor a bevezető
megjelenik (a tartalom új sorai és üres karakterei megtartásához).
A végrehajtandó Perl-kód, amikor a csomagot telepítik (elhagyható).
<CodeInstall><![CDATA[ # log example $Kernel::OM->Get('Kernel::System::Log')->Log( Priority => 'notice', Message => "Valamilyen üzenet!", ); # adatbázis példa $Kernel::OM->Get('Kernel::System::DB')->Do(SQL => "VALAMILYEN SQL"); ]]></CodeInstall>
Választhat <CodeInstall Type="post">
vagy
<CodeInstall Type="pre">
típust is a végrehajtás
idejének külön-külön történő meghatározásához (a post
az
alapértelmezett). További információkért nézze meg a csomagéletciklus szakaszt.
A végrehajtandó Perl-kód, amikor a csomagot eltávolítják (elhagyható). A csomag eltávolításának előtti („pre”) vagy utáni („post”) idejében.
<CodeUninstall><![CDATA[ ... ]]></CodeUninstall>
Választhat <CodeUninstall Type="post">
vagy
<CodeUninstall Type="pre">
típust is a végrehajtás
idejének külön-külön történő meghatározásához (a post
az
alapértelmezett). További információkért nézze meg a csomagéletciklus szakaszt.
A végrehajtandó Perl-kód, amikor a csomagot újratelepítik (elhagyható).
<CodeReinstall><![CDATA[ ... ]]></CodeReinstall>
Választhat <CodeReinstall Type="post">
vagy
<CodeReinstall Type="pre">
típust is a végrehajtás
idejének külön-külön történő meghatározásához (a post
az
alapértelmezett). További információkért nézze meg a csomagéletciklus szakaszt.
A végrehajtandó Perl-kód, amikor a csomagot frissítik (a
version
címkétől függően), (elhagyható). Például ha egy
korábban telepített csomag verziója 1.3.4 alatt van (mondjuk 1.2.6), akkor
végre lesz hajtva a meghatározott művelet:
<CodeUpgrade Version="1.3.4"><![CDATA[ ... ]]></CodeUpgrade>
Választhat <CodeUpgrade Type="post">
vagy
<CodeUpgrade Type="pre">
típust is a végrehajtás
idejének külön-külön történő meghatározásához (a post
az
alapértelmezett). További információkért nézze meg a csomagéletciklus szakaszt.
Ez a címke jelzi, hogy egy csomag egyesítve lett egy másik csomaggal. Ebben
az esetben az eredeti csomagot el kell távolítani a fájlrendszerről és a
csomagok adatbázisából, de az összes adatot meg kell tartani. Tegyük fel,
hogy az ElsoCsomag
egyesítve lett a
MasodikCsomag
nevű csomaggal. Ekkor a
MasodikCsomag.sopm
fájlnak ezt kell tartalmaznia:
<PackageMerge Name="MergeOne" TargetVersion="2.0.0"></PackageMerge>
Ha az ElsoCsomag
is tartalmaz adatbázis-szerkezetet,
akkor meg kell győződnünk arról, hogy az a csomag legfrissebb elérhető
verziójánál volt, hogy következetes állapot legyen az adatbázisban a csomag
egyesítése után. A TargetVersion
attribútum csak ennyi
csinál: jelzi az ElsoCsomag
utolsó ismert verzióját abban
az időpontban, amikor a MasidikCsomag
létrejött. Ez főleg
azért van, hogy leállítsa a frissítési folyamatot, ha a felhasználó
rendszerén megtalálható az ElsoCsomag
egy olyan verziója,
amely újabb a TargetVersion
attribútumban megadottnál, mivel ekkor ez problémákhoz vezethet.
Továbbá lehetőség van a szükséges adatbázis és kódfrissítési címkék
hozzáadására az ElsoCsomag
nevű csomagnál annak
biztosításához, hogy az megfelelően kerül frissítésre a
TargetVersion
verzióra az egyesítés
előtt - a következetlenségi problémák
elkerüléséhez. Itt látható, hogy ennek hogyan kellene kinéznie:
<PackageMerge Name="MergeOne" TargetVersion="2.0.0"> <DatabaseUpgrade Type="merge"> <TableCreate Name="merge_package"> <Column Name="id" Required="true" PrimaryKey="true" AutoIncrement="true" Type="INTEGER"/> <Column Name="description" Required="true" Size="200" Type="VARCHAR"/> </TableCreate> </DatabaseUpgrade> </PackageMerge>
Amint láthatja, ebben az esetben a Type="merge"
attribútumot kell beállítani. Ezek a szakaszok csak akkor lesznek
végrehajtva, ha lehetséges egy csomagegyesítés.
Ezek az attribútumok hozzáadhatók a szabályos Database*
és Code*
szakaszokhoz. Ha ezek jelen vannak, akkor a
szakasz csak akkor lesz végrehajtva, ha egy másik csomag létezik vagy nem
létezik a helyi csomagtárolóban.
<DatabaseInstall IfPackage="ValamilyenCsomag"> ... </DatabaseInstall>
vagy
<CodeUpgrade IfNotPackage="MasikCsomag"> ... </CodeUpgrade>
Ezek az attribútumok beállíthatók a PackageMerge
címkéken
belüli Database*
és Code*
szakaszokban
is.
Ez egy példa specifikációs fájl kinézete a fenti címkék egy részével.
<?xml version="1.0" encoding="utf-8" ?> <otrs_package version="1.0"> <Name>Calendar</Name> <Version>0.0.1</Version> <Framework>3.2.x</Framework> <Vendor>OTRS AG</Vendor> <URL>https://otrs.com/</URL> <License>GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007</License> <ChangeLog Version="1.1.2" Date="2013-02-15 18:45:21">Added some feature.</ChangeLog> <ChangeLog Version="1.1.1" Date="2013-02-15 16:17:51">New package.</ChangeLog> <Description Lang="en">A web calendar.</Description> <Description Lang="hu">Egy webes naptár.</Description> <IntroInstall Type="post" Lang="en" Title="Thank you!">Thank you for choosing the Calendar module.</IntroInstall> <IntroInstall Type="post" Lang="hu" Title="Köszönjük!">Köszönjük, hogy a naptár modult választotta.</IntroInstall> <BuildDate>?</BuildDate> <BuildHost>?</BuildHost> <Filelist> <File Permission="644" Location="Kernel/Config/Files/Calendar.pm"></File> <File Permission="644" Location="Kernel/System/CalendarEvent.pm"></File> <File Permission="644" Location="Kernel/Modules/AgentCalendar.pm"></File> <File Permission="644" Location="Kernel/Language/de_AgentCalendar.pm"></File> <File Permission="644" Location="Kernel/Output/HTML/Standard/AgentCalendar.tt"></File> <File Permission="644" Location="Kernel/Output/HTML/NotificationCalendar.pm"></File> <File Permission="644" Location="var/httpd/htdocs/images/Standard/calendar.png"></File> </Filelist> <DatabaseInstall> <TableCreate Name="calendar_event"> <Column Name="id" Required="true" PrimaryKey="true" AutoIncrement="true" Type="BIGINT"/> <Column Name="title" Required="true" Size="250" Type="VARCHAR"/> <Column Name="content" Required="false" Size="250" Type="VARCHAR"/> <Column Name="start_time" Required="true" Type="DATE"/> <Column Name="end_time" Required="true" Type="DATE"/> <Column Name="owner_id" Required="true" Type="INTEGER"/> <Column Name="event_status" Required="true" Size="50" Type="VARCHAR"/> </TableCreate> </DatabaseInstall> <DatabaseUninstall> <TableDrop Name="calendar_event"/> </DatabaseUninstall> </otrs_package>
Egy .opm csomag összeállításához a specifikációs opm fájlból.
shell> bin/otrs.Console.pl Dev::Package::Build /útvonal/ehhez/példa.sopm /tmp Building package... Done. shell>