Úprava postinstalačního skriptu

From DCEwiki
Jump to: navigation, search

Následující příklad, demonstruje využití parametru onlyif při instalaci debianích balíčků.

Jsou-li totiž přes typ user udržovány i systémové účty na linuxového systému, mohou postinstalační skripty některých instalačních balíčků (v našem případě půjde o ntp) skončit chybou. Nepočítají totiž s eventualitou, že potřebná skupina i uživatel kterou chtějí vytvořit již v systému existují.

Řešení je prosté - odstranit ze skriptu ntp.postinst příkazy addgroup a adduser dříve, než dojde k postinstalační konfiguraci.

Poznámka Níže uvedený blok kódu musí být při použití součástí třídy, která se stará o instalaci balíku ntp
Poznámka
$ntp_postinst = "/var/lib/dpkg/info/ntp.postinst"
package { 'ed':
    ensure => present,
    }
exec { "ntp-preinstall":
    path => "/usr/bin:/usr/sbin:/bin:/usr/local/bin:/usr/local/sbin",
    command => "ed $ntp_postinst 2>/dev/null <<-EOF
g/addgroup/
d
g/adduser/
d
w
q
EOF
",
    notify => Package['ntp'],
    require => Package['ed'],
    onlyif => "grep adduser $ntp_postinst",
    logoutput => true,
    }
package { 'ntp':
    ensure => present,
    }

Kromě metaparametrů notify, require, jimiž se řídí pořadí spouštění dalších operací, obsahuje příklad i další parametry specifické pro typ exec.