TurnKey Linux's take on Ubuntu appliance development: KISS

Pau Garcia i Quiles pgquiles at elpauer.org
Thu Jan 7 17:50:57 GMT 2010


> If you're interested in the deb installation procedure, take a look at
> the Debian Policy Manual, Chapter 6 - Package maintainer scripts and
> installation procedure [1].
>
> [1] http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html

There is no information there about the order in which dependent
packages are configured.

I've done a quick test in my Karmic machine here: I've installed lyx
1.6.4-1ubuntu1, which has the following dependencies and
recommendations:

8<-----------------------
Depends: libaiksaurus-1.2-0c2a (>= 1.2.1+dev-0.12), libaspell15 (>=
0.60), libboost-regex1.38.0 (>= 1.38.0-1), libboost-signals1.38.0 (>=
1.38.0-1), libc6 (>= 2.7), libgcc1 (>= 1:4.1.1), libqtcore4 (>=
4.5.1), libqtgui4 (>= 4.5.1), libstdc++6 (>= 4.4.0), libx11-6, zlib1g
(>= 1:1.1.4), lyx-common (= 1.6.4-1ubuntu1), xdg-utils, mime-support
Recommends: texlive-latex-recommended, texlive-latex-extra,
texlive-fonts-recommended, preview-latex-style, dvipng, imagemagick,
psutils, ghostscript, poppler-utils, ttf-lyx, evince | pdf-viewer
8<-----------------------

This is the output:

8<-----------------------
pgquiles at mcpau:~$ sudo aptitude install lyx
[sudo] password for pgquiles:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
The following NEW packages will be installed:
  dvipng{a} libaiksaurus-1.2-0c2a{a} libaiksaurus-1.2-data{a}
