** Description changed: + [Impact] + + * Users wishing to use Yum on Ubuntu to build Fedora packages will be + met with a backtrace due to curl changing its' API. This makes + urlgrabber basically unusable without forcing turning off SSL + certification verification, which is not acceptible. + + [Test Case] + + * Install yum-utils + * Ensure sslverify in section "main" is not set, or is "1" in /etc/yum/yum.conf + * Create a working directory for testing, reference as WORKING + * mkdir $WORKING/yum.repos.d + * Add attached "fedora.repo" to $WORKING/yum.repos.d + * mkdir $WORKING/var/lib/rpm + * rpm --rootdir=$WORKING initdb + * yumdownloader --releasever=21 --setopt-reposdir=$WORKING/yum.repos.d --destdir=$WORKING + + The yumdownloader step will fail with a traceback ending in + "pycurl.error: (43, 'CURLOPT_SSL_VERIFYHOST no longer supports 1 as + value!')" + + [Regression Potential] + + * Since the library is mostly inoperable when running without SSL + verification, regressions seem unlikely. + + * The additional fix for keepalives which was included upstream is low + risk also as it simply makes the code resilient to a known failure by + not allowing incompatible options to be used together. + + [Other Info] + N/A + + ---- Original Report ---- + On ubuntu 13.04 with yum: 3.4.3-1ubuntu1 lxc: 0.9.0-0ubuntu3.3 lxc-templates: 0.9.0-0ubuntu3.3 - When attempting to create a fedora Linux Container, I see $ sudo lxc-create -n fed1 -t fedora lxc-create: No config file specified, using the default config /etc/lxc/default.conf This is not a fedora host and release missing, defaulting to 14. use -R|--release to specify release - Checking cache download in /var/cache/lxc/fedora/x86_64/14/rootfs ... + Checking cache download in /var/cache/lxc/fedora/x86_64/14/rootfs ... Downloading fedora minimal ... Fetching from http://kdeforge.unl.edu/mirrors/fedora-archive/fedora/linux/releases/14/Everything/x86_64/os//Packages/fedora-release-14-1.noarch.rpm - % Total % Received % Xferd Average Speed Time Time Time Current - Dload Upload Total Spent Left Speed + % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed 100 24404 100 24404 0 0 41435 0 --:--:-- --:--:-- --:--:-- 43192 rpm: RPM should not be used directly install RPM packages, use Alien instead! rpm: However assuming you know what you are doing... warning: /var/cache/lxc/fedora/x86_64/14/partial/fedora-release-14.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 97a1071f: NOKEY Preparing... ################################# [100%] - package fedora-release-14-1.noarch is already installed + package fedora-release-14-1.noarch is already installed Traceback (most recent call last): - File "/usr/bin/yum", line 29, in <module> - yummain.user_main(sys.argv[1:], exit_code=True) - File "/usr/share/yum-cli/yummain.py", line 288, in user_main - errcode = main(args) - File "/usr/share/yum-cli/yummain.py", line 140, in main - result, resultmsgs = base.doCommands() - File "/usr/share/yum-cli/cli.py", line 436, in doCommands - self._getTs(needTsRemove) - File "/usr/lib/python2.7/dist-packages/yum/depsolve.py", line 101, in _getTs - self._getTsInfo(remove_only) - File "/usr/lib/python2.7/dist-packages/yum/depsolve.py", line 112, in _getTsInfo - pkgSack = self.pkgSack - File "/usr/lib/python2.7/dist-packages/yum/__init__.py", line 892, in <lambda> - pkgSack = property(fget=lambda self: self._getSacks(), - File "/usr/lib/python2.7/dist-packages/yum/__init__.py", line 673, in _getSacks - self.repos.populateSack(which=repos) - File "/usr/lib/python2.7/dist-packages/yum/repos.py", line 294, in populateSack - sack.populate(repo, mdtype, callback, cacheonly) - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 168, in populate - if self._check_db_version(repo, mydbtype): - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 226, in _check_db_version - return repo._check_db_version(mdtype) - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1268, in _check_db_version - repoXML = self.repoXML - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1467, in <lambda> - repoXML = property(fget=lambda self: self._getRepoXML(), - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1459, in _getRepoXML - self._loadRepoXML(text=self) - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1449, in _loadRepoXML - return self._groupLoadRepoXML(text, self._mdpolicy2mdtypes()) - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1424, in _groupLoadRepoXML - if self._commonLoadRepoXML(text): - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1242, in _commonLoadRepoXML - result = self._getFileRepoXML(local, text) - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1020, in _getFileRepoXML - size=102400) # setting max size as 100K - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 835, in _getFile - result = self.grab.urlgrab(misc.to_utf8(relative), local, - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 531, in <lambda> - grab = property(lambda self: self._getgrab()) - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 526, in _getgrab - self._setupGrab() - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 496, in _setupGrab - self._grab = mgclass(self._grabfunc, self.urls, - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 711, in <lambda> - urls = property(fget=lambda self: self._geturls(), - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 708, in _geturls - self._baseurlSetup() - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 654, in _baseurlSetup - mirrorurls.extend(list(self.metalink_data.urls())) - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 751, in <lambda> - metalink_data = property(fget=lambda self: self._getMetalink(), - File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 724, in _getMetalink - result = ug.urlgrab(url, local, text=self.id + "/metalink") - File "/usr/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 982, in urlgrab - return self._retry(opts, retryfunc, url, filename) - File "/usr/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 886, in _retry - r = apply(func, (opts,) + args, {}) - File "/usr/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 968, in retryfunc - fo = PyCurlFileObject(url, filename, opts) - File "/usr/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 1063, in __init__ - self._do_open() - File "/usr/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 1350, in _do_open - self._set_opts() - File "/usr/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 1193, in _set_opts - self.curl_obj.setopt(pycurl.SSL_VERIFYHOST, opts.ssl_verify_host) + File "/usr/bin/yum", line 29, in <module> + yummain.user_main(sys.argv[1:], exit_code=True) + File "/usr/share/yum-cli/yummain.py", line 288, in user_main + errcode = main(args) + File "/usr/share/yum-cli/yummain.py", line 140, in main + result, resultmsgs = base.doCommands() + File "/usr/share/yum-cli/cli.py", line 436, in doCommands + self._getTs(needTsRemove) + File "/usr/lib/python2.7/dist-packages/yum/depsolve.py", line 101, in _getTs + self._getTsInfo(remove_only) + File "/usr/lib/python2.7/dist-packages/yum/depsolve.py", line 112, in _getTsInfo + pkgSack = self.pkgSack + File "/usr/lib/python2.7/dist-packages/yum/__init__.py", line 892, in <lambda> + pkgSack = property(fget=lambda self: self._getSacks(), + File "/usr/lib/python2.7/dist-packages/yum/__init__.py", line 673, in _getSacks + self.repos.populateSack(which=repos) + File "/usr/lib/python2.7/dist-packages/yum/repos.py", line 294, in populateSack + sack.populate(repo, mdtype, callback, cacheonly) + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 168, in populate + if self._check_db_version(repo, mydbtype): + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 226, in _check_db_version + return repo._check_db_version(mdtype) + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1268, in _check_db_version + repoXML = self.repoXML + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1467, in <lambda> + repoXML = property(fget=lambda self: self._getRepoXML(), + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1459, in _getRepoXML + self._loadRepoXML(text=self) + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1449, in _loadRepoXML + return self._groupLoadRepoXML(text, self._mdpolicy2mdtypes()) + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1424, in _groupLoadRepoXML + if self._commonLoadRepoXML(text): + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1242, in _commonLoadRepoXML + result = self._getFileRepoXML(local, text) + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 1020, in _getFileRepoXML + size=102400) # setting max size as 100K + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 835, in _getFile + result = self.grab.urlgrab(misc.to_utf8(relative), local, + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 531, in <lambda> + grab = property(lambda self: self._getgrab()) + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 526, in _getgrab + self._setupGrab() + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 496, in _setupGrab + self._grab = mgclass(self._grabfunc, self.urls, + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 711, in <lambda> + urls = property(fget=lambda self: self._geturls(), + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 708, in _geturls + self._baseurlSetup() + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 654, in _baseurlSetup + mirrorurls.extend(list(self.metalink_data.urls())) + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 751, in <lambda> + metalink_data = property(fget=lambda self: self._getMetalink(), + File "/usr/lib/python2.7/dist-packages/yum/yumRepo.py", line 724, in _getMetalink + result = ug.urlgrab(url, local, text=self.id + "/metalink") + File "/usr/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 982, in urlgrab + return self._retry(opts, retryfunc, url, filename) + File "/usr/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 886, in _retry + r = apply(func, (opts,) + args, {}) + File "/usr/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 968, in retryfunc + fo = PyCurlFileObject(url, filename, opts) + File "/usr/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 1063, in __init__ + self._do_open() + File "/usr/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 1350, in _do_open + self._set_opts() + File "/usr/lib/python2.7/dist-packages/urlgrabber/grabber.py", line 1193, in _set_opts + self.curl_obj.setopt(pycurl.SSL_VERIFYHOST, opts.ssl_verify_host) pycurl.error: (43, '') Failed to download the rootfs, aborting. Failed to download 'fedora base' failed to install fedora lxc-create: failed to execute template 'fedora' lxc-create: aborted + This appears to be a yum error. /usr/share/lxc/templates/lxc-fedora is + calling - This appears to be a yum error. /usr/share/lxc/templates/lxc-fedora is calling - - yum --installroot /var/cache/lxc/fedora/x86_64/14/partial -y + yum --installroot /var/cache/lxc/fedora/x86_64/14/partial -y --nogpgcheck install yum initscripts passwd rsyslog vim-minimal dhclient chkconfig rootfiles policycoreutils fedora-release
-- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to urlgrabber in Ubuntu. https://bugs.launchpad.net/bugs/1200288 Title: yum urlgrabber error in lxc-create -t fedora To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/urlgrabber/+bug/1200288/+subscriptions -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs