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

Help needed: upgrade/replace and dpkg-divert



Hi all,

I am stuck in TeX Live/luaTeX package upgrades with the following problem:

Up to unstable luatex ships with two diversions for /usr/bin/texdoc
and /usr/share/man/man1/texdoc.1. The diversion have been created with
	dpkg-divert --add --package luatex --rename \
	  --divert /usr/bin/texdoc.notluatex /usr/bin/texdoc
(and similar for man page). In the luatex package we shipped
	texdoc -> texdoclua
in /usr/bin.

The current/unstable postrm called:
	dpkg-divert --remove --package luatex --rename \
	  --divert /usr/bin/texdoc.notluatex /usr/bin/texdoc

Now TL2009 and luatex from experimental come into play: There texdoc
has moved back into texlive-base package, and we want to remove these
diversions, luatex package will not ship anything else but the luatex
binary (and it's man page). 

How can I manage that?

I have added
	texlive-base replaces luatex (<< EXPERIMENTAL_VERSION)

and then tried the following things:

First try: put removal code into luatex.preinst *without* --rename
in the dpkg-divert --remove ... call

Effect: The diversion was removed, but the new texdoc not reinstantiated.


Second try: add the --rename

Effect: dpkg-divert dies:
-----
...
Unpacking replacement texlive-base ...
Replacing files in old package luatex ...
...
Preparing to replace luatex 0.40.6-1+b1 (using .../luatex_0.46.0-2_amd64.deb)
...
Removing `diversion of /usr/bin/texdoc to /usr/bin/texdoc.notluatex by luatex'
dpkg-divert: rename involves overwriting `/usr/bin/texdoc' with
  different file `/usr/bin/texdoc.notluatex', not allowed
Removing `diversion of /usr/share/man/man1/texdoc.1.gz to
/usr/share/man/man1/texdoc.notluatex.1.gz by luatex'
Unpacking replacement luatex ...
-----

That gave me:
$ ls -l /usr/bin/texdoc* gives:
lrwxrwxrwx 1 root root  9 Nov 29 17:20 /usr/bin/texdoc -> texdoclua
lrwxrwxrwx 1 root root 48 Nov 29 17:21 /usr/bin/texdoc.notluatex ->
../share/texmf-texlive/scripts/texdoc/texdoc.tlu

and dpkg -S /usr/bin/texdoc:
diversion by luatex from: /usr/bin/texdoc
diversion by luatex to: /usr/bin/texdoc.notluatex
texlive-base: /usr/bin/texdoc

Of course that happened because luatex still has the
	texdoc -> texdoclua
link when the preinst is running, so the dpkg-divert was unhappy.



Third try: move the same removal code into the *postinst* of the new
luatex, but the same happened:
-----
....
Unpacking replacement texlive-base ...
Replacing files in old package luatex ...
...
Removing `diversion of /usr/bin/texdoc to /usr/bin/texdoc.notluatex by luatex'
dpkg-divert: rename involves overwriting `/usr/bin/texdoc' with
  different file `/usr/bin/texdoc.notluatex', not allowed
....
----

$ dpkg -S /usr/bin/texdoc
diversion by luatex from: /usr/bin/texdoc
diversion by luatex to: /usr/bin/texdoc.notluatex
texlive-base: /usr/bin/texdoc

$ ls -l /usr/bin/texdoc*
lrwxrwxrwx 1 root root  9 Nov 29 17:41 /usr/bin/texdoc -> texdoclua
lrwxrwxrwx 1 root root 48 Nov 29 17:42 /usr/bin/texdoc.notluatex ->
../share/texmf-texlive/scripts/texdoc/texdoc.tlu

But the new package texlua does NOT ship a link texdoc -> texdoclua.

==============================0

So to sum up what we want to do:
Old status:
 - texlive-base shipped /u/b/texdoc as shell script
 - luatex diverted /u/b/texdoc by renaming to /u/b/texdoc.notluatex
 - luatex ships a link /u/b/texdoc -> /u/b/texdoclua

New status should be:
 - texlive-base ships /u/b/texdoc -> ../../share/texmf-dist/.../texdoc.tlu
 - no diversion in luatex
 - luatex does no ship any texdoc files

Can anyone help me here?

Best wishes

Norbert

-------------------------------------------------------------------------------
Dr. Norbert Preining                                        Associate Professor
JAIST Japan Advanced Institute of Science and Technology   preining@jaist.ac.jp
Vienna University of Technology                               preining@logic.at
Debian Developer (Debian TeX Task Force)                    preining@debian.org
gpg DSA: 0x09C5B094      fp: 14DF 2E6C 0307 BE6D AD76  A9C0 D2BF 4AA3 09C5 B094
-------------------------------------------------------------------------------
SLIGO (n.)
An unnamed and exotic sexual act which people like to believe that
famous films stars get up to in private. 'To commit sligo.'
			--- Douglas Adams, The Meaning of Liff


Reply to: