<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>