diff --git a/debian/scripts/postinst b/debian/scripts/postinst
index 24ed3e3de3998da784230734eec9bfea76f5d504..f6d7c034b5959f574ecd73ada70298c6948c6be5 100755
--- a/debian/scripts/postinst
+++ b/debian/scripts/postinst
@@ -1,4 +1,6 @@
 #!/bin/sh
+set -e
+
 SVCHOME=/var/lib/i2p
 I2P=/usr/share/i2p
 I2PUSER=i2psvc
diff --git a/debian/scripts/postrm b/debian/scripts/postrm
index 38a4170ab1636e7ef9ba9fd9f06bf221305205f4..83f06ce7812d8126e111fc574b54a3e9e3fc272b 100755
--- a/debian/scripts/postrm
+++ b/debian/scripts/postrm
@@ -1,12 +1,14 @@
 #!/bin/sh
+set -e
 
 # /etc/rc*.d/*i2p files	
 update-rc.d -f i2p remove
 
 I2PUSER=i2psvc
 # delete $I2PUSER if it exists (it will not if this is a purge after a remove)
-id $I2PUSER 2>/dev/null
-if [ $? -eq 0 ]; then
+# the "| cat" sets the exit code to zero so the script doesn't abort
+entry=`getent passwd | cut -d: -f1 | grep i2psvc | cat`
+if [ -n "$entry" ]; then
     exec userdel $I2PUSER
 fi
 
diff --git a/debian/scripts/prerm b/debian/scripts/prerm
index 18c1f792825a5be4617cba436059a34b73210506..1777a4ecbaff77aa6aed273674d374c595aff723 100755
--- a/debian/scripts/prerm
+++ b/debian/scripts/prerm
@@ -1,4 +1,6 @@
 #!/bin/sh
+set -e
+
 invoke-rc.d i2p stop
 
 # stuff in /tmp