Server IP : 127.0.0.2 / Your IP : 18.218.251.50 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/ubuntu-release-upgrader/ |
Upload File : |
#!/usr/bin/python3 from __future__ import print_function import warnings warnings.filterwarnings("ignore", "apt API not stable yet", FutureWarning) from DistUpgrade.DistUpgradeVersion import VERSION from DistUpgrade.DistUpgradeGettext import gettext as _ from UpdateManager.Core.MetaRelease import MetaReleaseCore from optparse import OptionParser import locale import gettext import apt import os import sys import time from UpdateManager.Core.utils import init_proxy RELEASE_AVAILABLE=0 NO_RELEASE_AVAILABLE=1 def get_fetcher(frontend, new_dist, datadir): if frontend == "DistUpgradeViewGtk3": from DistUpgrade.DistUpgradeFetcher import DistUpgradeFetcherGtk from DistUpgrade.GtkProgress import GtkAcquireProgress progress = GtkAcquireProgress( None, datadir, _("Downloading the release upgrade tool")) return DistUpgradeFetcherGtk(new_dist=new_dist, progress=progress, parent=None, datadir=datadir) elif frontend == "DistUpgradeViewKDE": print("kde") from DistUpgrade.DistUpgradeFetcherKDE import DistUpgradeFetcherKDE from DistUpgrade.DistUpgradeFetcherKDE import KDEAcquireProgressAdapter progress = KDEAcquireProgressAdapter( parent=None, datadir=datadir, label=_("Downloading the release upgrade tool")) return DistUpgradeFetcherKDE(new_dist=new_dist, progress=progress, parent=None, datadir=datadir) else: from DistUpgrade.DistUpgradeFetcherCore import DistUpgradeFetcherCore import apt progress = apt.progress.text.AcquireProgress() return DistUpgradeFetcherCore(new_dist, progress) if __name__ == "__main__": #FIXME: Workaround a bug in optparser which doesn't handle unicode/str # correctly, see http://bugs.python.org/issue4391 # Should be resolved by Python3 gettext.bindtextdomain("ubuntu-release-upgrader", "/usr/share/locale") gettext.textdomain("ubuntu-release-upgrader") translation = gettext.translation("ubuntu-release-upgrader", fallback=True) try: locale.setlocale(locale.LC_ALL, "") except: pass init_proxy() # when run as "check-new-release" we go into "check only" mode check_only = sys.argv[0].endswith("check-new-release") parser = OptionParser() parser.add_option ("-V", "--version", action="store_true", dest="show_version", default=False, help=_("Show version and exit")) parser.add_option ("-d", "--devel-release", action="store_true", dest="devel_release", default=False, help=_("If using the latest supported release, " "upgrade to the development release")) parser.add_option ("--data-dir", "", default="/usr/share/ubuntu-release-upgrader/", help=_("Directory that contains the data files")) parser.add_option ("-p", "--proposed", action="store_true", dest="proposed_release", default=False, help=_("Try upgrading to the latest release using " "the upgrader from $distro-proposed")) parser.add_option ("-m", "--mode", default="server", dest="mode", help=_("Run in a special upgrade mode.\n" "Currently 'desktop' for regular upgrades of " "a desktop system and 'server' for server " "systems are supported.")) parser.add_option ("-f", "--frontend", default="DistUpgradeViewText", dest="frontend", help=_("Run the specified frontend")) parser.add_option ("-s","--sandbox", action="store_true", default=False, help=_("Test upgrade with a sandbox aufs overlay")) parser.add_option ("-c", "--check-dist-upgrade-only", action="store_true", default=check_only, help=_("Check only if a new distribution release is " "available and report the result via the " "exit code")) parser.add_option ("-q", "--quiet", default=False, action="store_true", dest="quiet") (options, args) = parser.parse_args() if options.show_version: print("%s: version %s" % (os.path.basename(sys.argv[0]), VERSION)) sys.exit(0) if options.devel_release and options.proposed_release: print(_("The options --devel-release and --proposed are")) print(_("mutually exclusive. Please use only one of them.")) sys.exit(1) if not options.quiet: print(_("Checking for a new Ubuntu release")) m = MetaReleaseCore(useDevelopmentRelease=options.devel_release, useProposed=options.proposed_release) # this will timeout eventually m.downloaded.wait() # make sure to inform the user if his distro is no longer supported # this will make it appear in motd (that calls do-release-upgrade in # check-new-release mode) if m.no_longer_supported is not None: url = "http://www.ubuntu.com/releaseendoflife" print(_("Your Ubuntu release is not supported anymore.")) print(_("For upgrade information, please visit:\n" "%(url)s\n") % { 'url' : url }) # now inform about a new release if m.new_dist is None: if not options.quiet: if options.devel_release: print(_("Upgrades to the development release are only ")) print(_("available from the latest supported release.")) else: print(_("No new release found.")) sys.exit(NO_RELEASE_AVAILABLE) if m.new_dist.upgrade_broken: if not options.quiet: print(_("Release upgrade not possible right now")) print(_("The release upgrade can not be performed currently, " "please try again later. The server reported: '%s'") % m.new_dist.upgrade_broken) sys.exit(NO_RELEASE_AVAILABLE) # we have a new dist if options.check_dist_upgrade_only: print(_("New release '%s' available.") % m.new_dist.version) print(_("Run 'do-release-upgrade' to upgrade to it.")) sys.exit(RELEASE_AVAILABLE) cache = apt.Cache() cache.open() install_count = 0 upgradable = [pkg for pkg in cache if pkg.is_upgradable] for pkg in upgradable: if 'Phased-Update-Percentage' in pkg.candidate.record: # P-U-P does not exist if it is fully phased continue else: install_count += 1 # one upgradeable package is enough to stop the dist-upgrade break if install_count > 0: if not options.quiet: print(_("Please install all available updates " "for your release before upgrading.")) sys.exit(1) if os.path.exists('/var/run/reboot-required.pkgs'): reboot = False with open('/var/run/reboot-required.pkgs', 'rb') as f: for line in f: # In certain cases, we need to reboot the system before proceeding # with the dist upgrade after the kernel is upgraded as otherwise # building of some dkms modules can fail. if (line == b'libc6\n' or line == b'linux-base\n' or line.startswith(b'linux-image-')): reboot = True break if reboot: if not options.quiet: print(_("You have not rebooted after updating a package which " "requires a reboot. Please reboot before upgrading.")) sys.exit(1) fetcher = get_fetcher(options.frontend, m.new_dist, options.data_dir) fetcher.run_options += ["--mode=%s" % options.mode, "--frontend=%s" % options.frontend, ] if options.sandbox: fetcher.run_options.append("--sandbox") if options.devel_release: fetcher.run_options.append("--devel-release") fetcher.run()