libt1-5{a} lyx lyx-common{a} psutils{a} ttf-lyx{a}
0 packages upgraded, 8 newly installed, 0 to remove and 1 not
upgraded.
Need to get 9,493kB of archives. After unpacking 44.4MB will be used.
Do you want to continue? [Y/n/?] y
Writing extended state information... Done
Get:1 http://archive.ubuntu.com karmic/main libt1-5 5.1.2-3 [154kB]
Get:2 http://archive.ubuntu.com karmic/main dvipng 1.11-1 [78.6kB]
Get:3 http://archive.ubuntu.com karmic/main libaiksaurus-1.2-data
1.2.1+dev-0.12-6 [318kB]
Get:4 http://archive.ubuntu.com karmic/main libaiksaurus-1.2-0c2a
1.2.1+dev-0.12-6 [23.1kB]
Get:5 http://archive.ubuntu.com karmic/universe lyx-common
1.6.4-1ubuntu1 [5,484kB]
Get:6 http://archive.ubuntu.com karmic/universe lyx 1.6.4-1ubuntu1
[3,168kB]
Get:7 http://archive.ubuntu.com karmic/main psutils 1.17-26 [89.9kB]
Get:8 http://archive.ubuntu.com karmic/universe ttf-lyx 1.6.4-1ubuntu1
[177kB]
Fetched 9,493kB in 15s (593kB/s)
Selecting previously deselected package libt1-5.
(Reading database ... 297640 files and directories currently
installed.)
Unpacking libt1-5 (from .../libt1-5_5.1.2-3_i386.deb) ...
Selecting previously deselected package dvipng.
Unpacking dvipng (from .../dvipng_1.11-1_i386.deb) ...
Selecting previously deselected package libaiksaurus-1.2-data.
Unpacking libaiksaurus-1.2-data (from
.../libaiksaurus-1.2-data_1.2.1+dev-0.12-6_all.deb) ...
Selecting previously deselected package libaiksaurus-1.2-0c2a.
Unpacking libaiksaurus-1.2-0c2a (from
.../libaiksaurus-1.2-0c2a_1.2.1+dev-0.12-6_i386.deb) ...
Selecting previously deselected package lyx-common.
Unpacking lyx-common (from .../lyx-common_1.6.4-1ubuntu1_all.deb) ...
Selecting previously deselected package lyx.
Unpacking lyx (from .../lyx_1.6.4-1ubuntu1_i386.deb) ...
Selecting previously deselected package psutils.
Unpacking psutils (from .../psutils_1.17-26_i386.deb) ...
Selecting previously deselected package ttf-lyx.
Unpacking ttf-lyx (from .../ttf-lyx_1.6.4-1ubuntu1_all.deb) ...
Processing triggers for install-info ...
install-info: warning: no info dir entry in `/usr/share/info/menu.info.gz'
Processing triggers for man-db ...
Processing triggers for hicolor-icon-theme ...
Processing triggers for menu ...
Setting up libt1-5 (5.1.2-3) ...

Setting up dvipng (1.11-1) ...
Ignoring install-info called from maintainer script
The package dvipng should be rebuild with new debhelper to get trigger support

Setting up libaiksaurus-1.2-data (1.2.1+dev-0.12-6) ...
Setting up libaiksaurus-1.2-0c2a (1.2.1+dev-0.12-6) ...

Setting up lyx-common (1.6.4-1ubuntu1) ...
Running mktexlsr. This may take some time... done.

Setting up lyx (1.6.4-1ubuntu1) ...

Setting up psutils (1.17-26) ...
Setting up ttf-lyx (1.6.4-1ubuntu1) ...
Updating fontconfig cache for /usr/share/fonts/truetype/ttf-lyx
No CIDSupplement specified for Batang-Regular, defaulting to 0.
No CIDSupplement specified for Batang-Bold, defaulting to 0.
No CIDSupplement specified for UMingCN, defaulting to 0.
No CIDSupplement specified for ZenHei-CNS, defaulting to 0.
No CIDSupplement specified for Dotum-Bold, defaulting to 0.
No CIDSupplement specified for ZenHei, defaulting to 0.
No CIDSupplement specified for Dotum-Regular, defaulting to 0.

Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
Processing triggers for menu ...
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
8<-----------------------

Notice how dvipng, which is a 'Recommends' is configured BEFORE
libaiksaurus, which is a 'Depends' and is listed before dvipng. Before
you ask: noo, libaiksaurus does not depend on dvipng:

8<-----------------------
pgquiles at mcpau:~$ apt-cache depends libaiksaurus-1.2-0c2a
libaiksaurus-1.2-0c2a
  Depends: libc6
  Depends: libgcc1
  Depends: libstdc++6
  Depends: libaiksaurus-1.2-data
  Conflicts: <libaiksaurus-1.2-0>
  Conflicts: <libaiksaurus0>
  Conflicts: <libaiksaurus0c102>
  Replaces: <libaiksaurus-1.2-0>
  Replaces: <libaiksaurus0>
  Replaces: <libaiksaurus0c102>
pgquiles at mcpau:~$ apt-cache depends libaiksaurus-1.2-data
libaiksaurus-1.2-data
  Conflicts: <libaiksaurus-data>
8<-----------------------

In fact, 'apt-cache depends lyx' shows dvipng well-below libaiksaurus:

8<-----------------------
lyx
  Depends: libaiksaurus-1.2-0c2a
  Depends: libaspell15
  Depends: libboost-regex1.38.0
  Depends: libboost-signals1.38.0
  Depends: libc6
  Depends: libgcc1
  Depends: libqtcore4
  Depends: libqtgui4
  Depends: libstdc++6
  Depends: libx11-6
  Depends: zlib1g
  Depends: lyx-common
  Depends: xdg-utils
  Depends: mime-support
 |Suggests: cups-client
  Suggests: lpr
    cups-bsd
    lprng
 |Suggests: <iceweasel>
  Suggests: <www-browser>
    arora
    conkeror
    edbrowse
    lynx-cur
    netsurf
    chimera2
    elinks
    elinks-lite
    elvis
    elvis-console
    epiphany-browser
    firefox-3.5
    galeon
    kazehakase
    konqueror
    links
    links2
    midori
    netrik
    opera
    seamonkey-browser
    xemacs21-mule
    xemacs21-mule-canna-wnn
    xemacs21-nomule
    w3m
  Suggests: rcs
  Suggests: dvipost
 |Suggests: tex4ht
 |Suggests: hevea
 |Suggests: tth
  Suggests: latex2html
  Suggests: groff
  Suggests: libtiff-tools
  Suggests: gnuhtml2latex
  Suggests: wv
  Suggests: chktex
  Suggests: noweb
  Suggests: menu
  Suggests: sgmltools-lite
  Suggests: linuxdoc-tools
  Suggests: writer2latex
  Suggests: latex2rtf
  Recommends: texlive-latex-recommended
  Recommends: texlive-latex-extra
  Recommends: texlive-fonts-recommended
  Recommends: preview-latex-style
  Recommends: dvipng
  Recommends: imagemagick
    graphicsmagick-imagemagick-compat
  Recommends: psutils
  Recommends: ghostscript
  Recommends: poppler-utils
    xpdf-utils
  Recommends: ttf-lyx
 |Recommends: evince
  Recommends: <pdf-viewer>
    acroread
    okular
    epdfview
    evince
    gv
    viewpdf.app
    xpdf-reader
    xpdf-utils
  Conflicts: <lyx-qt>
  Conflicts: <lyx-xforms>
  Replaces: lyx-common
8<-----------------------

So maybe you are right and apt guarantees the order of installation
but I can't find any reference to what is that order and in my tests,
the order is not what you would expect (i. e. the order in which the
dependencies are listed). I'm not even sure you can guarantee the
order in which packages are unpacked.

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)



More information about the ubuntu-devel mailing list