[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Upgrade procedure for tetex



'Christoph Martin wrote:'
>
>Chris Fearnley <cjf@netaxs.com> writes:
>
>> We can do better.  If tetex has the "right" Conflicts, Replaces, and
>> Provides lines, dpkg can automagically replace (most) of the old tex
>> packages.  The exception: dpkg doesn't handle recursive replaces.
>
>This is definitely wrong. I played around with different combinations
>of Conflicts and Replaces. You can't solve the problem by reodering
>the lines as you suggested. dpkg is just not able to replace more than
>one old package with one new package. You don't have to have recursive
>replaces here to get the problems. The only solution here would be to
>have dummy packages for all old tex packages to replace and remove the
>old files.

I'm sorry but I must heartily disagree.  Check out the elvis package
which has no trouble doing multiple Conflicts/Replaces:
Conflicts: elvisnox, elvisx11
Provides: elviscmn
Replaces: elvisnox, elvisx11, elv-vi

You must have overlooked something during your testing.
I think this should work:

tetex-base:
 Conflicts: mfnfss, babel, textfm, texidoc
 Replaces:  bibtex, mfnfss, texpsfnt, texinfo, texidoc, mfbasfnt, xdvik,
            dvipsk, latex, babel, texlib, mflib, textfm, kpathsea
 Provides:  texpsfnt, mfbasfnt, mfnfss, babel, texlib, textfm

tetex-bin:
 Conflicts: xdvik, dvipsk, texinfo, makeindex, ps2pk, texi2html
 Replaces:  bibtex, xdvik, dvipsk, texbin, texinfo, mflib, kpathsea,
            makeindex, ps2pk, latex, texi2html
 Provides:  bibtex, xdvik, dvipsk, texbin, mflib, kpathsea, ps2pk,
            latex, texi2html

Similarly for tetex-{dev,doc,extra}

This should cleanly and completely remove mfnfss, babel, textfm,
texidoc, xdvik, dvipsk, texinfo, makeindex, ps2pk, texi2html.  But the
other packages will have any common files replaced leaving a bit of
detritus around.  After we get the upgrade working smoothly, we can
discuss postinst scripts that will remove the "dustballs".  I'd
schedule that for the hamm release as it requires more testing than we
have time for with bo.  If it fails, I want to see a transcript.

>An other suggestion was to only use Conflicts but no Replaces. But
>this would only allow dpkg to overwrite old files with the new
>ones. It would leave a lot of old files in your tree. You don't want
>this. 

I think you got the C and R words reversed.  Yes, it would leave some
old files lying around.  This is not so bad.  For example, the old
base package leaves detritus around.  Today I went through a Red Hat
system rm'ing detritus.  But I prefer detritus to problematic
upgrades.

>I'll try to put some code in the preinst scripts to detect old tex
>packages, give a message as suggested and fail. I also try to build a
>script which remove all old tex packages.
>
>Now for the Provides. There a some and I'll add some more to satisfy
>the dependencies. But, at least binary packages (e.g. Lyx) need to be
>reworked and relinked with tetex-dev to work with tetex. In this steep
>it is quite easy to change the dependencies to tetex.

You must provide every package that tetex proposes to Conflicts/Replace
for at least this next release.  Otherwise, there is no way for
upgrading to work.  Also, There is no reason for tetex-base to Provide
itself.

-- 
Christopher J. Fearnley          |  Linux/Internet Consulting
cjf@netaxs.com, cjf@onit.net     |  Design Science Revolutionary
http://www.netaxs.com/~cjf       |  Explorer in Universe
ftp://ftp.netaxs.com/people/cjf  |  "Dare to be Naive" -- Bucky Fuller


Reply to: