make distcheck -> Error – install: cannot change ownership (italiano)

[english version]
Lavorando con software GNU, nel 90% dei casi ti troverai ad utilizzare GNU Autoconf e GNU Automake per gestire il processo di compilazione. In alcuni casi potresti dover cambiare il proprietario dei file da installare. Se succede, la soluzione è aggiungere un install hook al file Makefile.am ed eseguire install in questo modo:

fooDATA_INSTALL = ${INSTALL} -g foogroup -o foouser

Questo è molto comodo quando installi i dati come utente root ma può causare un errore quando testi i pacchetti come utente normale chiamando make distcheck.
Il risultato del comando precedente sarà un errore dovuto al tentativo di cambiare il proprietario ai file installati senza i permessi di root:
install: cannot change ownership

Cosa puoi fare per controllare i tuoi pacchetti?

GNU Automake and GNU Autoconf ti vengono in aiuto. GNU Automake distribuisce il file install-sh che può sostituire il programma install del pacchetto GNU Coreutils. Guardando nelle istruzioni d’uso di questo script infatti si può notare che ci sono alcune variabili d’ambiente che possono essere specificate per cambiare il comportamento dello script. In particolare noi ci concentreremo su due di queste: CHGRPPROG and CHOWNPROG. Impostando queste due variabili in modo che si riferiscano ad un comando che non fallisce per l’utente normale, come ad esempio “echo”, è possibile chiamare install-sh -g foogroup -o foouser senza alcun errore (e senza però modificare realmente il proprietario dei file).

Come dire a Makefile.am che si intende usare install-sh invece di install?

Utilizzando semplicemente un’altra variabile d’ambiente: INSTALL. Se esporti INSTALL="path/to/install-sh" e lanci configure nel file Makefile.am, verrà utilizzato install-sh invece di install. A questo punto potrai lanciare make install da utente root come se usassi il programma di installazione ed inoltre potrai lanciare make distcheck da utente normale per testare i pacchetti.
L’importante è ricordarsi di esportare CHGRPPROG=echo e CHOWNPROG=echo prima di fare i test e di riportarli ai valori originari una volta terminato.
Buon lavoro con i vostri pacchetti!