diff --git a/bin/install_module b/bin/install_module
new file mode 100755
index 0000000000000000000000000000000000000000..89824b4cd80315a64f3ade9cef18d89c118344fe
--- /dev/null
+++ b/bin/install_module
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# install_module <from> <to>
+
+
+FROM="$1"
+TO="$2"
+
+DIRS_TO_MAKE=
+
+DIR="$TO"
+while :
+do
+  DIR=`echo $DIR | sed -e 's@/[^/]*$@@'`
+
+  case "$DIR" in
+    *.pmod)
+      if [ -d "$DIR" ]; then
+         break
+      else
+         :
+      fi
+
+
+      if [ -f "$DIR" ]; then
+        mv "$DIR" "$DIR-foo"
+        mkdir $DIR
+        mv "$DIR-foo" "$DIR/module.pmod"
+        break
+      fi
+
+      BASE=`echo $DIR | sed -e 's/\.[^.]*$//'`
+
+      if [ -f "$BASE.so" ]; then
+        mkdir "$DIR"
+        mv "$BASE.so" "$DIR/module.so"
+        break
+      fi
+
+#FIXME: Add sed expression to quote spaces, quotes etc. in $DIR
+      DIRS_TO_MAKE="$DIR $DIRS_TO_MAKE"
+    ;;
+    *) break ;;
+  esac
+
+done
+
+BASE=`echo $TO | sed -e 's/\.[^.]*$//'`
+
+if test "x$DIRS_TO_MAKE" != x; then
+  mkdir $DIRS_TO_MAKE
+else
+  :
+fi
+
+if [ -d "$BASE.pmod" ]; then
+  EXT=`echo $TO | sed -e 's@(\.[^.]$)@\1@/'`
+  TO="$BASE.pmod/module.$EXT"
+fi
+
+
+exec cp "$FROM" "$TO"