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