Comment 1 for bug 244022

Revision history for this message
Rehan Khan (rasker) wrote :

msg1268 (view) Author: urkle Date: 2007-12-31.17:14:29

Fetching packages...

-> http://linux.dell.com/repo/software/.../libsmbios-bin-0.13.13-2.el4.i386.rpm

libsmbios-bin-0.13.13-2.el4.i386.rpm
########################################################################### [ 25%]
-> http://linux.dell.com/repo/software/.../libsmbios-2.0.0_BETA_1-1.el4.i386.rpm

libsmbios-2.0.0_BETA_1-1.el4.i386.rpm
########################################################################### [ 50%]
->
http://linux.dell.com/repo/software/.../smbios-utils-2.0.0_BETA_1-1.el4.i386.rpm

-> http://linux.dell.com/repo/software/.../libsmbios-libs-0.13.13-2.el4.i386.rpm

libsmbios-libs-0.13.13-2.el4.i386.rpm
########################################################################### [ 75%]
smbios-utils-2.0.0_BETA_1-1.el4.i386.rpm
########################################################################### [100%]
Traceback (most recent call last):
  File "/usr/bin/smart", line 194, in ?
    main(sys.argv[1:])
  File "/usr/bin/smart", line 167, in main
    exitcode = iface.run(opts.command, opts.argv)
  File "/usr/lib/python2.3/site-packages/smart/interface.py", line 53, in run
    result = _command.main(self._ctrl, opts)
  File "/usr/lib/python2.3/site-packages/smart/commands/upgrade.py", line 187,
in main
    ctrl.commitTransaction(trans, confirm=confirm)
  File "/usr/lib/python2.3/site-packages/smart/control.py", line 500, in
commitTransaction
    return self.commitChangeSet(trans.getChangeSet(), caching, confirm)
  File "/usr/lib/python2.3/site-packages/smart/control.py", line 545, in
commitChangeSet
    caching)
  File "/usr/lib/python2.3/site-packages/smart/control.py", line 658, in
fetchPackages
    fetcher.run(what=_("packages"))
  File "/usr/lib/python2.3/site-packages/smart/fetcher.py", line 243, in run
    if not handler.tick():
  File "/usr/lib/python2.3/site-packages/smart/fetcher.py", line 1514, in tick
    os.rename(localpath+".part", localpath)
OSError: [Errno 2] No such file or directory

msg1267 (view) Author: netmask Date: 2007-12-28.16:59:59

Please paste the trace you get with pycurl.

msg1266 (view) Author: urkle Date: 2007-12-28.16:50:56

if I *patch* smart's fetcher.py to use the value of 0 instead of the missing
constant (which is defined as 0 in curl 7.16.4), smart tries to download the
file AS mirrors.pl still. and ends up removing the file when done downloading
and then a new trace gets thrown stating "No such file or directory"

msg1265 (view) Author: urkle Date: 2007-12-28.16:44:23

if I install pycurl 7.12.1 smart crashes when downloading the first package
with this backtrace

Traceback (most recent call last):pm

  File "/usr/bin/smart", line 194, in ?
    main(sys.argv[1:])
  File "/usr/bin/smart", line 167, in main
    exitcode = iface.run(opts.command, opts.argv)
  File "/usr/lib/python2.3/site-packages/smart/interfaces/text/interactive.py",
line 46, in run
    Interpreter(self._ctrl).cmdloop()
  File "/usr/lib/python2.3/cmd.py", line 133, in cmdloop
    stop = self.onecmd(line)
  File "/usr/lib/python2.3/site-packages/smart/interfaces/text/interactive.py",
line 195, in onecmd
    return Cmd.onecmd(self, line)
  File "/usr/lib/python2.3/cmd.py", line 210, in onecmd
    return func(arg)
  File "/usr/lib/python2.3/site-packages/smart/interfaces/text/interactive.py",
line 516, in do_commit
    if self._ctrl.commitTransaction(transaction):
  File "/usr/lib/python2.3/site-packages/smart/control.py", line 500, in
commitTransaction
    return self.commitChangeSet(trans.getChangeSet(), caching, confirm)
  File "/usr/lib/python2.3/site-packages/smart/control.py", line 545, in
commitChangeSet
    caching)
  File "/usr/lib/python2.3/site-packages/smart/control.py", line 658, in
fetchPackages
    fetcher.run(what=_("packages"))
  File "/usr/lib/python2.3/site-packages/smart/fetcher.py", line 243, in run
    if not handler.tick():
  File "/usr/lib/python2.3/site-packages/smart/fetcher.py", line 1653, in tick
    pycurl.TIMECONDITION_NONE)
AttributeError: 'module' object has no attribute 'TIMECONDITION_NONE'

seems the TIMECONDITION_NONE isn't defined in 7.12(dag's el4 repo) It is in
7.16.4 (fc8)

msg1261 (view) Author: netmask Date: 2007-12-22.02:10:31

Do you have pycurl installed? If not, can you try with it? If yes, can you try
without?

msg1260 (view) Author: urkle Date: 2007-12-20.16:50:38

Oh, this occurs using Smart 0.51 and 0.52. I do recall it *not* happening with
some older version (don't recall which).

msg1259 (view) Author: urkle Date: 2007-12-20.16:49:50

Dell uses repository URLs that redirect to where the files really are depending
on your distribution by making use of excess query arguments.

Example (for 386 el4)
 http://linux.dell.com/repo/software/mirrors.pl?osname=el4&basearch=i386&redirect=1&redir_path=

When called by Smart to fetch the rpm-md it works fine, (appending
/repodata/repomd.xml past the redirect-path=)

And when the packages are downloaded it appends the correct URL
(ex. /libsmbios/0.13.13-2.fc7/libsmbios-bin-0.13.13-2.el4.i386.rpm)

However, smart saves the package as "mirrors.pl" in the /var/lib/smart/packages
directory, thus when a second package is downloaded it is saved with the SAME
filename and the verification fails because it is a different file than expected.

Proposed change:
The *file saving* code needs to be altered to not use the assumed filename from
the URL, but rather use data from the metadata and piece together the filename
from %{name}-%{version}-%{release}.%{arch}.rpm which will be unique.