• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Workshop: Wir bauen ein Azureus RPM für SuSE

Status
Für weitere Antworten geschlossen.
Hallo P2P Gemeinde,

da ja so viele Probleme auftreten bei einer Azureus Installation, hier mal mein Versuch ;)

Alle downloads und Datein parken wir im Verzeichnis /usr/src/packages/SOURCES

Zunächst brauchen wir die benötigten Programme und Dateien:

1.)
Dazu laden wir von hier http://azureus.sourceforge.net/index_CVS.php
das Azureus.jar herunter. Heute wäre das:
http://azureus.sourceforge.net/cvs/Azureus2401-B13.jar

Diese beiden png-files downloaden:
http://img501.imageshack.us/img501/8089/azureus5hn.png
(abspeichern als Azureus.png)
http://img505.imageshack.us/img505/2926/azureustorrent9ce.png
(abspeichern als Azureus.torrent.png)

Diesen Text als Azureus-README.txt abspeichern.
REQUIREMENTS:
Azureus requires Sun Java 1.4.x or newer to run.
JRE 1.5 (5.0 series) is highly recommended.
http://java.sun.com

Jetzt brauchen wir noch eine "License.txt" Datei. Diese besorgen wir uns aus einem belibigen installierten Paket.
mit dem Befehl
Code:
find /usr/share/doc/packages -name COPYING
suchen wir es und dann so eine COPYING Datei nach Azureus-License.txt speichern.

2.)
Damit wir auch gleich ein paar Plugins für den Azureus haben:
http://azureus.sourceforge.net/plugin_list.php.

Diese drei Plugins herunterladen:
http://azureus.sourceforge.net/plugins/azrating_1.2.jar
http://azureus.sourceforge.net/plugins/azplugins_1.8.8.jar
http://azureus.sourceforge.net/plugins/azupdater_1.6.3.zip

3.)
Danach benötigen wir noch das swt von Eclipse. Also surfen wir zu dieser Seite: http://download.eclipse.org/eclipse/downloads/

Da wir einen brandaktuellen Azureus bauen, benötigen wir den "3.2 Stream Integration Build" vom SWT.
http://download.eclipse.org/eclipse/downloads/drops/I20060228-0800/index.php

Dort findet man ziemlich weit unten (SWT Binary and Source) das swt-zip:
http://download.eclipse.org/eclipse/downloads/drops/I20060228-0800/download.php?dropFile=swt-I20060228-0800-gtk-linux-x86.zip

4.)
Jetzt erstellen wir uns ein SPEC-File, das ist der Bauplan für unser RPM.
Dieses speichern wir unter /usr/src/packages/SPECS/Azureus.spec ab.

Wer will kann bei "Packager:" und "Release:" seinen eigenen Namen und seine eigene Releasenummer eintragen :)
Code:
%define my_provides   /tmp/my-provides
%define my_requires   /tmp/my-requires

%define _az_build     B13
%define _az_version   2.4.0.1
%define _az_version2  2401

%define _swt_version  I20060228-0800
%define _swt_version2 I20060228_0800

Summary:	Java BitTorrent Client
Name:		Azureus
Version:	%{_az_version}
Release:	%{_az_build}.oc2pus.1
Copyright:	GPL
Group:		Productivity/Networking/Other
URL:		http://azureus.sourceforge.net/
#Source0:	http://azureus.sourceforge.net/cvs/%{name}%{_az_version}.jar
Source0:	http://azureus.sourceforge.net/cvs/%{name}%{_az_version2}-%{_az_build}.jar
Source1:	%{name}.png
Source2:        %{name}.torrent.png
Source3:        %{name}-License.txt
Source4:        %{name}-README.txt
Source5:        swt-%{_swt_version}-gtk-linux-x86.zip
Source6:        http://azureus.sourceforge.net/plugins/azrating_1.2.jar
Source7:        http://azureus.sourceforge.net/plugins/azplugins_1.8.8.jar
Source8:        http://azureus.sourceforge.net/plugins/azupdater_1.6.3.zip
BuildRequires: update-desktop-files
Requires:	java >= 1.5
Requires:       jpackage-utils >= 1.5
Requires:       %{name}-libswt3-gtk2 = %{_swt_version2}
BuildRoot:	%{_tmppath}/build-%{name}-%{version}
Packager:       oc2pus <oc2pus_at_arcor.de>

