diff -urN src.old/dialog_apt_key.py.in src/dialog_apt_key.py.in
--- src.old/dialog_apt_key.py.in	2005-06-07 15:06:43.496174666 -0300
+++ src/dialog_apt_key.py.in	2005-06-07 13:37:40.912702720 -0300
@@ -23,10 +23,8 @@
 import gobject
 import gtk
 import gtk.glade
-import subprocess
 import gettext
 from utils import error
-from subprocess import PIPE
 
 # gettext convenient
 _ = gettext.gettext
@@ -39,23 +37,20 @@
 
 class apt_key:
     def __init__(self):
-        self.gpg = ["/usr/bin/gpg"]
-        self.base_opt = self.gpg + ["--no-options", "--no-default-keyring",
-                                    "--secret-keyring", "/etc/apt/secring.gpg",
-                                    "--trustdb-name", "/etc/apt/trustdb.gpg",
-                                    "--keyring", "/etc/apt/trusted.gpg"]
-        self.list_opt = self.base_opt + ["--with-colons", "--batch",
-                                         "--list-keys"]
-        self.rm_opt = self.base_opt + ["--quiet", "--batch",
-                                       "--delete-key", "--yes"]
-        self.add_opt = self.base_opt + ["--quiet", "--batch",
-                                        "--import"]
+        self.gpg = "/usr/bin/gpg"
+        self.base_opt = self.gpg + " --no-options --no-default-keyring " +\
+                        "--secret-keyring /etc/apt/secring.gpg " +\
+                        "--trustdb-name /etc/apt/trustdb.gpg " +\
+                        "--keyring /etc/apt/trusted.gpg"
+        self.list_opt = self.base_opt + " --with-colons --batch --list-keys"
+        self.rm_opt = self.base_opt + " --quiet --batch --delete-key --yes"
+        self.add_opt = self.base_opt + " --quiet --batch --import"
         
        
     def list(self):
         res = []
         #print self.list_opt
-        p = subprocess.Popen(self.list_opt,stdout=PIPE).stdout
+        p = os.popen(self.list_opt)
         for line in p.readlines():
             fields = line.split(":")
             if fields[0] == "pub":
@@ -66,21 +61,18 @@
     def add(self, filename):
         #print "request to add " + filename
         cmd = self.add_opt[:]
-        cmd.append(filename)
-        p = subprocess.Popen(cmd)
-        return (p.wait() == 0)
+        cmd + " " + filename
+        return (not os.system (cmd))
         
     def update(self):
-        cmd = ["/usr/bin/apt-key", "update"]
-        p = subprocess.Popen(cmd)
-        return (p.wait() == 0)
+        cmd = "/usr/bin/apt-key update"
+        return (not os.system (cmd))
 
     def rm(self, key):
         #print "request to remove " + key
         cmd = self.rm_opt[:]
-        cmd.append(key)
-        p = subprocess.Popen(cmd)
-        return (p.wait() == 0)
+        cmd + " " + key
+        return (not os.system (cmd))
 
 class dialog_apt_key:
   def __init__(self, parent):
diff -urN src.old/gnome-software-properties.in src/gnome-software-properties.in
--- src.old/gnome-software-properties.in	2005-06-07 15:06:43.503173682 -0300
+++ src/gnome-software-properties.in	2005-06-07 14:50:47.177226345 -0300
@@ -35,7 +35,6 @@
 import string
 import time
 import tempfile
-import subprocess
 from optparse import OptionParser
 import apt_pkg
         
@@ -104,16 +103,26 @@
       if options.no_update:
         gtk.main_quit()
         sys.exit(1)
-      child = subprocess.Popen(["/usr/sbin/synaptic", "--update-at-startup",
-                                "--hide-main-window","--non-interactive"],
-                               close_fds=True)
-      # wait for the child to finish
-      while child.poll() == None:
-        time.sleep(0.05)
-        while gtk.events_pending():
-          gtk.main_iteration()
-        gtk.main_quit()
-        sys.exit(1)
+      pid = os.fork ()
+      if pid == 0:
+        os.execv ("/usr/bin/synaptic",
+                  ["/usr/sbin/synaptic",
+                   "--update-at-startup",
+                   "--hide-main-window",
+                   "--non-interactive"])
+      elif pid < 0:
+        win = gtk.MessageDialog (self.main_window, 0, gtk.MESSAGE_ERROR,
+                                 gtk.BUTTONS_CLOSE, _("Error trying to run "
+                                                      "Synaptic."))
+        win.run ()
+        win.destroy ()
+      else:
+        retpid = 0
+        while not retpid:
+          retpid, status = os.waitpid (pid, os.WNOHANG)
+          time.sleep (0.05)
+          while gtk.events_pending():
+            gtk.main_iteration()
     gtk.main_quit()
 
   def on_button_edit_clicked(self, widget, data):
@@ -172,12 +181,22 @@
     cmd = ["/usr/sbin/synaptic", "--hide-main-window",  "--non-interactive",
            "-o","Dir::Etc::sourcelist=%s" % tmp.name,"--ask-cdrom" ]
     self.main_window.set_sensitive(False)
