diff --git a/debian/control b/debian/control
index 9fd92ea70d31e15e1c5bf55d1bbd27e1253e45fd..1813b75594f4cfa5ad2a14151a64d9bd09ab81d0 100644
--- a/debian/control
+++ b/debian/control
@@ -9,8 +9,8 @@ Package: i2p
 Architecture: all
 Section: net
 Priority: optional
-Depends: java-runtime
-Description: load-balanced unspoofable packet switching network
+Depends: sun-java6-jre | default-jre | java-runtime
+Description: Load-balanced unspoofable packet switching network
  I2P is an anonymizing network, offering a simple layer that identity-sensitive
  applications can use to securely communicate. All data is wrapped with several
  layers of encryption, and the network is both distributed and dynamic, with no
diff --git a/debian/rules b/debian/rules
index 21009d70a04d1a735e000f459bd633e87aa721dd..e9d457d81f8eec03cfe5c5cf87c5e085c51c0593 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,5 +1,8 @@
 #!/usr/bin/make -f
 
+VERSION=`grep String\ VERSION core/java/src/net/i2p/CoreVersion.java | cut -d\" -f2`
+SOURCEURL=http://mirror.i2p2.de/i2psource_${VERSION}.tar.bz2
+
 build:
 	ant preppkg-linux-only
 	mkdir -p debian/tmp/usr/lib
@@ -12,14 +15,12 @@ build:
 	mkdir -p debian/tmp/usr/bin
 	sed 's|%INSTALL_PATH|/usr/lib/i2p|g' debian/tmp/usr/lib/i2p/eepget > debian/tmp/usr/lib/i2p/a
 	mv debian/tmp/usr/lib/i2p/a debian/tmp/usr/lib/i2p/eepget
-	cp debian/tmp/usr/lib/i2p/eepget  debian/tmp/usr/bin/eepget
-	chmod +x debian/tmp/usr/bin/eepget
+	ln -s /usr/lib/i2p/eepget debian/tmp/usr/bin/eepget
 	sed 's|%INSTALL_PATH|/usr/lib/i2p|g' debian/tmp/usr/lib/i2p/runplain.sh > debian/tmp/usr/lib/i2p/a
 	sed 's|%SYSTEM_java_io_tmpdir|/tmp|g' debian/tmp/usr/lib/i2p/a > debian/tmp/usr/lib/i2p/runplain.sh
 	sed 's|%INSTALL_PATH|/usr/lib/i2p|g' debian/tmp/usr/lib/i2p/i2prouter > debian/tmp/usr/lib/i2p/a
 	sed 's|%SYSTEM_java_io_tmpdir|/tmp|g' debian/tmp/usr/lib/i2p/a > debian/tmp/usr/lib/i2p/i2prouter
-	cp debian/tmp/usr/lib/i2p/i2prouter debian/tmp/usr/bin/i2prouter
-	chmod +x debian/tmp/usr/bin/i2prouter
+	ln -s /usr/lib/i2p/i2prouter debian/tmp/usr/bin/i2prouter
 	rm debian/tmp/usr/lib/i2p/a
 	touch debian/build
 
@@ -34,3 +35,6 @@ clean:
 	rm -rf debian/tmp/
 	ant distclean
 	@exit 0
+
+get-orig-source:
+	wget ${SOURCEURL}
diff --git a/debian/scripts/init b/debian/scripts/init
index 57efc1a2aa4a1f4b1faf7b3a583b6ba81013e11c..e196a9404d0cfb033ac28961895bb16fea3376fc 100755
--- a/debian/scripts/init
+++ b/debian/scripts/init
@@ -17,6 +17,11 @@ I2P () {
 	su i2psvc -c "/usr/lib/i2p/i2prouter $1"
 }
 
+if [ `id -un` != "root" ]; then
+	echo "This script ($0) must be run as root"
+	exit 1
+fi
+
 case "$1" in
   start)
 	log_daemon_msg "Starting I2P" "i2p"
diff --git a/debian/scripts/postinst b/debian/scripts/postinst
index 25ccaec33edf03d400548c5ac693dc12aaeddec3..6d76f2f0cf82935ed0c4f189109728473637203c 100755
--- a/debian/scripts/postinst
+++ b/debian/scripts/postinst
@@ -11,4 +11,10 @@ chown $I2PUSER:$I2PUSER $SVCHOME
 update-rc.d i2p defaults
 
 cd $I2P
-exec su $I2PUSER ./postinstall.sh
+su $I2PUSER ./postinstall.sh
+
+chmod 755 /usr/lib/i2p/eepget
+chmod 755 /usr/lib/i2p/i2prouter
+chmod 755 /usr/lib/i2p/i2psvc
+
+invoke-rc.d i2p start
diff --git a/debian/scripts/postrm b/debian/scripts/postrm
index f4c7218a2ebb4c62ae67e560690f46fd1d77b7ce..a768a036c3a812c5a08beab68a43ba9b7d47335a 100755
--- a/debian/scripts/postrm
+++ b/debian/scripts/postrm
@@ -1,4 +1,12 @@
 #!/bin/sh
+
+# $1 is either "remove" or "purge". Since there are no config
+# files left after a remove, exit here if called with "purge".
+# This avoids calling userdel again which would cause an error.
+if [ "$1" = "purge" ]; then
+	exit 0;
+fi
+
 I2PUSER=i2psvc
 exec userdel $I2PUSER