%description
Azureus provides a bittorrent protocol implementation using java language.
It offers multiple torrent downloads, queuing/priority systems (on torrents
and files), start/stop seeding options and instant access to numerous pieces
of information about your torrents.

Azureus now features an embedded tracker easily set up and ready to use.

%package console
Summary:        Script to run %{name} from console command line
Group:          Productivity/Networking/Other
Requires:       java >= 1.5
Requires:       log4j
Requires:       jakarta-commons-cli
Requires:       %{name}

%description console
To run Azureus from console command line (useful for running the web UI on a
headless / XWindows-less machine).

%package libswt3-gtk2
Summary:        Eclipse swt libraries for %{name}
Group:          Development/Libraries/Java
Version:	%{_swt_version2}
Release:	0.oc2pus.1
Requires:       java >= 1.5
Requires:       zlib

%description libswt3-gtk2
Eclipse swt libraries for %{name}.

%prep 
%setup -q -T -c %{name}
cp %{SOURCE1} .
cp %{SOURCE2} .
cp %{SOURCE3} .
cp %{SOURCE4} .
unzip -q %{SOURCE5}

dos2unix *.txt
chmod 644 *.txt

#install -dm 755 plugins
for i in rating azplugins azupdater; do
	install -dm 755 plugins/$i
done
install -m 644 %{SOURCE6} plugins/rating
install -m 644 %{SOURCE7} plugins/azplugins
unzip -q %{SOURCE8} -d plugins/azupdater

%install
[ -d %{buildroot} -a "%{buildroot}" != "" ] && rm -rf %{buildroot}

# jars
install -dm 755 %{buildroot}%{_javadir}/%{name}
install -m 644 %{SOURCE0} %{buildroot}%{_javadir}/%{name}/%{name}2.jar

# swt-jar
#install -dm 755 %{buildroot}%{_javadir}/%{name}
install -m 644 swt*/swt.jar %{buildroot}%{_javadir}/%{name}/swt-%{_swt_version}.jar
(cd %{buildroot}%{_javadir}/%{name} && for jar in *-%{_swt_version}*; do ln -sf ${jar} `echo $jar| sed "s|-%{_swt_version}||g"`; done)

