On 12/22/2011 06:52 PM, Stephen John Smoogen wrote:
2011/12/22 "Jóhann B. Guðmundsson"johannbg@gmail.com:
I'm in the midst of converting legacy sysv init scripts that use /usr/share/clamav/clamd-wrapper to native systemd units and I have noticed some discrepancy in their packaging which indicate a lack of guidelines.
Granted that I'm no clamav expert but from what I can tell the packages that use the clamd-wrapper should all be doing the same thing and the package that does it most right from my point of view is exim-clamd and the worst one being dansguardian ( which seems to be yet another package we ship that is neglected by it's maintainer(s) I come across in the migration process).
Clamav has been a special set of packages with a convoluted history from when it was a package in Fedora Extras. It has many ideas that were experimented with back then but not used later. It is probably a package that needs a serious rethunk. How it is started and packaged has effects on other packages so it is a Gordian knot.
Which we will unloose in the form of policy...
I guess the first to be asked should packages like exim and others be the ones to ship their clamav configurations ( as opposed to them being a sub package of clamav it self )?
If not should those packages not be having their clamav configuration in a separate sub package as exim does?
Should those packages regardless if they are sub packages of their relevant components or of clamav it self use the same default configuration as their bases ( most do btw ).
Which brings us to the configuration file with unification I would like to see inn...
We would be basing our packaging guidelines around these set of defaults in the default configuration files ( and the default configuration should be used as the bases for any package using this it's well documented ).
LogFile /var/log/clamd/foo.log LogSyslog yes PidFile /run/clamd/clamd-foo.pid TemporaryDirectory /var/lib/clamd/foo LocalSocket /run/clamd/clamd-foo.sock User foo AllowSupplementaryGroups yes
Rest would be package specific defaults if any other than these
Followed by unit files that looks likes this...
clamd-foo.service
[Unit] Description=Clamd foo An Interface Between MTA And Content Checkers Requires=clamd-foo.socket After=network.target
[Service] Type=forking PIDFile=/run/clamd/clamd-foo.pid ExecStart=/usr/sbin/clamd -c /etc/clamd.d/foo.conf
[Install] WantedBy=multi-user.target Also=clamd-foo.socket
clamd-foo.socket
[Unit] Description=Clamd Socket for foo
[Socket] ListenStream=/run/clamd/clamd-foo.socket
[Install] WantedBy=sockets.target
Now when I wrote the unit file for exim I got complaints in the logs for the database not being up2date to date which brings the question if packages should not depend on freshclam and freshclam be added to the service file with an ExecStartPre=-/usr/bin/freshclam line to ensure up2date the database be up2date before the service is started?
JBG