src_install

Function src_install
Purpose Install a package image to ${D}
Sandbox Enabled
Privilege root
Called for ebuild

Default src_install

src_install()
{
    return
}

Semplice src_install

src_install() {
    make DESTDIR="${D}" install || die "Install failed!"
    dodoc README CHANGES
}

Installazioni semplici

Spesso, specialmente con pacchetti che utilizzano autotools, c'è una indicazione, in Makefile, su dove installare il pacchetto che costituirà in seguito il valore della variabile DESTDIR per installare il pacchetto in una locazione non-root. Se possibile dovrebbe essere utilizzata la seguente forma:

make DESTDIR="${D}" install || die "Install failed"

Nota

In questo caso make dovrebbe essere usato al posto di emake. Molte installazioni non sono progettate per essere parallelizzate.

In alcuni casi questo porterà ad avere qualche cosa di installato in locazioni strane. Se e solo se ci si imbatte in un caso simile, può essere utilizzata la funzione einstall:

einstall || die "Install failed!"

In questi casi è di solito necessario includere istruzioni dodoc aggiuntive per i file README, ChangeLog, etc.

Installazioni leggere

Per alcuni pacchetti che non hanno Makefile e dei quali si deve installare solo un piccolo numero di file, scrivere un'installazione manuale usando cp è l'opzione più semplice. Per esempio, per installare semplicemente dei temi (che non richiedono una compilazione):

dodir /usr/share/foo-styles/
cp -R ${S}/ ${D}/ || die "Install failed!"

Oppure utilizzando una combinazione di insinto e doins (si vedano le ulteriori funzioni correlate nella guida di riferimento alle funzioni di installazione). Il seguente esempio è tratto dall'installazione di sys-fs/udev:

src_install() {
    dobin udevinfo
    dobin udevtest
    into /
    dosbin udev
    dosbin udevd
    dosbin udevsend
    dosbin udevstart
    dosbin extras/scsi_id/scsi_id
    dosbin extras/volume_id/udev_volume_id

    exeinto /etc/udev/scripts
    doexe extras/ide-devfs.sh
    doexe extras/scsi-devfs.sh
    doexe extras/cdsymlinks.sh
    doexe extras/dvb.sh

    insinto /etc/udev
    newins ${FILESDIR}/udev.conf.post_050 udev.conf
    doins extras/cdsymlinks.conf

    # For devfs style layout
    insinto /etc/udev/rules.d/
    newins etc/udev/gentoo/udev.rules 50-udev.rules

    # scsi_id configuration
    insinto /etc
    doins extras/scsi_id/scsi_id.config

    # set up symlinks in /etc/hotplug.d/default
    dodir /etc/hotplug.d/default
    dosym ../../../sbin/udevsend /etc/hotplug.d/default/10-udev.hotplug

    # set up the /etc/dev.d directory tree
    dodir /etc/dev.d/default
    dodir /etc/dev.d/net
    exeinto /etc/dev.d/net
    doexe etc/dev.d/net/hotplug.dev

    doman *.8
    doman extras/scsi_id/scsi_id.8

    dodoc COPYING ChangeLog FAQ HOWTO-udev_for_dev README TODO
    dodoc docs/{overview,udev-OLS2003.pdf,udev_vs_devfs,RFC-dev.d,libsysfs.txt}
    dodoc docs/persistent_naming/* docs/writing_udev_rules/*

    newdoc extras/volume_id/README README_volume_id
}

Questo, naturalmente, è considerevolmente più difficile da gestire di una semplice installazione tramite Makefile.

Altre installazioni

In qualche occasione ci possono essere Makefile che non non permettono di costruire la variabile DESTDIR e un certo numero di file da installare. In questi casi la scelta migliore è fare una patch per il Makefile e contattare gli sviluppatori spiegandone la ragione.