forked from I2P_Developers/i2p.i2p
add package dependency document
This commit is contained in:
193
debian-alt/doc/dependencies.txt
Normal file
193
debian-alt/doc/dependencies.txt
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
This document is for Debian package maintainers.
|
||||||
|
It contains an overview of current package dependencies,
|
||||||
|
the plan for improvement, and other notes.
|
||||||
|
These notes will also be helpful for non-Debian package maintainers.
|
||||||
|
|
||||||
|
We are not packaging experts, but we are doing the best we can to
|
||||||
|
improve our official packages and support other packagers.
|
||||||
|
Our packages are available at https://deb.i2p2.de/ and
|
||||||
|
instructions are at https://geti2p.net/debian
|
||||||
|
|
||||||
|
This document is current as of release 0.9.28, 2016-12-12.
|
||||||
|
|
||||||
|
|
||||||
|
Build-only Dependencies
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
* ant
|
||||||
|
This is the standard java build system.
|
||||||
|
|
||||||
|
|
||||||
|
Current Runtime Dependencies
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
* Java JDK/JRE
|
||||||
|
We require openjdk-7-java to build, and any Java 7, 8, or 9 runtime to run.
|
||||||
|
Java 9 may still have some issues; see https://trac.i2p2.de/ticket/1870 for status
|
||||||
|
|
||||||
|
* libecj-java
|
||||||
|
This is for compilation on-the-fly of webapps, but we don't really support that,
|
||||||
|
not sure why it's in there, to be researched, candidate for removal.
|
||||||
|
|
||||||
|
* geoip-database
|
||||||
|
In non-Debian builds we bundle our own geoip data;
|
||||||
|
for Debian builds we use the system data.
|
||||||
|
|
||||||
|
* gettext-base
|
||||||
|
For /usr/share/java/libintl.jar.
|
||||||
|
In non-Debian builds we bundle the source code; it's removed in the Debian source package.
|
||||||
|
|
||||||
|
* libgetopt-java
|
||||||
|
For /usr/share/java/gnu-getopt.jar.
|
||||||
|
In non-Debian builds we bundle the source code; it's removed in the Debian source package.
|
||||||
|
|
||||||
|
* libjetty8-java
|
||||||
|
For /usr/share/java/jetty8-*.jar.
|
||||||
|
In non-Debian builds we bundle the jars; it's removed in the Debian source package.
|
||||||
|
For some Debian and Ubuntu releases, these seem to be much older than what we're bundling,
|
||||||
|
which is 8.1.21, but there's no particular version that we need.
|
||||||
|
Jetty 8 is now EOL and we plan to migrate to Jetty 9.x in late 2017.
|
||||||
|
Jetty 9.2.x is in recent Ubuntu, but not Debian?
|
||||||
|
Jetty 9 ticket is https://trac.i2p2.de/ticket/1512
|
||||||
|
Updating Jetty may break external plugins. Extensive testing is required.
|
||||||
|
Note that the libjetty8-java dependency brings in libservlet3.0-java which we require.
|
||||||
|
|
||||||
|
* glassfish-javaee
|
||||||
|
We need jstl.jar and standard.jar version 1.2.
|
||||||
|
This is an ancient and terrible package, but it's the only place we've found version 1.2 jars.
|
||||||
|
standard.jar classes are inside /usr/share/java/glassfish-appserv-jstl.jar
|
||||||
|
jstl.jar classes are inside /usr/share/java/glassfish-javaee.jar but we can't use it
|
||||||
|
because there are too many conflicting, old, unrelated classes in there, so we currently
|
||||||
|
bundle jstl.jar even in Debian builds.
|
||||||
|
We've found some other packages that contain version 1.1 jars:
|
||||||
|
libjakarta-taglibs-standard-java (containing standard.jar only)
|
||||||
|
and libjstl1.1-java (containing jstl.jar only).
|
||||||
|
They may be inside tomcat or jetty packages also?
|
||||||
|
It's not clear why there isn't a libjstl1.2-java package.
|
||||||
|
It also isn't clear why we upgraded to 1.2 years ago, but the rest of the world didn't.
|
||||||
|
And it isn't clear why 1.1 won't work for us.
|
||||||
|
|
||||||
|
* service-wrapper
|
||||||
|
In non-Debian builds we bundle the jars; it's removed in the Debian source package.
|
||||||
|
For some Debian and Ubuntu releases, these seem to be much older than what we're bundling,
|
||||||
|
which is 3.5.30, but there's no particular version that we need.
|
||||||
|
|
||||||
|
* libgmp-dev
|
||||||
|
In non-Debian builds we bundle compiled C code; in the Debian packages we have a small
|
||||||
|
C shim that links to the libgmp .so file.
|
||||||
|
We depend on libgmp-dev for both the build and the runtime, but perhaps only the
|
||||||
|
libgmp10 package is required for runtime? To be researched.
|
||||||
|
|
||||||
|
|
||||||
|
Bundled code, NOT current dependencies
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
These are packages that we at least partially bundle jars or java source for,
|
||||||
|
even in Debian builds. For most of these we could remove the code and add
|
||||||
|
a dependency if the package were widely available.
|
||||||
|
We have not created private packages for any of these, we just bundle
|
||||||
|
the binaries or sources.
|
||||||
|
|
||||||
|
* geoip-java
|
||||||
|
Java interface to access geoip data.
|
||||||
|
We bundle source from https://github.com/maxmind/geoip-api-java
|
||||||
|
No package or not widely available.
|
||||||
|
|
||||||
|
* hashcash
|
||||||
|
One Java source file.
|
||||||
|
From http://www.nettgryppa.com/code/
|
||||||
|
No package or not widely available.
|
||||||
|
We don't really use this code anyway, but it would break compilation if we took it out.
|
||||||
|
|
||||||
|
* identicon
|
||||||
|
Small number of Java source files, modified.
|
||||||
|
From https://github.com/PauloMigAlmeida/identicon
|
||||||
|
No package or not widely available.
|
||||||
|
|
||||||
|
* jrobin
|
||||||
|
This is the Java graphing package.
|
||||||
|
We bundle a large portion of the 1.6.0 source from https://github.com/OpenNMS/jrobin
|
||||||
|
No package or not widely available.
|
||||||
|
|
||||||
|
* libtomcat6-java
|
||||||
|
We currently require Tomcat 6, which is EOL and not available in newer Debian/Ubuntu releases.
|
||||||
|
We plan to migrate to Tomcat 8 in mid-to-late 2017. It's not currently clear if we can
|
||||||
|
or will update Tomcat before we update to Jetty 9, or if we must couple the two.
|
||||||
|
Newer packages are libtomcat7-java and libtomcat8-java. We will probably skip over 7 and go straight to 8.
|
||||||
|
This page is quite helpful: http://tomcat.apache.org/whichversion.html
|
||||||
|
The Tomcat upgrade may also affect the glassfish/standard.jar/jstl.jar issue above.
|
||||||
|
See also the Java 9 ticket https://trac.i2p2.de/ticket/1870
|
||||||
|
Updating Tomcat may break external plugins, especially Bote. Extensive testing is required.
|
||||||
|
Tomcat 8 may not be available in older distributions.
|
||||||
|
Pretty sure we will have to pick 6 or 8, we can't leave it as either-or.
|
||||||
|
|
||||||
|
* libhttpclient-java
|
||||||
|
We only use a few classes from this large package.
|
||||||
|
We require 4.4 or higher which is not available in older distributions.
|
||||||
|
This is 2 MB of dependencies, instead we bundle 20 KB of copied source.
|
||||||
|
If we do add this dependency, we use only the code in
|
||||||
|
/usr/share/java/httpclient.jar and /usr/share/java/httpcore.jar.
|
||||||
|
|
||||||
|
* UPnP (cybergarage)
|
||||||
|
Large subsystem, large number of Java source files, modified with several fixes.
|
||||||
|
From https://github.com/cybergarage/cybergarage-upnp
|
||||||
|
No package or not widely available.
|
||||||
|
There is a competing UPnP library (libupnp-java) that is packaged, but it would be
|
||||||
|
a huge effort on our part to port our code to use that library instead.
|
||||||
|
Maybe we will do this some day, but it won't be soon.
|
||||||
|
|
||||||
|
* zxing
|
||||||
|
This is the QR/barcode library from Google.
|
||||||
|
We bundle a portion of the source from https://github.com/zxing/zxing
|
||||||
|
No package or not widely available.
|
||||||
|
|
||||||
|
|
||||||
|
Other Issues and TODO
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
* Building
|
||||||
|
As of 0.9.28, our Debian repo at https://deb.i2p2.de just contains
|
||||||
|
binaries copied from Launchpad. It's much easier than building them
|
||||||
|
ourselves, but it leaves non-x86 architectures out of date.
|
||||||
|
The directory above (debian-alt) contains various changes for different distros.
|
||||||
|
|
||||||
|
* Configuration
|
||||||
|
So that we may easily support dependency changes in various distributions,
|
||||||
|
and test alternatives, we output configuration settings to the override.properties
|
||||||
|
file in the rules script. There are extensive comments in the
|
||||||
|
rules, i2p-router.install, and i2p-router.links files.
|
||||||
|
There's probably a better or more-standard way to do this, but this makes it
|
||||||
|
easier for us, and for non-Debian packagers, if there are any.
|
||||||
|
|
||||||
|
* i2p-doc
|
||||||
|
This is just javadocs.
|
||||||
|
Added priority of 'extra' for 0.9.29, before that, everybody was installing it?
|
||||||
|
|
||||||
|
* Init/systemd
|
||||||
|
Kytv did the systemd and init script parts, no idea if it's compliant,
|
||||||
|
needs review.
|
||||||
|
|
||||||
|
* JCA issues.
|
||||||
|
This has never been a problem for Debian/Ubuntu, but many Gentoo, Redhat, and Fedora
|
||||||
|
distributions are missing or have broken ECDSA support in the Java Cryptography subsystem.
|
||||||
|
The console sidebar will show a warning and the router will log warnings if
|
||||||
|
ECDSA is not working. The router will still work, but the user will not be able
|
||||||
|
to access newer hidden services on the network. For best results, packagers
|
||||||
|
should ensure that the JCA supports ECDSA.
|
||||||
|
For further info, see https://trac.i2p2.de/wiki/Crypto/ECDSA
|
||||||
|
|
||||||
|
* Raspberry Pi
|
||||||
|
The performance of OpenJDK 8 on the raspberry pi is terrible, it's almost
|
||||||
|
unusable. The Oracle JDK is several times faster. But there's no package for that.
|
||||||
|
We tell people to use Oracle for ARM on our download page, but there's no
|
||||||
|
solution for package users.
|
||||||
|
|
||||||
|
* Splitting packages further
|
||||||
|
Might be nice to further split up the i2p-router package into just the
|
||||||
|
core headless router and the routerconsole/UI part.
|
||||||
|
Or even the susimail/susidns/i2psnark/i2ptunnel webapps also.
|
||||||
|
|
||||||
|
* Plugins
|
||||||
|
We don't have a strategy for building, installing, or finding packages for
|
||||||
|
3rd-party plugins using our plugin system. If we do that, then we can
|
||||||
|
have packages for popular plugins such as i2p-bote.
|
Reference in New Issue
Block a user