Re: Treating 'not found' packages as errors

Anders Blomdell <[email protected]>
Newsgroups gmane.linux.rpm.yum
Message-ID <[email protected]>
seth vidal wrote:
> On Wed, 2008-04-23 at 17:45 +0200, Anders Blomdell wrote:
>> seth vidal wrote:
>>> On Wed, 2008-04-23 at 17:26 +0200, Anders Blomdell wrote:
>>>>> My initial thought is if you want to use yum with scripted interactions
>>>>> you can call the yum module api from python pretty easily these days.
>>>>>
>>>>> does that make sense?
>>>> Yes, the software that handles updates is already in python.
>>>>
>>>> Are there any docs available for the API?
>>>>
>>> limited docs, lots of good examples, though.
>>>
>>> For an easy way to get started look at:
>>> http://fedoraproject.org/wiki/SethVidal/YumCodeSnippets
>> 1. I don't see any example equivalent to 'yum -update' there.
>> 2. Is there any way to specify a custom configuration without writing a file and
>> modify 'my.conf.config_file_path' ?
> 
> 
> import yum
> my = yum.YumBase()
> # specify config file
> my._getConfig(fn='/path/to/conf/file')
> # update all
> my.update()
> my.resolveDeps()
> my.processTransaction()
> 
> 
> 
> does that help? If you have immediate questions you can also pop in #yum
> on irc.freenode.net - someone in there can frequently help.

Don't know yet, I have problems with changing the cachedir location, this naive
code extracted and combined from the wiki:
#!/usr/bin/python

import yum, os, sys
# setup base objects
my = yum.YumBase()
# someplace you can write to as your user
my.conf.basecachedir = '/tmp/whereever'
if not os.path.exists(my.conf.basecachedir):
    os.makedirs(my.conf.basecachedir)
my.conf.cache = 0

print "before install"
my.install(name='somepackage')
print "before resolve"
my.resolveDeps()
print "before process"
my.processTransaction()

Fails with:

before install
Traceback (most recent call last):
  File "./try.py", line 13, in <module>
    my.install(name='somepackage')
  File "/usr/lib/python2.5/site-packages/yum/__init__.py", line 1894, in install
    pkgs = self.pkgSack.searchNevra(name=nevra_dict['name'],
  File "/usr/lib/python2.5/site-packages/yum/__init__.py", line 529, in <lambda>
    pkgSack = property(fget=lambda self: self._getSacks(),
  File "/usr/lib/python2.5/site-packages/yum/__init__.py", line 384, in _getSacks
    self.repos.populateSack(which=repos)
  File "/usr/lib/python2.5/site-packages/yum/repos.py", line 242, in populateSack
    sack.populate(repo, mdtype, callback, cacheonly)
  File "/usr/lib/python2.5/site-packages/yum/yumRepo.py", line 142, in populate
    if self._check_db_version(repo, mydbtype):
  File "/usr/lib/python2.5/site-packages/yum/yumRepo.py", line 199, in
_check_db_version
    if repo.repoXML.repoData.has_key(mdtype):
  File "/usr/lib/python2.5/site-packages/yum/yumRepo.py", line 774, in <lambda>
    repoXML = property(fget=lambda self: self._getRepoXML(),
  File "/usr/lib/python2.5/site-packages/yum/yumRepo.py", line 766, in _getRepoXML
    self._loadRepoXML(text=self)
  File "/usr/lib/python2.5/site-packages/yum/yumRepo.py", line 749, in _loadRepoXML
    cache=self.http_caching == 'all')
  File "/usr/lib/python2.5/site-packages/yum/yumRepo.py", line 623, in _getFile
    http_headers=headers,
  File "/usr/lib/python2.5/site-packages/urlgrabber/mirror.py", line 412, in urlgrab
    return self._mirror_try(func, url, kw)
  File "/usr/lib/python2.5/site-packages/urlgrabber/mirror.py", line 398, in
_mirror_try
    return func_ref( *(fullurl,), **kwargs )
  File "/usr/lib/python2.5/site-packages/urlgrabber/grabber.py", line 928, in
urlgrab
    return self._retry(opts, retryfunc, url, filename)
  File "/usr/lib/python2.5/site-packages/urlgrabber/grabber.py", line 846, in _retry
    r = apply(func, (opts,) + args, {})
  File "/usr/lib/python2.5/site-packages/urlgrabber/grabber.py", line 916, in
retryfunc
    fo._do_grab()
  File "/usr/lib/python2.5/site-packages/urlgrabber/grabber.py", line 1197, in
_do_grab
    else: new_fo = open(self.filename, 'wb')
IOError: [Errno 13] Permission denied: '//var/cache/yum/release/repomd.xml'

Seems like the cache is not changed...

Best regards

Anders Blomdell


-- 
Anders Blomdell                  Email: [email protected]
Department of Automatic Control
Lund University                  Phone:    +46 46 222 4625
P.O. Box 118                     Fax:      +46 46 138118
SE-221 00 Lund, Sweden
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.