�PNG  IHDR22?�� pHYs  �� OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*! J�!��Q�EEȠ�����Q, � ��!���������{�kּ������>���� �H3Q5� �B�������.@� $p�d!s�#�~<<+"��x� �M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH���� � 0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4���������x����6��_-��"bb���ϫp@�t~��,/��;�m��%�h^ �u��f�@����W�p�~<�5�j>{�-�]c�K'Xt����o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A��,���� �`6�B$��BB d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(�� A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=� �C��7�F� �dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8, �c˱"� ���V����cϱw�E� 6wB aAHXLXN�H� $4� 7 �Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[ �b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w ��Ljg(�gw��L�Ӌ�T071���oUX*�*|�� �J�&�*/T����ު U�U�T��^S}�FU3S� Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k ��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN �(���~���)�)�4L�1e\k����X�H�Q�G�6������E�Y��A�J'\'Gg����S�Sݧ �M=:��.�k���Dw�n��^��Lo��y���}/�T�m���G X� $� �<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��= ���Z~s�r:V:ޚΜ�?}����/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z���������ۯ�6�i�ܟ�4�)�Y3s���C�Q��? ��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�������!h�쐭!��Α�i�P~���a�a��~ '���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl������� �{�/�]py�����.,:�@L�N8��A*��%�w%� y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y- �B��TZ(�*�geWf�͉�9���+��̳�ې7�����ᒶ��KW-X潬j9�������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n �ڴ �V����E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa��n��{��4���[���>ɾ�UUM�f�e�I���?�������m]�Nmq����#�׹���=TR��+�G�����w- 6 U����#pDy��� �� :�v�{���vg/jB��F�S��[b[�O�>����z�G��499�?r����C�d�&����ˮ/~�����јѡ�򗓿m|������������x31^�V���w�w��O�| (�h���SЧ��������c3-� cHRMz%������u0�`:�o�_�F5IDATx��ytUս�?�;���fN$$��@B�!�k��� -*�gE���j�O�kQ�ʠ`U�B_ �AÐ0%�Ȕ�@r3ޛ;߳��$�@��v����^�s����������$��ߢ !�W��5�̱'-٘������4�>�Rƫ$�G��0U�H}�_ _� #��k�MJ/=�9Du *ڲ�k�PQ;0��j|�*�$�^컂脛y���>�z×� B��� ��(�:$�ʔ_�6��C!B����MVx��a��ζyY����j��ƋY2�9�F�{r��r�딟F��Q��hY6��� x��[l��RC��������nt@��;P��3��� F�w��7��:�P���ɋ'���mj���Bƪ�$�Q�L��y��߷g��\���z����v5�p�v$�v櫻�`6~K �Y�X����,�:��"�o�e0II"(��,������l_�C���/4�+f�E�!q��:����u����c��樼.UE�@� �]K�W���$-�h]�JG���Dz)�`��.�A/ ���mᏣc�3jK� �!�>���$�Q�!�_�? \�C2(E �M$Z I{�U���s�ǣ���=��@Բe ޻��W�����@ �w����}�9v,)��.}*|"�s��di���,���G�]W�AC�������|<����[��ߕ������K�*�G nߴ!��‹��J�!��6(L�a)��Am��������;adf��:�xm��nh�;֦I��(���o�C~ډa?�=��s����h��E������xp����)���_���t��W�����´;8���`dz=(��@@�+,�;�`�fhl��XȌ�3,uI�~z(J����� �ZX�A����H'�À�㜦�82|��a�n�z2��I���� ���EY�h�ε<�0�q�{��C��v�˅��?"@��χ�x�WS+��N�~�KQ�J�8ل�� _.W��� !TU{�����,��"�� �;�������HI S� ��))�o�1�H�D� ���� (� ;����"Ҕ��,���� �F=���O��&�Ph>�`���y��߲ &S��P�<��'��1s�1cĂ�N����2)����@�u��tv��<�+�-&�����h��[!FSG���' � z z0��<����8d&�����E0�,��<��"!P�b4��� �{S�����X����.�囤���T��hEF��X�q0"-<����h���]�Py*����F⩍��@v�˂�Y08�� .q��a��s����(!<̫1�3�L�H��7sYW�`��qtu�\7��?�@�Y�� %Ka�x�GZ�*W�P��y�����N0r9��Z�c�%���q,��k�����!!,��>���IB��� �x1�Xu�Y���v-���ֺ��N������JP��a�2`�e5��w��u;�6�i���̃��(K���ťa��(l51��JL��O'%���]���ٖ뿉!��{*�p+f ���i8��D�ȑ���ܩ�M��V��ӟz��x�7Z�1i}�^͜���6e����x��)u�d�ˏ�V�eG�\�X1�����=n�U'�~Y����L�\,�(d!x ,�:�TW8� M`r���@��r+v�Q0��>^;˴�VbF��('����� �*O��i��j�Ӆ����^�S3&� ���{������.ی�� N;��NU%d0�Ce\r"�C�b��&t7N�7��� �ȪD�[%l�۪�$��'m?�A9tI�9>��NVL ��� 6v~M�����ъ�B���0����9$&=ώm��W�0���L���&��E���f�f��'+�9��hv��7,���M��6�D�&�^� �����8 D֮�����o��k^z��O��hP�8q�5d*��YVq3�{��������#LX4�?��jP=3�~�؅c�ݰ�̱�ұ��8̲��2�G�����j��έ�9��w7���U�X�w�85C��?!I&���o&����L���I#�^�eV�,�^t5�k� �xs˛\��U�8��."���{���ǵ�l4��ݼ�;��r"���G�/~���gJV�N糦��ZZ^k+NN�D��I$�=OE�z����|*�*{��%k���G��>�`9��b;�s���8,�qs��c��.b��q�%�>r��n�R�Ƨ�%�,�A��le#�8���}; 21�0�b�&�QX�f���q�00����$>�h�N�'�a3��A���/�r ��L5�8�GԲ'�����w;��c#�q1���h$*��V^�k��QĽ�b:i������� ����H F#�_���,��]g����Ը����`RUU���� ��"�qD���>-��ϤI�~��3�̴�����NZ[[555�eeek7�m����YF#[��Đ��R��i��L�H�r ��@��J-�Pŝ��_|�-��6y��ks�V�U~��6���w.����(��0A� 4��f��� /���C�xŊ�ٳ����z=6�����rg���mKo��o�/����a�g���?'9%9��P��斓��~���L{�� �H��{AW��B��$����v�1b�&Mb�ر��ر#�0`�`xMBp! )Z�Nmo�mZ�g�}�eذaWTVV ���'99��C5��&�&+5�bT>|8��PUUETT����&���t��~TE%��'������b�tEGG;RSS�S�N�v��ѯ��t����u1@�ޚ"f��͈���r'L�Ph��m��ƌ�74o��`�x�q�P���NRSS�X,�����l&&&��MFFA!-��`��ҷ�n��Yuu�����x<I�LB%����KԒ50�!�3�bz�����ʸKL���;---�l6[��`��������Ȏ;�����egg4��!D�T��jWujyZ��������K����%����p�^���X,6��sV=�ܖ����6�3�X ���4ҿ��A2�&����_k�;d�� �VfOIEND�B`�#!/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 subprocess 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 ("-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 ("--allow-third-party", default=False, action="store_true", dest="allow_third_party", help=_("Try the upgrade with third party " "mirrors and repositories enabled " "instead of commenting them out.")) parser.add_option ("-q", "--quiet", default=False, action="store_true", dest="quiet") parser.add_option ("-e", "--env", help=_("A comma-separated list of environment variables " "(e.g. VAR1=VALUE1,VAR2=VALUE2) that should be set " "during the upgrade.")) (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 m.prompt == 'never': print(_("In /etc/update-manager/release-upgrades Prompt ")) print(_("is set to never so upgrading is not possible.")) elif m.prompt == 'lts': print(_("There is no development version of an LTS available.")) print(_("To upgrade to the latest non-LTS development release ")) print(_("set Prompt=normal in /etc/update-manager/release-upgrades.")) elif 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) if options.allow_third_party: # the env variable is used by code in the dist-upgrader tarball os.environ["RELEASE_UPGRADER_ALLOW_THIRD_PARTY"] = "True" if options.env: for env in options.env.split(','): parts = env.split('=') if len(parts) < 2: continue # The value itself may contain '='. os.environ[parts[0]] = '='.join(parts[1:]) # GTK 3 fetcher starts setting up the the GUI and KDE GUI needs to start GUI # later, too. if (options.frontend in {"DistUpgradeViewGtk3", "DistUpgradeViewKDE"} and os.getuid() != 0): if 'WAYLAND_DISPLAY' in os.environ: subprocess.run(['xhost', '+si:localuser:root']) # this is needed because pkexec doesn't pass on the env if 'RELEASE_UPGRADER_ALLOW_THIRD_PARTY' in os.environ: sys.argv.append('--allow-third-party') # Some extra environment variables need to be passed, but we need # to do this explicitly with do-release-upgrade because pkexec # does not provide such functionality. extra_env_vars = [ 'DBUS_SESSION_BUS_ADDRESS=%s' % os.getenv('DBUS_SESSION_BUS_ADDRESS', ''), 'XDG_SESSION_TYPE=%s' % os.getenv('XDG_SESSION_TYPE', ''), ] sys.argv.append('--env=%s' % ','.join(extra_env_vars)) os.execv("/usr/bin/pkexec", ["pkexec"] + sys.argv) fetcher = get_fetcher(options.frontend, m.new_dist, options.data_dir) fetcher.run_options += ["--mode=%s" % options.mode, "--frontend=%s" % options.frontend, ] if options.devel_release: fetcher.run_options.append("--devel-release") fetcher.run()