Plugin Installation

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Struktur)
K (Ein praktisches Beispiel zum besseren Verständnis)
 
(43 dazwischenliegende Versionen von 24 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Die Installation der verschieden Plugins ist in den Grundzügen immer gleich. Auf Besonderheiten wird auf den jeweiligen [[Plugins|Plugin]]-Seiten eingegangen. Letzte Instanz ist aber immer das README-file des Plugins.
 
 
 
==Vorbereitung==
 
==Vorbereitung==
 +
Die Installation der verschiedenen Plugins ist in den Grundzügen immer gleich. Auf Besonderheiten wird auf den jeweiligen [[Plugins|Plugin]]-Seiten eingegangen. Letzte Instanz ist aber immer das '''README'''-file des Plugins.
 +
 
{{Box Hinweis|
 
{{Box Hinweis|
 
Die Variable '''$SOURCEDIR''' enthält den Pfad zum Verzeichnis, in dem sich die VDR-Quellen befinden.
 
Die Variable '''$SOURCEDIR''' enthält den Pfad zum Verzeichnis, in dem sich die VDR-Quellen befinden.
Zeile 9: Zeile 9:
 
}}
 
}}
  
Nachdem man sich das Plugin-Quellarchiv aus dem Internet heruntergeladen hat wechselt man in das '''PLUGINS/src''' Verzeichnis von [[VDR]] und entpackt das Archiv
+
Nachdem man sich das Plugin-Quellarchiv aus dem Internet heruntergeladen hat wechselt man in das '''PLUGINS/src''' Verzeichnis von VDR und entpackt das Archiv.
  
 
<pre>
 
<pre>
Zeile 36: Zeile 36:
 
Die Beschreibung hier geht davon aus, dass sich die Plugin Autoren an das vorgegebene Namensschema halten. Leider ist dies nicht immer der Fall.
 
Die Beschreibung hier geht davon aus, dass sich die Plugin Autoren an das vorgegebene Namensschema halten. Leider ist dies nicht immer der Fall.
  
Damit VDR das Plugin kompiliert darf das Verzeichnis der Plugins, oder der Link dorthin nur den Name enthalten, kein "vdr-...", "plugin-..." oder gar die Versionsnummer dabei (Achtung: 'vdrcd' ist richtig, 'vdr-cd' nicht).
+
Damit VDR das Plugin kompiliert, darf der Link in VDR/PLUGINS/src nur den Namen enthalten, aber keine Bindestriche, Zahlen. Man kann sich einfach an den mit VDR mitgelieferten Plugins orientieren.
 
+
Man kann sich einfach an den mit VDR mitgelieferten Plugins orientieren.
+
 
}}
 
}}
  
 
==Kompilieren==
 
