Úprava postinstalačního skriptu

Z DCEwiki
Verze z 11. 2. 2014, 18:29, kterou vytvořil Keny (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání

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.