man yum.conf question. was: Re: [Yum] Yum error question
R P Herrold
herrold at owlriver.com
Mon Feb 24 21:08:11 UTC 2003
On 24 Feb 2003, seth vidal wrote:
> > 2) If yum is doing the correct thing what incantation do I need in the
> > config file to get it to ignore the kernel rpms?
>
> exclude=kernel* will exclude the kernel but I'd like to hear more about
> what caused this problem.
What is that "*" doing there?
I was asked this question across the weekend, and did not know
the answer. I thought yum was matching on exact package name,
based on the code in presence of an exact match in 'conf.excludes'
What globbing/regex convention __is__ being used here? In
grepping the code, I do not see glob expansion happening here,
so it must be happening outside in an included module:
[herrold at oldnews yum-0.9.3]$ grep exclude *
ChangeLog: remove client-side excludes todo item
ChangeLog: shouldn't program this early. yum.conf.5 - add exclude option
ChangeLog: clientStuff - add support for client-side excludes from
ChangeLog: updates/installs config.py - add support for exclude option
ChangeLog: excludes are a space separated list of pkgs to exclude - it is in
clientStuff.py: if name not in conf.excludes:
config.py: self.excludes=[]
config.py: if self._getoption('main','exclude') != None:
config.py: self.excludes=string.split(self._getoption('main','exclude'), ' ')
Binary file config.pyc matches
Binary file config.pyo matches
COPYING:countries not thus excluded. In such case, this License incorporates
nevral.py: if reqname in conf.excludes:
nevral.py: errors.append('package %s needs %s that has been excluded' % (name, reqname))
nevral.py: if reqname in conf.excludes:
nevral.py: errors.append('package %s needs %s that has been excluded' % (name, reqname))
nevral.py: if reqname in conf.excludes:
nevral.py:errors.append('package %s needs %s that has been excluded' % (name, reqname))
TODO: - Implement pkg excludes on the server side
TODO:- Make it possible to have an http-accesible global conf file for excludes and
[herrold at oldnews yum-0.9.3]$
Three conflicting approaches come to mind:
exclude = kerne*
might be:
A. grep style: exclude everything containing with "kern"
immediately followed by zero or more "e"s
-or- it could be:
B. shell style: exclude everything starting with "kerne"
-or- what I had thought:
C. exact package name match
------------------
The man yum.conf page says IFS is 'space'
------------------
[herrold at oldnews herrold]$ rpm -qa | grep [k][e][r][n][e]
kernel-2.4.18-24.8.0
[herrold at oldnews herrold]$ rpm -qa | grep [k][e][r][n][e].
kernel-2.4.18-24.8.0
[herrold at oldnews herrold]$ rpm -qa | grep [k][e][r][n][e]*
glibc-kernheaders-2.4-7.20
kernel-2.4.18-24.8.0
[herrold at oldnews herrold]$
-------------------
Interpretation A will catch:
glibc-kernheaders
Interpretation B would not.
Interpretation C finds no matches.
(explanation: there is no package
'kernel*-%{version}-%{release}.%{arch}.rpm', although it is a
'legal' package name; "*: is simply a presently unused
character [it may be prohibited, but I do not recall from
memory] -- see similarly, e.g.,
[herrold at oldnews yum-0.9.3]$ rpm -qa | grep [\+]
compat-gcc-c++-7.3-2.96.110
libstdc++-devel-3.2-7
timidity++-2.11.3-4
gcc-c++-3.2-7
gtk+-1.2.10-22
gtk+-devel-1.2.10-22
compat-libstdc++-devel-7.3-2.96.110
libstdc++-3.2-7
compat-libstdc++-7.3-2.96.110
[herrold at oldnews yum-0.9.3]$ rpm -qa | grep [\*]
[herrold at oldnews yum-0.9.3]$
)
-------------------
The geek in me would like A -- particularly if it carries the
anchor "^" -- but C is what I think it is.
Could the man page answer this question, please?
-- Russ Herrold
More information about the Yum
mailing list