# swt-libs
install -dm 755 %{buildroot}%{_libdir}/%{name}
install -m 644 -s swt*/*.so* %{buildroot}%{_libdir}/%{name}

# swt-docs
install -dm 755 %{buildroot}%{_docdir}/%{name}/swt
install -m 644 swt*/*.html        %{buildroot}%{_docdir}/%{name}/swt
install -m 644 swt*/about_files/* %{buildroot}%{_docdir}/%{name}/swt

# docs
install -dm 755 %{buildroot}%{_docdir}/%{name}
for i in License README; do
	install -m 644 %{name}-$i.txt %{buildroot}%{_docdir}/%{name}/$i.txt
done	

# plugins
install -dm 755 %{buildroot}%{_javadir}/%{name}
cp -r plugins %{buildroot}%{_javadir}/%{name}

# icons
install -dm 755 %{buildroot}%{_datadir}/pixmaps
install -m 644 *.png %{buildroot}%{_datadir}/pixmaps

# menu
install -dm 755 %{buildroot}%{_datadir}/applications
cat > %{buildroot}%{_datadir}/applications/%{name}.desktop <<EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Exec=%{name}.sh
Icon=%{name}.png
Terminal=0
Name=%{name}
Comment=%{summary}
EOF
%suse_update_desktop_file %{name} Network P2P

# startscript
cat > %{name}.sh <<EOF
#! /bin/bash

# source the jpackage helpers
VERBOSE=1
. %{_javadir}-utils/java-functions

# set JAVA_* environment variables
set_javacmd
check_java_env
set_jvm_dirs

CLASSPATH=\`build-classpath %{name}/%{name}2 %{name}/swt\`
MAIN_CLASS="org.gudy.azureus2.ui.swt.Main"
set_options "-Xms16m -Xmx128m -Djava.library.path="%{_libdir}/%{name}""

run "\$@" 2> /tmp/%{name}.log
EOF

cat > %{name}-console.sh <<EOF
#! /bin/bash

# source the jpackage helpers
VERBOSE=1
. %{_javadir}-utils/java-functions

# set JAVA_* environment variables
set_javacmd
check_java_env
set_jvm_dirs

CLASSPATH=\`build-classpath %{name}/%{name}2 %{name}/swt log4j jakarta-commons-cli\`
MAIN_CLASS="org.gudy.azureus2.ui.swt.Main"
set_options "-Xms16m -Xmx128m -Djava.library.path="%{_libdir}/%{name}""

run --ui=console "\$@" 2> /tmp/%{name}-console.log
EOF

install -dm 755 %{buildroot}%{_bindir}
install -m 755 %{name}.sh         %{buildroot}%{_bindir}
install -m 755 %{name}-console.sh %{buildroot}%{_bindir}
(cd %{buildroot}%{_bindir} && ln -s %{name}.sh azureus)

# exclude swt-libs from the provide-list
cat << EOF > %{my_provides}
grep -v %{buildroot}%{_libdir}/%{name} | %{__find_provides}
EOF
chmod 755 %{my_provides}
%define __find_provides %{my_provides}

# exclude libjawt.so from the requires-list (it is NOT provided by java ...)
cat << EOF > %{my_requires}
%{__find_requires} | grep -v "libjawt.so"
EOF
chmod 755 %{my_requires}
%define __find_requires %{my_requires}

%clean
[ -d %{buildroot} -a "%{buildroot}" != "" ] && rm -rf %{buildroot}
rm -f %{my_provides}
rm -f %{my_requires}

%files
%defattr(-,root,root)
%{_docdir}/%{name}/*.txt
%{_bindir}/%{name}.sh
%{_bindir}/azureus
%dir %{_javadir}/%{name}
%{_javadir}/%{name}/%{name}2.jar
%{_javadir}/%{name}/plugins
%{_datadir}/pixmaps/*.png
%{_datadir}/applications/%{name}.desktop

%files libswt3-gtk2
%defattr(-,root,root)
%{_docdir}/%{name}/swt
%dir %{_javadir}/%{name}
%{_javadir}/%{name}/swt*.jar
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/*.so*

%files console
%defattr(-,root,root)
%{_bindir}/%{name}-console.sh

%changelog
* Tue Feb 28 2006 oc2pus <oc2pus_at_arcor.de> - 2.4.0.1-B13.oc2pus.1
- update to 2.4.0.1-B13
* Thu Feb 23 2006 oc2pus <oc2pus_at_arcor.de> - 2.4.0.1-B9.oc2pus.1
- update to 2.4.0.1-B9
- startscript using jpackage-utils
* Sun Feb 12 2006 oc2pus <oc2pus_at_arcor.de> - 2.4.0.0-B00.oc2pus.1
- update to 2.4.0.0
* Fri Feb 10 2006 oc2pus <oc2pus_at_arcor.de> - 2.3.0.7-B51.oc2pus.1
- initial build 2.3.0.7-B51

%changelog libswt3-gtk2
* Thu Feb 28 2006 oc2pus <oc2pus_at_arcor.de> - I20060228_0800-0.oc2pus.1
- update to I20060228_0800
* Thu Feb 09 2006 oc2pus <oc2pus_at_arcor.de> - I20060131_0800-0.oc2pus.1
- initial build I20060131_0800

5.)
Nun wandeln wir den Bauplan mit dem den Befehlen
Code:
cd /usr/src/packages
rpmbuild -ba SPECS/Azureus.spec
in die RPMs um.

6.)
Nach dem der Build erfolgreich beendet wurde, finden wir in /usr/src/packages/RPMS/i585 drei RPMs vor.
Azureus-2.4.0.1-B13.oc2pus.1.i586.rpm
Azureus-console-2.4.0.1-B13.oc2pus.1.i586.rpm
Azureus-libswt3-gtk2-I20060228_0800-0.oc2pus.1.i586

Diese können dann mit dem Befehl
Code:
rpm -Uhv Azureus*
installiert werden.

7.)
Das Programm wird dann über das KDE-Menu gestartet.
Für Konsolen-Freaks mit azureus oder mit azureus-console.sh ohne GUI.

8.) Update unseres Paketes
Wenn wir den Azureus updaten von B13 auf einen neueren, dann muss diese Variable im Spec-File angepasst werden:
%define _az_build B13

Wenn der Azureus nach einem neueren SWT verlangt, dann müssen diese Variablen angepasst werden:
%define _swt_version I20060228-0800
%define _swt_version2 I20060228_0800
 
Die RPMs dieses Workshops werden ab morgen auch in meinem Repository (für SuSE-9.3 und SuSE-10.0) zur Verfügung stehen.

Installation mit:
apt install Azureus Azureus-libswt3-gtk2

oder von hier:
http://ftp4.gwdg.de/pub/linux/suse/apt/SuSE/10.0-i386/RPMS.suser-oc2pus/
http://ftp4.gwdg.de/pub/linux/suse/apt/SuSE/9.3-i386/RPMS.suser-oc2pus/

oder mit YaST, wenn mein YaST Repository integriert wurde.

kleine Anmerkung am Rande:
Diese RPMs sind NICHT kompatibel zu dem azureus Paket von suser-gbv, der stellt immer den aktuellen stable Azureus zur Verfügung.

Meine RPMs sind bleeding edge!, sie enthalten den neuesten Azureus, also das nightly-build und die neuesten swt-libs von eclipse.

You've be warned :mrgreen:
 
Nach Rücksprache mit Guillermo Ballester Valor (=suser-gbv) übernehme ich das azureus Paket in mein Repository und er wird keine updates mehr bringen. Seine gestrige Version von "azureus" war also sein letztes update.

Die swt-libs werden von weiteren Paketen aus meinem Repository benötigt (jameica, ...), d.h es ergibt sich dann ein "kleineres" Download-Volumen da eine "Komponente" mehrfach eingesetzt werden kann und sich die azureus-jars öfter ändern als die zugrunde liegenden swt-Klassen und Bibliotheken.

Ein kleiner Nachteil:
es gibt dann für eine kurze Zeit die Pakete "azureus" (suser-gbv) und "Azureus", "Azureus-libswt3-gtk2" (suser-oc2pus)

Das Azureus-libswt3-gtk2 Paket wird dann in nächster Zeit wohl einen neuen Namen erhalten. Aber apt sollte das weitere dann regeln ;)
 
Wow danke, aber kannst du nicht vielleicht auch Azureus-stable-Pakete machen?

Denn für 10.1 gibt es nur dein unstable-Azureus und öh ich fahr lieber "sicher". :wink: Ansonsten auch noch ein "Cool, du hast den TV-Browser in deinem Repo!!". Danke auch dafür! :)
 
Kleiner Hinweis: Dein Azureus-console im 9.3-Repo will jakarta-commons-cli, was nirgends in den gwdg-Repos ( http://ftp4.gwdg.de/pub/linux/suse/apt/SuSE/9.3-i386/examples/sources.list.HTTP ) zu finden ist...
 
kreegee schrieb:
Kleiner Hinweis: Dein Azureus-console im 9.3-Repo will jakarta-commons-cli, was nirgends in den gwdg-Repos ( http://ftp4.gwdg.de/pub/linux/suse/apt/SuSE/9.3-i386/examples/sources.list.HTTP ) zu finden ist...

doch das gibt es bei jpackage ...
wie das eingebunden wird, siehe im APT-Forum
 
Danke, damit läufts jetzt tatsächlich :)

edit: doch nicht, aber liegt glaubs dran dass ich kein gnome hab. (Azureus-libswt3-gtk2 will alles mögliche bis hin zu libxpcom das es gar nicht als lib sondern nur innerhalb von den mozilla-apps gibt)
 
kreegee schrieb:
Danke, damit läufts jetzt tatsächlich :)

edit: doch nicht, aber liegt glaubs dran dass ich kein gnome hab. (Azureus-libswt3-gtk2 will alles mögliche bis hin zu libxpcom das es gar nicht als lib sondern nur innerhalb von den mozilla-apps gibt)
quatsch, was hat gnome damit zu tun ?

geh ins apt-Forum, geh direkt dorthin, beziehe eine "ordentliche" sources.list und dann
Code:
apt install Azureus

und das funzt :mrgreen: .... zumindest bei einigen 1000 SuSE-Usern OHNE Probleme.
 
Cono schrieb:
Wow danke, aber kannst du nicht vielleicht auch Azureus-stable-Pakete machen?
Nö :mrgreen:

Ich teste die jeweilige Version immer selber und es werden nur die Azureus Versionen via apt zur Verfügung gestellt welche bei mir funktionieren.

Ansonsten kannst du das obige SPEC für einen stable-Azureus ganz einfach abwandeln und dein eigenes Paket erstellen.
 
Nunjaaa... ich probier beides mal aus!

Jedenfalls beim TV-Browser hab ich unlösbare Abhängigkeitskonflikte... ich guck gleich nochmal! Und dieses applejuice will ich auch ausprobieren, aber AJClientGUI hat auch Abhängigkeitskonflikte!
Brauch man dieses "ajcorefassade"?

Oh und darf man auch Wünsche für neue Pakete äußern?
 
Cono schrieb:
Nunjaaa... ich probier beides mal aus!

Jedenfalls beim TV-Browser hab ich unlösbare Abhängigkeitskonflikte... ich guck gleich nochmal! Und dieses applejuice will ich auch ausprobieren, aber AJClientGUI hat auch Abhängigkeitskonflikte!
Brauch man dieses "ajcorefassade"?
dir fehlt schlicht uns einfach das jpackage-Repository bei apt bzw der jpackage-Channel für smart.

Aber weitere Informationen bekommst du hier in diesem Thread nicht ... hier geht es um das Azureus RPM und nicht um Applejuice oder tvbrowser oder was weiss ich ...

Cono schrieb:
Oh und darf man auch Wünsche für neue Pakete äußern?
:mrgreen:
 
So wegen Auto-Updates in Azureus... die sind ja in deinem RPM aktiviert:

Soll man also via Azureus updaten oder auf neue RPMs von dir warten? Weil wenn letzteres, dann würd ich die Voreinstellungen in deinen Paketen nämlich ändern!

mfg
 
Cono schrieb:
So wegen Auto-Updates in Azureus... die sind ja in deinem RPM aktiviert:

Soll man also via Azureus updaten oder auf neue RPMs von dir warten? Weil wenn letzteres, dann würd ich die Voreinstellungen in deinen Paketen nämlich ändern!
verstehe ich nicht.

da Azureus durch das RPM zentral in /usr/share/java installiert ist, wird der autoupdater scheitern ohne root-Rechte. Dagegen die plugins werden beim jeweiligen User im plugin-Verzeichnis gespeichert. Das ist so gewollt. Jeder User kann dann seine eigenen Plugins haben.
 
Achso dann geht das sowieso nicht!!

Dann würd ich das aber auch standardmäßig ausschalten, denn dieses Popup nervt dann doch ein wenig...
 
Cono schrieb:
Dann würd ich das aber auch standardmäßig ausschalten, denn dieses Popup nervt dann doch ein wenig...

1.) kannst du selber deaktivieren ..
2.) es werden auch Aktualisierungen für installierte Plugins angezeigt. Also werde ich es nicht abschalten :mrgreen:
3.) du kannst dir ja dein eigenes Azureus RPM erstellen, dazu dient ja gerade dieser Workshop
 
Im Rahmen der Migration meines Repositories zu packman, gibt es den Azureus nun nur noch via packman.

Eine 64bit Variante liegt nun ebenfalls vor. Thx to Detlef !

Viel Spass damit.
 
Status
Für weitere Antworten geschlossen.
Oben