diff -ura dpkg-1.14.20.orig/ostable dpkg-1.14.20/ostable
--- dpkg-1.14.20.orig/ostable	2007-07-28 15:29:49.000000000 +0000
+++ dpkg-1.14.20/ostable	2008-08-27 00:15:59.727084652 +0000
@@ -19,6 +19,7 @@
 gnu-linux	linux-gnu	linux[^-]*(-gnu.*)?
 gnu-kfreebsd	kfreebsd-gnu	kfreebsd[^-]*(-gnu.*)?
 gnu-knetbsd	knetbsd-gnu	knetbsd[^-]*(-gnu.*)?
+gnu-kopensolaris	kopensolaris-gnu	kopensolaris[^-]*(-gnu.*)?
 gnu-hurd	gnu		gnu[^-]*
 bsd-darwin	darwin		darwin[^-]*
 bsd-freebsd	freebsd		freebsd[^-]*
diff -ura dpkg-1.14.20.orig/triplettable dpkg-1.14.20/triplettable
--- dpkg-1.14.20.orig/triplettable	2007-07-28 15:29:49.000000000 +0000
+++ dpkg-1.14.20/triplettable	2008-08-26 22:48:30.984452830 +0000
@@ -8,6 +8,7 @@
 gnu-linux-<cpu>		<cpu>
 gnu-kfreebsd-<cpu>	kfreebsd-<cpu>
 gnu-knetbsd-<cpu>	knetbsd-<cpu>
+gnu-kopensolaris-<cpu>	kopensolaris-<cpu>
 gnu-hurd-<cpu>		hurd-<cpu>
 bsd-freebsd-<cpu>	freebsd-<cpu>
 bsd-openbsd-<cpu>	openbsd-<cpu>
diff -ura dpkg-1.14.20.orig/utils/start-stop-daemon.c dpkg-1.14.20/utils/start-stop-daemon.c
--- dpkg-1.14.20.orig/utils/start-stop-daemon.c	2008-05-05 17:07:01.000000000 +0000
+++ dpkg-1.14.20/utils/start-stop-daemon.c	2008-08-26 22:44:19.155872409 +0000
@@ -28,7 +28,7 @@
 #  define OSLinux
 #elif defined(__GNU__)
 #  define OSHURD
-#elif defined(__sun)
+#elif defined(__sun) || defined(__OpenSolaris_kernel__)
 #  define OSsunos
 #elif defined(OPENBSD) || defined(__OpenBSD__)
 #  define OSOpenBSD
@@ -676,7 +676,9 @@
 
 	return (sb.st_dev == esb->st_dev && sb.st_ino == esb->st_ino);
 }
+#endif
 
+#if defined(OSLinux) || defined(OSsunos)
 static int
 pid_is_user(pid_t pid, uid_t uid)
 {
@@ -712,7 +714,7 @@
 	fclose(f);
 	return (c == ')' && *name == '\0');
 }
-#endif /* OSLinux */
+#endif /* OSLinux || OSsunos */
 
 #if defined(OSHURD)
 static void
