** 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

Reply via email to