Suse-packages

From Kolab wiki

Jump to: navigation, search

kolab packages to suse packages howto

This is just a note, of an investigation whether the kolab openpkg packages are present in or can be mapped to suse.

Target distribution is: suse-9.2.


Start with aliasing kolab's rpm command:

alias kpm="/kolab/bin/openpkg rpm"

The kolab openpkg distribution consist in total of 76 packages.

kolab specific packages:

kpm -qa --qf "%{NAME}\n" | grep kolab

This results in:

perl-kolab
kolabd
kolab-resource-handlers
kolab-webadmin

Packages patch by the kolab project:

  kpm -qa | grep _kolab$

This results (Januari 2005) in:

postfix-2.1.5-2.2.0_kolab
imapd-2.2.8-2.2.1_kolab
apache-1.3.31-2.2.3_kolab

It would be nice to know what has been changed to these packages...

In case of imapd, some perl modules have been added, check with:

kpm -ql imapd | grep perl | sed s,/kolab/lib/perl/vendor_perl/5.8.5/i686-linux/,,

This results in:

Cyrus/IMAP.pm
Cyrus/IMAP/Admin.pm
Cyrus/IMAP/IMSP.pm
Cyrus/IMAP/Shell.pm
Cyrus/SIEVE/managesieve.pm
auto/Cyrus/IMAP/IMAP.bs
auto/Cyrus/IMAP/IMAP.so
auto/Cyrus/SIEVE/managesieve/managesieve.bs
auto/Cyrus/SIEVE/managesieve/managesieve.so

It actually seems that these files are delivered by suse rpm: perl-Cyrus-IMAP, as can be seen at: [perl-Cyrus-IMAP listing].

Some packages can be skipped from the list as one knows that those are needed to build the openpkg environment only, or are the packages provided by the kolab project.

kpm -qa --qf "%{NAME}\n" | grep -E "openpkg|gpg-pubkey|kolab" | sort

The result is 8 packages:

gpg-pubkey
kolab-resource-handlers
kolab-webadmin
kolabd
openpkg
openpkg-tools
perl-kolab
perl-openpkg

