> However,
> I am confused if you are arguing for finer grain
> pkging or not.
Yes ;-)
I wouldn't say fine grained (wrt. locale stuff) and wouldn't say course grained
like "mixed | logical" packages. I think, something like "source-package
driven" would describe it a little bit better.
E.g. there are the GNOME source packages platform: libbonobo, libgnome,
libbonoboui, libgnomeui and desktop: gnome-keyring, scrollkeeper (BTW: don't
look at this code, you would start crying immediately), gtkhtml and
startup-notification. SUN mixed parts of them into SUNWgnome-libs. Why? I
prefer and actually made a package for each of those source packages. So far to
fine grained (another one comes later).
Wrt. to course grained, I would not separate man pages and message catalogs
into separate packages.
IMHO if I install a software, I want to have the man pages as well and since
HDD space is usually not an issue anymore, other people wouldn't care, even if
they'll probably will never have a look at the man pages.
Same thing wrt. what most distros call develop-* packages.
If one installs an LNF (my) package, he get's all headers and manpages
installed, whether wanted or not. There are probably people, which wanna save
some disk space. However, what I've observed is, that many people (even
none-developers) haven't installed the develop-* packages, but because the
wanna try a new software (got a hint from somewhere), they start getting
headaches, because they do not know, what packages they need (every vendor has
a different opinion, how they split it up and their name)... So splitting the
package into develop* would be easy, but almost no-one needs this anymore and
btw. it may introduce more headaches wrt. to version management ... But, I
usually take the extra effort to make a package relocatable (e.g. setting
*/lib/pkgconfig/*.pc:pref...@client_basedir@ etc, what is usually the easiest
part), remove the brain-damaging *.la files and usually remove the *.a files as
well. Is this now fine graind ? Is this course grained ? ;-)
Another example: Samba. Per default, no smb* binary is linked against
libsmbclient.so or libmsrpc.so. However gnome-vfs supports smbfs browsing, if
it finds the lib. On the other hand, gnome-vfs does not require a running samba
server. So splitting it up (finegraining it) makes sense. To get the picture
here my "fine course grained ;-)" approach:
LNFsamba-client/pkgmap:
: 1 33300
1 d none bin ? ? ?
1 f rename bin/findsmb 0755 bin bin 4642 12951 1149547393
1 s none bin/mount.smb=smbmount
1 s none bin/mount.smbfs=smbmount
1 f none bin/net 0755 bin bin 2124740 962 1149547393
1 f none bin/nmblookup 0755 bin bin 613932 15732 1149547393
1 f none bin/rpcclient 0755 bin bin 1957896 58086 1149547393
1 f none bin/smbcacls 0755 bin bin 1860896 3809 1149547393
1 f none bin/smbclient 0755 bin bin 945136 34231 1149547393
1 f none bin/smbcquotas 0755 bin bin 1802128 7816 1149547393
1 f none bin/smbget 0755 bin bin 1876888 23842 1149547393
1 f none bin/smbmnt 0755 bin bin 10012 10374 1149547393
1 f none bin/smbmount 0755 bin bin 865940 55556 1149547393
1 f none bin/smbtar 0755 bin bin 4896 46110 1149547389
1 f none bin/smbtree 0755 bin bin 858684 44522 1149547393
1 f none bin/smbumount 0755 bin bin 7248 13343 1149547393
1 i depend 262 22785 1149293290
1 i i.rename 313 24364 1029988757
1 d none include ? ? ?
1 f none include/libmsrpc.h 0755 bin bin 94920 12553 1149547393
1 f none include/libsmbclient.h 0755 bin bin 83077 29633 1149547393
1 d none lib ? ? ?
1 f none lib/libmsrpc.so 0755 bin bin 1837096 14806 1149547393
1 s none lib/libmsrpc.so.0=libmsrpc.so
1 f none lib/libsmbclient.so 0755 bin bin 1783932 19716 1149547393
1 s none lib/libsmbclient.so.0=libsmbclient.so
1 d none man ? ? ?
1 d none man/man1 ? ? ?
1 f none man/man1/findsmb.1.gz 0644 bin bin 1779 30527 1149547389
1 f none man/man1/nmblookup.1.gz 0644 bin bin 3228 19055 1149547389
1 f none man/man1/rpcclient.1.gz 0644 bin bin 5754 13201 1149547389
1 f none man/man1/smbcacls.1.gz 0644 bin bin 3011 49406 1149547389
1 f none man/man1/smbclient.1.gz 0644 bin bin 10254 53212 1149547389
1 f none man/man1/smbcquotas.1.gz 0644 bin bin 2665 15322 1149547389
1 f none man/man1/smbget.1 0644 bin bin 3623 40203 1149547389
1 f none man/man1/smbtar.1 0644 bin bin 3733 52728 1149547389
1 f none man/man1/smbtree.1.gz 0644 bin bin 2128 11320 1149547389
1 d none man/man5 ? ? ?
1 f none man/man5/smb.conf.5.gz 0644 bin bin 79339 14125 1149547389
1 f none man/man5/smbgetrc.5 0644 bin bin 2109 48994 1149547389
1 d none man/man7 ? ? ?
1 f none man/man7/libsmbclient.7 0644 bin bin 3930 19206 1149547389
1 f none man/man7/samba.7.gz 0644 bin bin 2934 51297 1149547389
1 d none man/man8 ? ? ?
1 s none man/man8/mount.smb.8.gz=smbmount.8.gz
1 s none man/man8/mount.smbfs.8.gz=smbmount.8.gz
1 f none man/man8/net.8.gz 0644 bin bin 5595 50006 1149547389
1 f none man/man8/smbmnt.8 0644 bin bin 2105 47240 1149547389
1 f none man/man8/smbmount.8.gz 0644 bin bin 3137 7424 1149547389
1 f none man/man8/smbumount.8 0644 bin bin 1462 57451 1149547389
1 i pkginfo 919 13123 1149547395
1 i postinstall 2046 22736 1149547394
1 i postremove 1756 92 1149547394
1 d none sbin ? ? ?
LNFsamba-server/pkgmap:
: 1 32796
1 d none bin ? ? ?
1 f none bin/eventlogadm 0755 bin bin 637944 55707 1149547393
1 f none bin/ntlm_auth 0755 bin bin 1047660 131 1149547393
1 f none bin/pdbedit 0755 bin bin 985236 38747 1149547393
1 f none bin/profiles 0755 bin bin 663280 33658 1149547393
1 f none bin/smbcontrol 0755 bin bin 646768 57817 1149547393
1 f none bin/smbpasswd 0755 bin bin 1816772 65516 1149547393
1 f none bin/smbspool 0755 bin bin 853620 11456 1149547393
1 f none bin/smbstatus 0755 bin bin 626092 59128 1149547393
1 f none bin/tdbbackup 0755 bin bin 38828 5268 1149547393
1 f none bin/tdbdump 0755 bin bin 36092 58103 1149547393
1 f none bin/tdbtool 0755 bin bin 43260 43735 1149547393
1 f none bin/testparm 0755 bin bin 576848 5583 1149547393
1 f none bin/wbinfo 0755 bin bin 581668 15982 1149547393
1 i depend 464 40911 1149293255
1 i i.rename 313 24364 1029988757
1 d none lib ? ? ?
1 d none lib/auth 0755 bin bin
1 f none lib/auth/script.so 0755 bin bin 5696 39106 1149547393
1 d none lib/charset 0755 bin bin
1 f none lib/charset/CP437.so 0755 bin bin 4804 18062 1149547393
1 f none lib/charset/CP850.so 0755 bin bin 4676 2444 1149547393
1 f none lib/de.msg 0644 bin bin 13127 38769 1149547389
1 f none lib/en.msg 0644 bin bin 10586 49532 1149547389
1 f none lib/fr.msg 0644 bin bin 12821 8969 1149547389
1 d none lib/idmap 0755 bin bin
1 f none lib/it.msg 0644 bin bin 12453 32902 1149547389
1 f none lib/ja.msg 0644 bin bin 14527 50026 1149547389
1 f none lib/libnss_winbind.so 0755 bin bin 18068 1283 1149547394
1 s none lib/libnss_winbind.so.2=libnss_winbind.so
1 f none lib/libnss_wins.so 0755 bin bin 771960 42286 1149547394
1 s none lib/libnss_wins.so.2=libnss_wins.so
1 f none lib/lowcase.dat 0644 bin bin 131072 6809 1149547389
1 f none lib/nl.msg 0644 bin bin 13445 60692 1149547389
1 d none lib/pdb 0755 bin bin
1 f none lib/pl.msg 0644 bin bin 12541 58496 1149547389
1 d none lib/rpc 0755 bin bin
1 f rename lib/smb.conf.default 0644 bin bin 12687 26058 1149294192
1 f none lib/tr.msg 0644 bin bin 12738 28371 1149547389
1 f none lib/upcase.dat 0644 bin bin 131072 59205 1149547389
1 f none lib/valid.dat 0644 bin bin 65536 9446 1149547389
1 d none lib/vfs 0755 bin bin
1 f none lib/vfs/audit.so 0755 bin bin 7560 51280 1149547393
1 f none lib/vfs/cap.so 0755 bin bin 15484 38850 1149547393
1 f none lib/vfs/default_quota.so 0755 bin bin 4240 44608 1149547393
1 f none lib/vfs/expand_msdfs.so 0755 bin bin 7008 26464 1149547393
1 f none lib/vfs/extd_audit.so 0755 bin bin 11144 25006 1149547393
1 f none lib/vfs/fake_perms.so 0755 bin bin 3472 29284 1149547393
1 f none lib/vfs/full_audit.so 0755 bin bin 24696 20263 1149547393
1 f none lib/vfs/netatalk.so 0755 bin bin 8384 3049 1149547393
1 f none lib/vfs/readonly.so 0755 bin bin 15684 37404 1149547393
1 f none lib/vfs/recycle.so 0755 bin bin 15388 34509 1149547393
1 f none lib/vfs/shadow_copy.so 0755 bin bin 7276 22281 1149547393
1 d none man ? ? ?
1 d none man/man1 ? ? ?
1 f none man/man1/ntlm_auth.1.gz 0644 bin bin 3939 37494 1149547389
1 f none man/man1/profiles.1 0644 bin bin 1294 39018 1149547389
1 f none man/man1/smbcontrol.1.gz 0644 bin bin 2416 50267 1149547389
1 f none man/man1/smbstatus.1 0644 bin bin 3657 53457 1149547389
1 f none man/man1/testparm.1 0644 bin bin 3994 19360 1149547389
1 f none man/man1/vfstest.1.gz 0644 bin bin 1952 45411 1149547389
1 f none man/man1/wbinfo.1.gz 0644 bin bin 2450 45918 1149547389
1 d none man/man5 ? ? ?
1 f none man/man5/lmhosts.5 0644 bin bin 3018 55529 1149547389
1 f none man/man5/smbpasswd.5.gz 0644 bin bin 2571 2523 1149547389
1 d none man/man7 ? ? ?
1 f none man/man7/pam_winbind.7 0644 bin bin 2180 54415 1149547389
1 d none man/man8 ? ? ?
1 f none man/man8/nmbd.8.gz 0644 bin bin 3787 24942 1149547389
1 f none man/man8/pdbedit.8.gz 0644 bin bin 3668 56125 1149547389
1 f none man/man8/smbd.8.gz 0644 bin bin 5103 398 1149547389
1 f none man/man8/smbpasswd.8.gz 0644 bin bin 4185 10 1149547389
1 f none man/man8/smbspool.8 0644 bin bin 3329 24546 1149547389
1 f none man/man8/tdbbackup.8 0644 bin bin 2583 22051 1149547389
1 f none man/man8/tdbdump.8 0644 bin bin 1176 30712 1149547389
1 f none man/man8/umount.cifs.8.gz 0644 bin bin 2012 58336 1149547389
1 f none man/man8/winbindd.8.gz 0644 bin bin 5206 18128 1149547389
1 i pkginfo 864 8022 1149547394
1 i postinstall 1567 52739 1041752146
1 i postremove 397 29168 1041752146
1 d none private ? ? ?
1 d none sbin ? ? ?
1 f none sbin/nmbd 0755 bin bin 1040012 26602 1149547393
1 f none sbin/smbd 0755 bin bin 3412292 21924 1149547393
1 f none sbin/winbindd 0755 bin bin 2089732 24675 1149547393
For Solaris the content is basically the same (beside the additions for the
/etc/svc/method and /var/svc/manifest and more recent).
> I don't think one can completely
> understand dependency by parsing the output from
> elfdump.
Right, but at least you get the basic work done and at least for trivial
packages its sufficient. Of course, e.g. some software requires perl not only
for some netty gritty stuff but for real operation, so a P *perl* should be
added as well aka the basic work doesn't free one from reviewing/understanding
the software, if the package should be get close to "perfect" ;-)
> I am not sure why you have not run into a problem in
> linux.
Basically it doesn't matter, on which OS as long as the basic deps are met ...
However on Linux I don't compile against the system, but "unpackage" the
required software to $ROOT4BUILD, explicitly set the
PKG_CONFIG_PATH="${ROOT4BUILD}/usr/lib/pkgconfig",
PATH=${ROOT4BUILD}/usr/bin etc, as well as adding the appropriate C*FLAGS to
configure. This way I usually get "mismatches"/problems reported very early (at
least for the most "modern" software)...
So, since this is a little bit different than what other vendors do, this might
be the reason for "no problems".
> But you will not get library dependencies
> when the code opens libraries using dlopens.
Yepp. And that's the tricky part. E.g. (hope I remember correctly) even if one
compiles gnome-vfs with smbsupport, there is no real dependency on
libsmbclient, i.e. gnome-vfs works even without it (however does not provide
the optional smbfs browsing). So an O for optional or S aka soft dep would be a
nice to have in the depend file. On the other hand, if an app can't ldopen and
starts doing crazy things for whatever reason, one needs another P flag. And
btw, the first thing I do, when creating a [new] package is having a look at
the source's configure.ac (or something like that) to get a "feeling" for it...
Hope, I've answered your questions.
Regards,
jens.
This message posted from opensolaris.org