Line 615: | Line 615: | ||
<pre> | <pre> | ||
git add | git add ackme-job.service | ||
git add | git add ackme-job.timer | ||
</pre> | </pre> | ||
Line 625: | Line 625: | ||
git format-patch -s -n master..systemd-timers | git format-patch -s -n master..systemd-timers | ||
</pre> | </pre> | ||
Push the patch or file a bug in [https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora | Fedora] | |||
=== Timer unit samples === | === Timer unit samples === |
Revision as of 11:18, 7 August 2013
Systemd migration and packaging
Setting up the environment
For sys V packages
Sysv to systemd service migration
Setting up the migration environment for systemd services.
For sys V to systemd migration create a service.txt file with the following unmigrated ( 119 ) components in Fedora
amavisd-new bdii bitten bluez boa ceph cfengine cherokee clement conmux ctdb cyphesis dahdi-tools dhcp_probe dircproxy diskimage-builder dkim-milter dpm-dsi drbdlinks drbd ebtables etckeeper firehol fts-server globus-gatekeeper globus-gridftp-server globus-rls-server globus-scheduler-event-generator gmediaserver gofer greylistd i8kutils ibmasm imagefactory iodine iprutils koji resource-agents ltsp lvm2 mimedefang perl-mogilefs-server mom monotone moodle mysql-proxy nagios ncid nessus-core netbsd-iscsi netcf netdisco netdump-server nightview noip nordugrid-arc nxtvepg oidentd openpts openscada openser openslp opentracker orbited ovirt-engine pathfinder pcp Perlbal pgbouncer plague pnp4nagios popfile powerman psad python-carbon qpid-cpp RabbIT ratbox-services redis rinputd ris-linux root roundup rubygem-openshift-origin-node sagator ser sigul sip-redirect sipwitch sks smstools snake spampd spawn-fcgi Spawning spectrum ssbd sslogger svxlink tabled tetrinetx thebridge tinyproxy tmda torque ttywatch ulogd vblade vhostmd vmpsd voms Vuurmuur xorg-x11-xfs xrootd xtide yum-cron yum-utils zarafa
Then git clone the packages from Fedora
while read line; do git clone git://pkgs.fedoraproject.org/$line; done < services.txt
Create a separated branch to work on
while read line; do cd $line; git checkout -b systemd-timers; cd - done < services.txt
Decide which component you are going to be migrating and add your name next to it on this list
Package name | Bug Number | Port Status | Ready for Proven Packager | Proven Packager | Note |
amavisd-new | #N/A | No | Nobody | ||
amavisd-new-snmp | #N/A | No | Nobody | ||
bdii | #N/A | No | Nobody | ||
bitten-slave | #N/A | No | Nobody | ||
bluez-compat | #N/A | No | Nobody | ||
boa | #N/A | No | Nobody | ||
ceph | #N/A | No | Nobody | ||
cfengine | #N/A | No | Nobody | ||
cherokee | #N/A | No | Nobody | ||
clement | #N/A | No | Nobody | ||
cmirror | #N/A | No | Nobody | ||
conmux | #N/A | No | Nobody | ||
ctdb-tests | #N/A | No | Nobody | ||
cyphesis | #N/A | No | Nobody | ||
dahdi-tools | #N/A | No | Nobody | ||
dhcp_probe | #N/A | No | Nobody | ||
dircproxy | #N/A | No | Nobody | ||
diskimage-builder | #N/A | No | Nobody | ||
dkim-milter | #N/A | No | Nobody | ||
dpm-dsi | #N/A | No | Nobody | ||
drbdlinks | #N/A | No | Nobody | ||
drbd-utils | #N/A | No | Nobody | ||
ebtables | #N/A | No | Nobody | ||
etckeeper | #N/A | No | Nobody | ||
firehol | #N/A | No | Nobody | ||
fts-server | #N/A | No | Nobody | ||
globus-gatekeeper | #N/A | No | Nobody | ||
globus-gridftp-server-progs | #N/A | No | Nobody | ||
globus-rls-server | #N/A | No | Nobody | ||
globus-scheduler-event-generator-progs | #N/A | No | Nobody | ||
gmediaserver | #N/A | No | Nobody | ||
gofer | #N/A | No | Nobody | ||
greylistd | #N/A | No | Nobody | ||
i8kutils | #N/A | No | Nobody | ||
ibmasm | #N/A | No | Nobody | ||
ifplugd | #N/A | No | Orphan | ||
imagefactory | #N/A | No | Nobody | ||
iodine-client | #N/A | No | Nobody | ||
iodine-server | #N/A | No | Nobody | ||
iprutils | #N/A | No | Nobody | ||
koji-builder | #N/A | No | Nobody | ||
koji-utils | #N/A | No | Nobody | ||
koji-vm | #N/A | No | Nobody | ||
ldirectord | #N/A | No | Nobody | ||
ltsp-server | #N/A | No | Nobody | ||
lvm2-cluster | #N/A | No | Nobody | ||
mimedefang | #N/A | No | Nobody | ||
mogilefsd | #N/A | No | Nobody | ||
mogstored | #N/A | No | Nobody | ||
mom | #N/A | No | Nobody | ||
monotone-server | #N/A | No | Nobody | ||
moodle | #N/A | No | Nobody | ||
mysql-mmm-agent | #N/A | No | Nobody | ORPHAN | |
mysql-mmm-monitor | #N/A | No | Nobody | ORPHAN | |
mysql-proxy | #N/A | No | Nobody | ||
nagios | #N/A | No | Nobody | ||
ncid | #N/A | No | Nobody | ||
ncid-client | #N/A | No | Nobody | ||
ncid-samba | #N/A | No | Nobody | ||
ncid-speak | #N/A | No | Nobody | ||
nessus-server | #N/A | No | Nobody | ||
netbsd-iscsi | #N/A | No | Nobody | ||
netcf-libs | #N/A | No | Nobody | ||
netdisco | #N/A | No | Nobody | ||
netdump-server | #N/A | No | Nobody | ||
nightview-server | #N/A | No | Nobody | ||
noip | #N/A | No | Nobody | ||
nordugrid-arc-acix-cache | #N/A | No | Nobody | ||
nordugrid-arc-acix-index | #N/A | No | Nobody | ||
nordugrid-arc-arex | #N/A | No | Nobody | ||
nordugrid-arc-aris | #N/A | No | Nobody | ||
nordugrid-arc-cache-service | #N/A | No | Nobody | ||
nordugrid-arc-datadelivery-service | #N/A | No | Nobody | ||
nordugrid-arc-egiis | #N/A | No | Nobody | ||
nordugrid-arc-gridftpd | #N/A | No | Nobody | ||
nordugrid-arc-hed | #N/A | No | Nobody | ||
nordugrid-arc-ldap-infosys | #N/A | No | Nobody | ||
nxtvepg | #N/A | No | Nobody | ||
oidentd | #N/A | No | Nobody | ||
openpts | #N/A | No | Nobody | ||
openscada | #N/A | No | Nobody | ||
openser | #N/A | No | Nobody | ||
openslp-server | #N/A | No | Nobody | ||
opentracker-ipv4 | #N/A | No | Nobody | ||
opentracker-ipv6 | #N/A | No | Nobody | ||
orbited | #N/A | No | Nobody | ||
ovirt-engine-notification-service | #N/A | No | Nobody | ||
pathfinderd | #N/A | No | Nobody | ||
pcp | #N/A | No | Nobody | ||
Perlbal | #N/A | No | Nobody | ||
pgbouncer | #N/A | No | Nobody | ||
plague | #N/A | No | Nobody | ||
plague-builder | #N/A | No | Nobody | ||
pnp4nagios | #N/A | No | Nobody | ||
popfile | #N/A | No | Nobody | ||
powerman | #N/A | No | Nobody | ||
preload | #N/A | No | Nobody | ORPHAN | |
psad | #N/A | No | Nobody | ||
python-carbon | #N/A | No | Nobody | ||
qpid-cpp-server-ha | #N/A | No | Nobody | ||
RabbIT | #N/A | No | Nobody | ||
ratbox-services | #N/A | No | Nobody | ||
redis | #N/A | No | Nobody | ||
rinputd | #N/A | No | Nobody | ||
ris-linux | #N/A | No | Nobody | ||
root-proofd | #N/A | No | Nobody | ||
root-rootd | #N/A | No | Nobody | ||
roundup | #N/A | No | Nobody | ||
rubygem-openshift-origin-node | #N/A | No | Nobody | ||
sagator-core | #N/A | No | Nobody | ||
ser | #N/A | No | Nobody | ||
sigul | #N/A | No | Nobody | ||
sip-redirect | #N/A | No | Nobody | ||
sipwitch | #N/A | No | Nobody | ||
sks | #N/A | No | Nobody | ||
smstools | #N/A | No | Nobody | ||
snake-server | #N/A | No | Nobody | ||
spampd | #N/A | No | Nobody | ||
spawn-fcgi | #N/A | No | Nobody | ||
Spawning | #N/A | No | Nobody | ||
spectrum | #N/A | No | Nobody | ||
ssbd | #N/A | No | Nobody | ||
sslogger-slogd | #N/A | No | Nobody | ||
svxlink-server | #N/A | No | Nobody | ||
tabled | #N/A | No | Nobody | ||
tetrinetx | #N/A | No | Nobody | ||
thebridge | #N/A | No | Nobody | ||
tinyproxy | #N/A | No | Nobody | ||
tmda-ofmipd | #N/A | No | Nobody | ||
torque-mom | #N/A | No | Nobody | ||
torque-scheduler | #N/A | No | Nobody | ||
torque-server | #N/A | No | Nobody | ||
ttywatch | #N/A | No | Nobody | ||
ulogd | #N/A | No | Nobody | ||
vblade | #N/A | No | Nobody | ||
vhostmd | #N/A | No | Nobody | ||
vmpsd | #N/A | No | Nobody | ||
voms-server | #N/A | No | Nobody | ||
Vuurmuur-daemon | #N/A | No | Nobody | ||
xorg-x11-xfs | #N/A | No | Nobody | ||
xrootd | #N/A | No | Nobody | ||
xtide | #N/A | No | Nobody | ||
yum-cron | #N/A | No | Nobody | ||
yum-updateonboot | #N/A | No | Nobody | ||
zarafa-dagent | #N/A | No | Nobody | ||
zarafa-gateway | #N/A | No | Nobody | ||
zarafa-ical | #N/A | No | Nobody | ||
zarafa-monitor | #N/A | No | Nobody | ||
zarafa-search | #N/A | No | Nobody | ||
zarafa-server | #N/A | No | Nobody | ||
zarafa-spooler | #N/A | No | Nobody |
Cron job to timer migration
When to migrate
Setting up the migration environment for systemd timers.
For timer migration create a timers.txt file with the following content.
amavisd-new apt arm4 atop bcfg2 clement cyrus-imapd dbmail denyhosts dspam exim fetch-crl freeipa hylafax+ inn leafnode ltsp mailman mcelog mdadm mldonkey newscache nsd opendnssec openvas-scanner ovirt-engine ovirt-node polipo sagator sipwitch spamassassin squidGuard subscription-manager sysstat vdsm vnstat yum-cron
Then git clone the packages from Fedora
while read line do git clone git://pkgs.fedoraproject.org/$line; done < timers.txt
Create a separated branch to work on
while read line do cd $line; git checkout -b systemd-timers; cd - done < timers.txt
Decide which component you are going to be migrating and add your name next to it on this list
Package name | Bug Number | Port Status | Ready for Proven Packager | Proven Packager | Note |
amavisd-new | #N/A | No | Nobody | drop cron use tmpfile | |
apt | #991684 | Yes | Nobody | ||
arm4 | #991696 | Yes | Nobody | ||
atop | #N/A | No | Nobody | Cron job restarts service could potentially be a feature | |
bcfg2 | #N/A | No | Nobody | ||
clement | #N/A | No | Nobody | ||
cyrus-imapd | #N/A | No | Nobody | ||
dbmail | #N/A | No | Nobody | ||
denyhosts | #N/A | No | Nobody | ||
dspam | #N/A | No | Nobody | ||
exim | #N/A | No | Nobody | ||
fetch-crl | #N/A | No | Nobody | ||
freeipa-server | #N/A | No | Nobody | ||
hylafax+ | #N/A | No | Nobody | ||
inn | #N/A | No | Nobody | ||
leafnode | #N/A | No | Nobody | ||
ltsp-server | #N/A | No | Nobody | ||
mailman | #N/A | No | Nobody | ||
mcelog | #N/A | No | Nobody | ||
mdadm | #N/A | No | Nobody | ||
mldonkey-server | #N/A | No | Nobody | ||
newscache | #N/A | No | Nobody | ||
nsd | #N/A | No | Nobody | ||
opendnssec | #N/A | No | Nobody | ||
openvas-scanner | #N/A | No | Nobody | ||
ovirt-engine | #N/A | No | Nobody | ||
ovirt-node | #N/A | No | Nobody | ||
polipo | #N/A | No | Nobody | ||
sagator-core | #N/A | No | Nobody | ||
sipwitch | #N/A | No | Nobody | ||
spamassassin | #N/A | No | Nobody | ||
squidGuard | #N/A | No | Nobody | ||
subscription-manager | #N/A | No | Nobody | ||
sysstat | #N/A | No | Nobody | ||
vdsm-reg | #N/A | No | Nobody | ||
vnstat | #N/A | No | Nobody | ||
yum-cron | #N/A | No | Nobody |
Add the timer unit to git
git add ackme-job.service git add ackme-job.timer
Commit the change and create a patch.
git commit -a -m "Migrating cron job to native systemd units" git format-patch -s -n master..systemd-timers
Push the patch or file a bug in | Fedora
Timer unit samples
Bound to another service
ackme.service:
[Unit] Description=Ackme Sample Service Documentation=man:ackmed(1) [Service] ExecStart=/usr/bin/ackmed [Install] WantedBy=multi-user.target
ackme-job.timer
[Unit] Description=Ackme Sample Timer Trigger Documentation=man:ackmed(1) BindTo=ackme.service [Timer] OnCalendar=daily [Install] WantedBy=ackme.service
ackme-job.service
[Unit] Description=Daily Sample Ackme Job Documentation=man:ackmed(1) [Service] User=ackme ExecStart=/usr/bin/acme-job
Traditional Hourly
[Unit] Description=Ackme Sample Timer Trigger Documentation=man:ackmed(1) [Timer] OnCalendar=hourly [Install] WantedBy=timers.target
ackme-job.service
[Unit] Description=Daily Ackme Sample Job Documentation=man:ackmed(1) [Service] User=ackme ExecStart=/usr/bin/acme-job
Traditional Daily
[Unit] Description=Ackme Sample Timer Unit Documentation=man:ackmed(1) [Timer] OnCalendar=daily [Install] WantedBy=ackme.service
ackme-job.service
[Unit] Description=Daily ackme time trigger Documentation=man:ackmed(1) [Service] User=ackme ExecStart=/usr/bin/acme-job
Traditional Weekly
[Unit] Description=Ackme Sample Timer Unit Documentation=man:ackmed(1) [Timer] OnCalendar=weekly [Install] WantedBy=timers.target
ackme-job.service
[Unit] Description=Daily ackme time trigger Documentation=man:ackmed(1) [Service] User=ackme ExecStart=/usr/bin/acme-job
Traditional Monthly
[Unit] Description=Ackme Sample Timer Trigger Documentation=man:acmed(1) [Timer] OnCalendar=monthly [Install] WantedBy=timers.target
ackme-job.service
[Unit] Description=Monthly Ackme Sample Job Documentation=man:acmed(1) [Service] User=ackme ExecStart=/usr/bin/ackme-job