After updating apt-check to use the python-apt 0.7.93 API I hadn't renamed the new version to the production version ('/usr/lib/update-notifier/apt-check'), but as soon as I did, the orange ball popped up in the notification area a few seconds later!
I am attaching a patch to apt-check that updates apt-check to use the new API.
#!/usr/bin/python #nice apt-get -s -o Debug::NoLocking=true upgrade | grep ^Inst import apt_pkg import os import sys from optparse import OptionParser from gettext import gettext as _ import gettext SYNAPTIC_PINFILE = "/var/lib/synaptic/preferences" def clean(cache,depcache): # mvo: looping is too inefficient with the new auto-mark code #for pkg in cache.Packages: # depcache.MarkKeep(pkg) depcache.init() def saveDistUpgrade(cache,depcache): """ this functions mimics a upgrade but will never remove anything """ depcache.upgrade(True) if depcache.del_count > 0: clean(cache,depcache) depcache.upgrade() def _handleException(type, value, tb): sys.stderr.write("E: "+ "Unkown Error: '%s' (%s)" % (type,value)) sys.exit(-1) # -------------------- main --------------------- # be nice os.nice(19) # setup a exception handler to make sure that uncaught stuff goes # to the notifier sys.excepthook = _handleException # gettext APP="update-notifier" DIR="/usr/share/locale" gettext.bindtextdomain(APP, DIR) gettext.textdomain(APP) # check arguments parser = OptionParser() parser.add_option("-p", "--package-names", action="store_true", dest="show_package_names", help="show the packages that are going to be installed/upgraded") (options, args) = parser.parse_args() #print options.security_only # init apt_pkg.init() # get caches try: cache = apt_pkg.Cache() except SystemError, e: sys.stderr.write("E: "+ _("Error: Opening the cache (%s)") % e) sys.exit(-1) depcache = apt_pkg.DepCache(cache) # read the pin files depcache.read_pinfile() # read the synaptic pins too if os.path.exists(SYNAPTIC_PINFILE): depcache.read_pinfile(SYNAPTIC_PINFILE) # init the depcache depcache.init() if depcache.broken_count > 0: sys.stderr.write("E: "+ _("Error: BrokenCount > 0")) sys.exit(-1) # do the upgrade (not dist-upgrade!) try: saveDistUpgrade(cache,depcache) except SystemError, e: sys.stderr.write("E: "+ _("Error: Marking the upgrade (%s)") % e) sys.exit(-1) # check for upgrade packages, we need to do it this way # because of ubuntu #7907 upgrades = 0 security_updates = 0 for pkg in cache.packages: if depcache.marked_install(pkg) or depcache.marked_upgrade(pkg): # check if this is really a upgrade or a false positive # (workaround for ubuntu #7907) if depcache.get_candidate_ver(pkg) != pkg.current_ver: upgrades = upgrades + 1 ver = depcache.get_candidate_ver(pkg) for (file, index) in ver.file_list: if (file.archive.endswith("-security") and file.Origin == "Ubuntu"): security_updates += 1 # print the number of upgrades if options.show_package_names: pkgs = filter(lambda pkg: depcache.marked_install(pkg) or depcache.marked_upgrade(pkg), cache.packages) sys.stderr.write("\n".join(map(lambda p: p.Name, pkgs))) else: # print the number of regular upgrades and the number of # security upgrades sys.stderr.write("%s;%s" % (upgrades,security_updates)) sys.exit(0)