This means that 69 packages must be matched into suse ones... (There are actually some packages involved in setting up the openpkg environment and building the kolab packages. This is explained in the [binary rpms installation howto ].


Some packages have the same name on kolab and suse, so that is easy. You can e.g. create a file that lists all the rpms by name, version and release, with rpm -qp --qf "%{NAME},%{VERSION},%{RELEASE}". The kolab packages can than be matched with the information in the file that has been created. The following packages (39 in total) matches the kolab packages:

autoconf
automake
binutils
bison
bzip2
clamav
db
diffutils
expat
file
flex
gcc
gdbm
gettext
gmp
grep
gzip
imap
libxml
libxslt
lzo
m4
make
mm
ncurses
openssl
patch
pcre
perl
perl-ldap
postfix
procmail
readline
sed
sharutils
spamassassin
texinfo
vim
zlib

Most of these packages seem to have the right version. There are 2 packages that have noticable differences:

           kolab      suse
---------------------------
pcre       5.0        4.5
perl-ldap  0.32       0.29

To obtain the kolab openldap version use: kpm -qi openldap.

The packages that could not be easily mapped are listed below. In some cases, kolab files are being provided by suse using -devel- packages. These packages are not made part of the list.

apache   -> apache2
libxml   -> libxml2
php      -> php4 and php4-pear
sasl     -> cyrus-sasl, cyrus-sasl-crammd5, cyrus-sasl-digestmd5,
            cyrus-sasl-plain, cyrus-sasl-saslauth
proftpd  -> vsftpd (not fully true, it's like the ftp functionality is
            provided by vsftpd)
openldap -> openldap2-client and openldap2
libiconv -> glibc
getopt   -> util-linux
dron     -> is a dropin replacement for 'cron'
amavisd  -> amavisd-new-2.1.2-5, suse misses addon pkg amavislogsumm
imapd    -> cyrus-imapd
Packages not provided by suse:
php-smarty
fsl      -> is a dropin replacement for syslog (fsl is required by
            procmail openldap sasl postfix imapd spamassassin,
           according kpm -q --whatrequires fsh)
dbtool   -> notneeded by any package (according to kpm -q --whatrequires
            dbtool)
pth      -> needed by openldap (according rpm -q --whatrequires pth)


The rest of the kolab packages are (18) perl packages, delivering a total of more than 3000 files. As openpkg perl packages have a lot of perl modules combined and suse keeps the perl modules seperated it is quite hard to map the packages....

In this case the following trick can be used to get an idea of the perl modules used by the kolab project....

for PKG in $(kpm -qa --qf "%{NAME}\n" | grep kolab); do
  for FILE in $(kpm -ql $PKG) do
      file $FILE
  done
done | grep -i perl | grep -v directory | cut -d: -f1

This gives the following result:

/kolab/lib/perl/vendor_perl/5.8.5/Kolab.pm
/kolab/lib/perl/vendor_perl/5.8.5/Kolab/Conf.pm
/kolab/lib/perl/vendor_perl/5.8.5/Kolab/Cyrus.pm
/kolab/lib/perl/vendor_perl/5.8.5/Kolab/DirServ.pm
/kolab/lib/perl/vendor_perl/5.8.5/Kolab/LDAP.pm
/kolab/lib/perl/vendor_perl/5.8.5/Kolab/LDAP/Backend.pm
/kolab/lib/perl/vendor_perl/5.8.5/Kolab/LDAP/Backend/ad.pm
/kolab/lib/perl/vendor_perl/5.8.5/Kolab/LDAP/Backend/dirservd.pm
/kolab/lib/perl/vendor_perl/5.8.5/Kolab/LDAP/Backend/slurpd.pm
/kolab/lib/perl/vendor_perl/5.8.5/Kolab/Mailer.pm
/kolab/lib/perl/vendor_perl/5.8.5/Kolab/Util.pm
/kolab/bin/kolabpasswd
/kolab/etc/kolab/kolab
/kolab/etc/kolab/kolab_bootstrap
/kolab/etc/kolab/kolab_smtpdpolicy
/kolab/etc/kolab/kolabquotawarn
/kolab/sbin/kolabconf
/kolab/sbin/kolabd
/kolab/var/kolab/php/pear/docs/SOAP/example/tcp_daemon.pl
/kolab/var/kolab/www/fbview/turba/scripts/ldap/addou.pl


The result above is stored in a file called 'kolab-perl-files'. One more step to go to determine the perl modules used by kolab....

  grep ^use $(cat kolab-perl-files) | cut -d: -f2- |
  sed -e 's,^use ,,' -e 's, .*,,' -e 's,;,,' -e 's,::,/,g' | sort -u

With the following output:

Convert/ASN1
Cyrus/IMAP/Admin
Data/Dumper
DB_File
Fcntl
File/Copy
File/Temp
Getopt/Std
IO/File
IO/Select
IO/Socket/INET
Kolab
Kolab/Conf
Kolab/Cyrus
Kolab/DirServ
Kolab/LDAP
Kolab/LDAP/Backend
Kolab/Mailer
Kolab/Util
Mail/IMAPClient
Mail/Message
MIME/Body
MIME/Entity
MIME/Parser
Net/hostent
Net/LDAP
Net/LDAP/ASN
Net/LDAP/Constant
Net/LDAP/Control
Net/LDAP/Entry
Net/LDAP/LDIF
Net/LDAPS
Net/Netmask
POSIX
SOAP/Transport/TCP
Socket
Sys/Hostname
Sys/Syslog
Term/ReadKey
Time/Local
Time/localtime
UNIVERSAL
URI
warnings

Most of the perl modules listed above can be mapped to suse packages. One way to do the mapping is to create a file that lists the relation between the all perl packages, delivered by the distribution, and the files provided by those packages. Just grep in the package versus file - file for the perl modules that are listing above. For suse this results in the following packages:

perl
perl-Convert-ASN1
perl-ldap
perl-ldap-ssl
perl-MIME-tools
perl-Net-Netmask
perl-SOAP-Lite
perl-TermReadKey
perl-URI (most likely)

Let's assume that their versions are okay...

Two modules could not be mapped, those are: Mail/IMAPClient and Mail/Message, Those are to be included in the distribution.

Conclusion

It seems that most of the required packages by the kolab project are availabe on suse. The missing ones are: php-smarty and perl modules Mail/IMAPClient and Mail/Message.

The two perl modules are available now for SuSE 9.2 and SuSE 9.1 . I hope they will work fine :)

The impact of the packages fsl and pth should be investigated (do they influence other packages during compilation, are fsl and pth needed by kolab or is openldap as compiled by suse good enough (PS: pth seems to be removed in kolab2-rc2. fsl can simply be removed if you want the normal syslog based logging as provided by SUSE).

Are the changes made to postfix, imapd, amavisd and apache applied upstream? More information about this on the Kolab-major-app-patches wiki page. There are [some patched applications] available for suse.

What is impact that kolab uses apache and proftp and suse respectively apache2 and vsftpd?

dbtool provides tools to maintain the OpenLDAP BDB-backend (sleepycat bdb) one might need need i.e. db_recover, which IIRC is in the package dbtool.

Should the packages perl-ldap and pcre be updated in suse, or are the suse versions good enough?

Personal tools