Csomagkészítés

Csomagspecifikációs fájl
<Name>
<Version>
<Framework>
<Vendor>
<URL>
<License>
<ChangeLog>
<Description>
Csomagműveletek
<BuildHost>
<BuildDate>
<PackageRequired>
<ModuleRequired>
<OS>
<Filelist>
<DatabaseInstall>
<DatabaseUpgrade>
<DatabaseReinstall>
<DatabaseUninstall>
<IntroInstall>
<IntroUninstall>
<IntroReinstall>
<IntroUpgrade>
<CodeInstall>
<CodeUninstall>
<CodeReinstall>
<CodeUpgrade>
<PackageMerge>
Feltételek: IfPackage és IfNotPackage
Példa .sopm
Csomagösszeállítás
Csomagéletciklus - telepítés, frissítés, eltávolítás

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.

Csomagspecifikációs fájl

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.

<Name>

A csomag neve (kötelező).

<Name>Naptár</Name>
                

<Version>

A csomag verziója (kötelező).

<Version>1.2.3</Version>
                

<Framework>

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>
                

<Vendor>

A csomag gyártója (kötelező).

<Vendor>OTRS AG</Vendor>
                

<URL>

A gyártó URL-e (kötelező).

<URL>https://otrs.com/</URL>
                

<License>

A csomag licence (kötelező).

<License>GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007</License>
                

<ChangeLog>

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>
                

<Description>

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>
                

Csomagműveletek

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>
                

<BuildHost>

Ezt az OPM automatikusan ki fogja tölteni.

<BuildHost>?</BuildHost>
                

<BuildDate>

Ezt az OPM automatikusan ki fogja tölteni.

<BuildDate>?</BuildDate>
                

<PackageRequired>

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>
                

<ModuleRequired>

Perl-modulok, amelyeket előzetesen telepíteni kell (elhagyható).

<ModuleRequired Version="1.03">Encode</ModuleRequired>
<ModuleRequired Version="5.32">MIME::Tools</ModuleRequired>
                

<OS>

A szükséges operációs rendszer (elhagyható).

<OS>linux</OS>
<OS>darwin</OS>
<OS>mswin32</OS>
                

<Filelist>

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>
                

<DatabaseInstall>

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.

<DatabaseUpgrade>

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.

<DatabaseReinstall>

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.

<DatabaseUninstall>

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.

<IntroInstall>

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

<IntroUninstall>

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

<IntroReinstall>

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

<IntroUpgrade>

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

<CodeInstall>

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.

<CodeUninstall>

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.

<CodeReinstall>

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.

<CodeUpgrade>

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.

<PackageMerge>

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.

Feltételek: IfPackage és IfNotPackage

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.

Példa .sopm

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>
            

Csomagösszeállítás

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>
            

Csomagéletciklus - telepítés, frissítés, eltávolítás

A következő kép azt mutatja be lépésről lépésre, hogy egy csomag telepítési, frissítési vagy eltávolítási életciklusa hogyan működik a háttérprogramban.

4.1. ábra - Csomagéletciklus

Csomagéletciklus