-    proc = subprocess.Popen(cmd)
-    # wait for process to finish
-    while proc.poll() == None:
-      while gtk.events_pending():
-        gtk.main_iteration()
-      time.sleep(0.05)
+    pid = os.fork ()
+    if pid == 0:
+      os.execv (cmd[0], cmd)
+    elif pid < 0:
+      win = gtk.MessageDialog (self.main_window, 0, gtk.MESSAGE_ERROR,
+                               gtk.BUTTONS_CLOSE, _("Error trying to run "
+                                                    "Synaptic."))
+      win.run ()
+      win.destroy ()
+    else:
+      retpid = 0
+      while not retpid:
+        retpid, status = os.waitpid (pid, os.WNOHANG)
+        time.sleep (0.05)
+        while gtk.events_pending():
+          gtk.main_iteration()
     self.main_window.set_sensitive(True)
     # read tmp file with source name
     line = ""
diff -urN src.old/update-manager.in src/update-manager.in
--- src.old/update-manager.in	2005-06-07 15:06:43.515171995 -0300
+++ src/update-manager.in	2005-06-07 14:46:39.794184235 -0300
@@ -44,7 +44,6 @@
 import rfc822
 import gconf
 import pango
-import subprocess
 import pwd
 
 # FIXME:
@@ -350,23 +349,21 @@
       self.cursor_changed(self.treeview)
 
   def run_synaptic(self, id, action, lock):
-    cmd = ["/usr/sbin/synaptic", "--hide-main-window",  "--non-interactive",
-           "--plug-progress-into", "%s" % (id) ]
+    cmd = "/usr/sbin/synaptic --hide-main-window --non-interactive " \
+          "--plug-progress-into %s" % (id)
     if action == INSTALL:
-      cmd.append("--set-selections")
-      cmd.append("--progress-str")
-      cmd.append("%s" % _("The updates are being applied."))
-      cmd.append("--finish-str")
-      cmd.append("%s" %  _("Upgrade finished"))
-      proc = subprocess.Popen(cmd, stdin=subprocess.PIPE)
-      f = proc.stdin
+      cmd += " --set-selections"
+      cmd += " --progress-str"
+      cmd += " %s" % _("The updates are being applied.")
+      cmd += " --finish-str"
+      cmd += " %s" %  _("Upgrade finished")
+      proc = os.popen(cmd, 'w')
       for s in self.packages:
-        f.write("%s\tinstall\n" % s)
-      f.close()
-      proc.wait()
+        proc.write("%s\tinstall\n" % s)
+      proc.close()
     elif action == UPDATE:
-      cmd.append("--update-at-startup")
-      subprocess.call(cmd)
+      cmd += " --update-at-startup"
+      os.system (cmd)
     else:
       print "run_synaptic() called with unknown action"
       sys.exit(1)
@@ -501,17 +498,26 @@
     """ start gnome-software preferences """
     # args: "-n" means we take care of the reloading of the
     # package list ourself
-    args = ['/usr/bin/gnome-software-properties', '-n']
-    child = subprocess.Popen(args)
+    args = ["/usr/bin/gnome-software-properties", "-n"]
     self.main_window.set_sensitive(False)
-    res = None
-    while res == None:
-      res = child.poll()
-      time.sleep(0.05)
-      while gtk.events_pending():
-        gtk.main_iteration()
+    pid = os.fork ()
+    if pid == 0:
+      os.execv (args[0], args)
+    elif pid < 0:
+      win = gtk.MessageDialog (self.main_window, 0, gtk.MESSAGE_ERROR,
+                               gtk.BUTTONS_CLOSE, _("Error trying to run "
+                                                    "Synaptic."))
+      win.run ()
+      win.destroy ()
+    else:
+      retpid = 0
+      while not retpid:
+        retpid, status = os.waitpid (pid, os.WNOHANG)
+        time.sleep (0.05)
+        while gtk.events_pending():
+          gtk.main_iteration()
     # repository information changed, call "reload"
-    if res > 0:
+    if os.WEXITSTATUS (status) > 0:
       self.on_button_reload_clicked(None)
     self.main_window.set_sensitive(True)
 
@@ -523,7 +529,6 @@
     self.packages = []
     self.dl_size = 0
     self.all_changes = {}
-    self.dist = self.get_dist()
     if os.path.exists("../data/update-manager.glade"):
       self.Glade = gtk.glade.XML("../data/update-manager.glade")
     else:
@@ -669,6 +674,7 @@
 
   # FIXME: use lsb-release binary and cache the result
   def get_dist(self):
+    return # does not work for Debian
     f = open("/etc/lsb-release", "r")
     lines = f.readlines()
     for line in lines:
@@ -706,6 +712,7 @@
     
   # code that does the meta release file checking
   def check_meta_release(self):
+    return False # does not work for Debian
     #print "check_meta_release" 
     current_dist = self.dist
     dists = {}
@@ -787,9 +794,10 @@
 
   def main(self):
     # FIXME: stat a check update thread 
-    self.metarelease_information = None
-    t=thread.start_new_thread(self.get_meta_release, ())
-    gobject.timeout_add(1000, self.check_meta_release)
+    # meta releases are not available in Debian
+    #self.metarelease_information = None
+    #t=thread.start_new_thread(self.get_meta_release, ())
+    #gobject.timeout_add(1000, self.check_meta_release)
     #self.get_meta_release()
     
     self.store.append([True, _("Initializing and getting list of updates..."),