==Kompilieren==
Die Plugins liegen nach dem Auspacken als [[Quelltext]] auf der Festplatte. Für die Verwendung im VDR müssen die Quelldaten jedoch kompiliert werden (überführen in einen maschinell lesbaren Binärcode siehe http://de.wikipedia.org/wiki/Compiler).
+
Die [[Plugins]] liegen nach dem Auspacken als [[Quelltext]] auf der Festplatte. Für die Verwendung im VDR müssen die Quelltexte jedoch mit einem [[Compiler]] in einen maschinell lesbaren Binärcode übersetzt werden. Für den Aufruf des Compilers muss man in das zwei Ebenen höher liegende VDR-Verzeichnis wechseln und den Kompiliervorgang mit dem Befehl "make plugins" starten. Dieser Vorgang übersetzt den Quelltext aller Plugins.
 
+
Zum Compiler-Aufruf in das zwei Ebenen höher liegende VDR-Verzeichnis wechseln und den Kompiliervorgang über das make-Programm des VDR aufrufen
+
 
<pre>
 
<pre>
cd ../..
+
cd $SOURCEDIR/VDR
 
make plugins
 
make plugins
 
</pre>
 
</pre>
 +
 
==Installation==
 
==Installation==
Nachdem der Compiler-Lauf fehlerfrei durchgelaufen ist, müssen die entstandenen [[Library|Bibliotheken]] ins Zielverzeichnis kopiert werden
+
Nachdem der Compiler-Lauf fehlerfrei durchgelaufen ist, können die entstandenen [[Bibliothek]]en ins Zielverzeichnis kopiert werden.
  
 
<pre>
 
<pre>
cp PLUGINS/lib/* /usr/lib/vdr
+
mkdir -p /usr/lib/vdr/plugins
 +
cp PLUGINS/lib/* /usr/lib/vdr/plugins/
 
</pre>
 
</pre>
  
Dieses Verzeichnis kann natürlich je nach System variieren. Später beim Aufruf von VDR wird diesem das Verzeichnis mittels.
+
Dieses Verzeichnis kann je nach System variieren. Beim Start des VDR wird das Verzeichnis mit
  
 
<pre>
 
<pre>
Zeile 68: Zeile 66:
 
</pre>
 
</pre>
  
bekannt gemacht.
+
als Parameter übergeben.
  
==Struktur==
+
==Alte Plugins unter VDR 1.4==
Falls ab und zu mal Begriffe auftauchen wie '''unterhalb der channels.conf''' oder '''plugins verzeichnis'''.
+
Die API-Version wird von der VDR-Version getrennt. Deshalb müssen nicht jedes mal alle Plugins neu kompiliert werden, wenn sich nur die VDR-Version ändert, die API-Definition jedoch gleich bleibt.
----+ '''/HOME'''
+
    |----+ [[.xawtv]]
+
----+ '''/etc'''
+
    |----+ [[graphlcd.conf]]
+
    |----+ [[lircd.conf]]
+
    |----+ [[lircrc]]
+
    |----+ [[lircrc.conf]]
+
    |----+ [[LCDd.conf]]
+
    |----+ [[marks2pts.conf]]
+
    |----+ [[my.cnf]]
+
    |----+ [[nvram-wakeup.conf]]
+
    |----+ '''/vdr'''
+
    |    |----+ [[ca.conf]]
+
    |    |----+ [[channels.conf]]
+
    |    |----+ [[diseqc.conf]]
+
    |    |----+ [[keymacros.conf]]
+
    |    |----+ [[record.conf]]
+
    |    |----+ [[remote.conf]]
+
    |    |----+ [[sources.conf]]
+
    |    |----+ [[svdrphosts.conf]]
+
    |    |----+ [[commands.conf]]
+
    |    |----+ [[reccmds.conf]]
+
    |    |----+ [[remote.conf]]
+
    |    |----+ '''/logos'''   
+
    |    |    |----+ 3sat.xpm
+
    |    |----+ '''/plugins'''
+
    |    |    |----+ [[browser.conf]]
+
    |    |    |----+ [[digicamdestinations.conf]]
+
    |    |    |----+ [[digicamsources.conf]]
+
    |    |    |----+ [[epg.conf]]
+
    |    |    |----+ [[epgsearchcmds.conf]]
+
    |    |    |----+ [[httpradio.conf]]
+
    |    |    |----+ [[imagecmds.conf]]
+
    |    |    |----+ [[imagesources.conf]]
+
    |    |    |----+ [[mediamvp.conf]]
+
    |    |    |----+ [[mvprss.conf]]
+
    |    |    |----+ [[mp3sources.conf]]
+
    |    |    |----+ [[mplayerclusterkeys.conf]]
+
    |    |    |----+ [[mplayersources.conf]]
+
    |    |    |----+ [[picturesources.conf]]
+
    |    |    |----+ [[plugin_setup.conf]]
+
    |    |    |----+ [[plugin_setup_runvdr.conf]]
+
    |    |    |----+ [[prefermenu.conf]]
+
    |    |    |----+ [[streamdevhosts.conf]]
+
    |    |    |----+ [[taste.conf]]
+
    |    |    |----+ [[templates.vdrrip]]
+
    |    |    |----+ '''/burn'''
+
    |    |    |    |----+ helmetr.ttf
+
    |    |    |    |----+ menu-bg.png
+
    |    |    |    |----+ menu-button.png
+
    |    |    |    |----+ menu-silence.mp2
+
    |    |    |----+ '''/freecell'''
+
    |    |    |    |----+ cursor.xpm
+
    |    |    |----+ '''/graphlcd'''
+
    |    |    |    |----+ logonames.alias -> logonames.alias.1.2 (symlink)
+
    |    |    |    |----+ logonames.alias.1.2
+
    |    |    |    |----+ logonames.alias.1.3
+
    |    |    |    |----+ '''/logos'''
+
    |    |    |    |----+ '''/fonts'''
+
    |    |    |----+ '''/graphTFT'''
+
    |    |    |    |----+ '''/themes'''
+
    |    |    |    |----+ '''/fonts'''
+
    |    |    |    |----+ Vera.ttf
+
    |    |    |----+ '''/joystick'''
+
    |    |    |    |----+ [[mappings.conf]]
+
    |    |    |----+ '''/mailbox'''
+
    |    |    |    |----+ [[accounts.conf]] 
+
    |    |    |----+ '''/manual'''
+
    |    |    |    |----+ example.xml
+
    |    |    |----+ '''/muggle'''
+
    |    |    |    |----+ [[playlist_commands.conf]]
+
    |    |    |----+ '''/radio '''
+
    |    |    |    |----+ radio.mpg -> satelit.mpeg (symlink)
+
    |    |    |----+ '''/solitaire'''
+
    |    |    |    |----+ cover1.xpm
+
    |    |    |----+ '''/text2skin'''
+
    |    |    |    |----+ /demo
+
    |    |    |----+ '''/xine'''
+
    |    |    |    |----+ noSignal-completelyBlack.pes
+
    |    |    |    |----+ noSignal.pes
+
    -    -    -    -
+
  
Zum PATH, standard wäre es '''/video''', nicht '''/etc/vdr'''.
+
Ville Skyttä hat dazu folgenden Lösungsvorschlag in der ML gepostet:
  
Ruft man VDR ohne die entsprechende (siehe:[[VDR Optionen|Option]]) auf, würde VDR das Standardverzeichnis nutzen.
+
"Plugins that have not been changed to use APIVERSION yet upstream can be usually locally updated with something as simple as:"
  
Um VDR das neue Verzeichnis bekannt zu machen, sollte es so kommen:
+
sed -i -e s/VDRVERSION/APIVERSION/g Makefile
  
<pre>
+
Dieser Befehl muss für jedes verwendete Plugin im zugehörigen Verzeichnis des Quelltextes ausgeführt werden. Oder man führt folgenden Befehl aus:
vdr -c /etc/vdr
+
</pre>
+
  
lang.
+
find [[Struktur|$SOURCEDIR]]/VDR/PLUGINS -name Makefile -exec sed -i -e 's:VDRVERSION:APIVERSION:g' {} \;
  
 +
==Ein praktisches Beispiel zum besseren Verständnis==
 +
 +
Das [[Streamdev-plugin|streamdev Plugin]] soll manuell installiert werden. Der [[Aktuelle_Ereignisse|Quellcode des VDR]] liegt entpackt unter /usr/src ("$SOURCEDIR"). Die Ordnerstruktur in /usr/src sieht dann so aus:
 
<pre>
 
<pre>
vdr --config='/etc/vdr'
+
/usr/src/vdr-1.6.0-1
 +
/usr/src/VDR -> /usr/src/vdr-1.6.0-1
 
</pre>
 
</pre>
 +
Der Quellcode von streamdev wird im VDR Quellcode nach PLUGINS/src entpackt:
 +
<pre>
 +
cp vdr-streamdev-0.3.4.tgz /usr/src/VDR/PLUGINS/src
 +
cd /usr/src/VDR/PLUGINS/src
 +
tar xfz vdr-streamdev-0.3.4.tgz
 +
</pre>
 +
Anschließend muss noch das neu entstandene Verzeichnis streamdev-0.3.4 nach streamdev verlinkt werden:
 +
<pre>
 +
ln -s streamdev-0.3.4 streamdev
 +
</pre>
 +
Die Ordnerstruktur sollte nun so aussehen:
 +
<pre>
 +
/usr/src/VDR/PLUGINS/src/streamdev-0.3.4
 +
/usr/src/VDR/PLUGINS/src/streamdev -> /usr/src/VDR/PLUGINS/src/streamdev-0.3.4
 +
</pre>
 +
Anschließend kann compiliert werden:
 +
<pre>
 +
cd /usr/src/VDR
 +
make plugins
 +
</pre>
 +
Hinweise:
 +
*wenigstens einmal nach Entpacken des VDR Quelltextes sollte vorher ein "make" aufgerufen worden sein, damit die VDR include Verzeichnisse angelegt wurden.
 +
*Bei einigen Plugins müssen vor der ersten Benutzung noch in das Konfigurationsverzeichnis von VDR Dateien kopiert werden oder Dateien modifiziert werden. In diesem Beispiel ist es die [[streamdevhosts.conf]] die in den Ordner 'plugins' im Konfigurationsordner des VDR kopiert werden soll und entsprechend der README angepasst werden muss. Deswegen muss zusätzlich stets die Datei README aus dem jeweiligen Plugin-Quelltext gelesen werden.
  
==Für Entwickler==
+
Der Konfigurationsordner des VDR ist im Beispiel '/etc/vdr', d.h. die Datei streamdevhosts muss nach /etc/vdr/plugins kopiert werden:
Sinngemäß entsprechend '''../VDR/PLUGINS.html''':
+
<pre>
 
+
cd /usr/src/VDR/PLUGINS/src/streamdev-0.3.4
Erstellen eines Plugin-Pakets
+
cp streamdevhosts.example /etc/vdr/plugins/streamdevhosts
 
+
</pre>
Wenn man als Entwickler sein Plugin anderen VDR-Nutzern verfügbar machen möchte, muss man ein Quellcode-Paket erstellen.
+
Nach Anpassen der streamdevhosts ist das Plugin einsatzbereit und kann in der runvdr mit "-P streamdev" gestartet werden.
Das Makefile welches beim Aufruf von newplugin erstellt wurde verfügt über das make Ziel ''dist'', welches diese Funktion übernimmt.  
+
 
+
In das Plugin Verzeichnis wechseln und make dist ausführen, hier am Beispiel von hello:
+
 
+
cd VDR/PLUGINS/src/hello
+
make dist
+
  
Anschließend sollte ein neu erstelltes Quellcode-Tarball
+
==Links==
 +
# [[Plugins#Liste|Auflistung der Plugins]]
 +
# [[Entwicklung - Hinweise für Plugin Entwickler|Hinweise für Plugin Entwickler]]
  
vdr-hello-0.0.1.tgz
 
  
im Quellcodeverzeichnis erstellt worden sein, wobei hello durch den aktuellen Plugin-Namen ersetzt wird
+
[[Kategorie:Plugins]]
und 0.0.1 durch die Versionsnummer des Plugins.
+
[[Kategorie:Installationsanleitungen]]
 +
[[ru:Инсталляция модуля расширения]]

Aktuelle Version vom 30. Dezember 2012, 13:42 Uhr

Inhaltsverzeichnis

[Bearbeiten] Vorbereitung

Die Installation der verschiedenen Plugins ist in den Grundzügen immer gleich. Auf Besonderheiten wird auf den jeweiligen Plugin-Seiten eingegangen. Letzte Instanz ist aber immer das README-file des Plugins.

Hinweis
Hinweis

Die Variable $SOURCEDIR enthält den Pfad zum Verzeichnis, in dem sich die VDR-Quellen befinden. Übliche Verzeichnisse sind /usr/local/src, /usr/src und das home-Verzeichnis des jeweiligen Nutzers.

Die Variable $PLUGIN_NAME steht für den Namen des zu installierenden Plugins.


Nachdem man sich das Plugin-Quellarchiv aus dem Internet heruntergeladen hat wechselt man in das PLUGINS/src Verzeichnis von VDR und entpackt das Archiv.

cd $SOURCEDIR/VDR/PLUGINS/src

Entpacken eines BZIP2-Quellarchivs (*.tar.bz2):

tar jxvf /path/to/vdr-$PLUGIN_NAME-<VERSION>.tar.bz2

Entpacken eines GZIP-Quellarchivs (*.tgz, *.tar.gz).

tar zxvf /path/to/vdr-$PLUGIN_NAME-<VERSION>.{tgz,tar.gz}

Nun noch einen symbolischen Link auf das gerade entpackte Verzeichnis anlegen. Die Versionsnummer wird dabei nicht angegeben

ln -s $PLUGIN_NAME-<VERSION> $PLUGIN_NAME
Hinweis
Hinweis

Die Beschreibung hier geht davon aus, dass sich die Plugin Autoren an das vorgegebene Namensschema halten. Leider ist dies nicht immer der Fall.

Damit VDR das Plugin kompiliert, darf der Link in VDR/PLUGINS/src nur den Namen enthalten, aber keine Bindestriche, Zahlen. Man kann sich einfach an den mit VDR mitgelieferten Plugins orientieren.


[Bearbeiten] Kompilieren

Die Plugins liegen nach dem Auspacken als Quelltext auf der Festplatte. Für die Verwendung im VDR müssen die Quelltexte jedoch mit einem Compiler in einen maschinell lesbaren Binärcode übersetzt werden. Für den Aufruf des Compilers muss man in das zwei Ebenen höher liegende VDR-Verzeichnis wechseln und den Kompiliervorgang mit dem Befehl "make plugins" starten. Dieser Vorgang übersetzt den Quelltext aller Plugins.

cd $SOURCEDIR/VDR
make plugins

[Bearbeiten] Installation

Nachdem der Compiler-Lauf fehlerfrei durchgelaufen ist, können die entstandenen Bibliotheken ins Zielverzeichnis kopiert werden.

mkdir -p /usr/lib/vdr/plugins
cp PLUGINS/lib/* /usr/lib/vdr/plugins/

Dieses Verzeichnis kann je nach System variieren. Beim Start des VDR wird das Verzeichnis mit

vdr -L /usr/lib/vdr

oder

vdr --lib='/usr/lib/vdr'

als Parameter übergeben.

[Bearbeiten] Alte Plugins unter VDR 1.4

Die API-Version wird von der VDR-Version getrennt. Deshalb müssen nicht jedes mal alle Plugins neu kompiliert werden, wenn sich nur die VDR-Version ändert, die API-Definition jedoch gleich bleibt.

Ville Skyttä hat dazu folgenden Lösungsvorschlag in der ML gepostet:

"Plugins that have not been changed to use APIVERSION yet upstream can be usually locally updated with something as simple as:"

sed -i -e s/VDRVERSION/APIVERSION/g Makefile

Dieser Befehl muss für jedes verwendete Plugin im zugehörigen Verzeichnis des Quelltextes ausgeführt werden. Oder man führt folgenden Befehl aus:

find $SOURCEDIR/VDR/PLUGINS -name Makefile -exec sed -i -e 's:VDRVERSION:APIVERSION:g' {} \;

[Bearbeiten] Ein praktisches Beispiel zum besseren Verständnis

Das streamdev Plugin soll manuell installiert werden. Der Quellcode des VDR liegt entpackt unter /usr/src ("$SOURCEDIR"). Die Ordnerstruktur in /usr/src sieht dann so aus:

/usr/src/vdr-1.6.0-1
/usr/src/VDR -> /usr/src/vdr-1.6.0-1

Der Quellcode von streamdev wird im VDR Quellcode nach PLUGINS/src entpackt:

cp vdr-streamdev-0.3.4.tgz /usr/src/VDR/PLUGINS/src
cd /usr/src/VDR/PLUGINS/src
tar xfz vdr-streamdev-0.3.4.tgz

Anschließend muss noch das neu entstandene Verzeichnis streamdev-0.3.4 nach streamdev verlinkt werden:

ln -s streamdev-0.3.4 streamdev

Die Ordnerstruktur sollte nun so aussehen:

/usr/src/VDR/PLUGINS/src/streamdev-0.3.4
/usr/src/VDR/PLUGINS/src/streamdev -> /usr/src/VDR/PLUGINS/src/streamdev-0.3.4

Anschließend kann compiliert werden:

cd /usr/src/VDR
make plugins

Hinweise:

  • wenigstens einmal nach Entpacken des VDR Quelltextes sollte vorher ein "make" aufgerufen worden sein, damit die VDR include Verzeichnisse angelegt wurden.
  • Bei einigen Plugins müssen vor der ersten Benutzung noch in das Konfigurationsverzeichnis von VDR Dateien kopiert werden oder Dateien modifiziert werden. In diesem Beispiel ist es die streamdevhosts.conf die in den Ordner 'plugins' im Konfigurationsordner des VDR kopiert werden soll und entsprechend der README angepasst werden muss. Deswegen muss zusätzlich stets die Datei README aus dem jeweiligen Plugin-Quelltext gelesen werden.

Der Konfigurationsordner des VDR ist im Beispiel '/etc/vdr', d.h. die Datei streamdevhosts muss nach /etc/vdr/plugins kopiert werden:

cd /usr/src/VDR/PLUGINS/src/streamdev-0.3.4
cp streamdevhosts.example /etc/vdr/plugins/streamdevhosts

Nach Anpassen der streamdevhosts ist das Plugin einsatzbereit und kann in der runvdr mit "-P streamdev" gestartet werden.

[Bearbeiten] Links

  1. Auflistung der Plugins
  2. Hinweise für Plugin Entwickler
In anderen Sprachen