Siete qui:

  1. Home
  2. Blog
  3. Installare gpac per utilizzare MP4Box in ubuntu intrepid

Installare gpac per utilizzare MP4Box in ubuntu intrepid

Alessandro Scoscia • 17 febbraio 2009 16:08

Utilizzo spesso la mia postazione linux come box su cui effettuare coding via ffmpeg ed utilizzo MP4Box (uno dei comandi del pacchetto gpac) per riassemblare clip o mixare video ed audio da riga di comando.

Per quanto ho potuto sperimentare, in ubuntu ogni qual volta aggiorni il sistema o metta in piedi una nuova postazione le applicazioni "multimedia" presentano qualche "stranezza". Anche sulla nuova postazione Intrepid, che ho appena finito di configurare, ce ne sono delle nuove.

La prima brutta sorpresa che ho rilevato è che i problemi di versioning che affliggevano ffmpeg e le librerie libfaad sono rimasti tutti e quindi sono dovuto ricorrere all'istallazione delle vecchie versioni di ffmpeg (come avevo già indicato qui).

Ma questa volta mi sono imbattuto anche in un altro problema. In ubuntu 8.10 (nome in codice intrepid) c'è un bug che affligge il pacchetto gpac. Il problema è stato segnalato in launchpad già da mesi ma, a parte qualche workaround, non è stato corretto.

In pratica, ogni qual volta venga lanciato un encoding che richieda le librerie per l'audio in formato aac, l'applicazione si arresta per un buffer overflow. Mi sono letto molta documentazione e sono stati individuati due workaround:

  • installare le librerie per la versione hardy (con tutti gli eventuali problemi di compatibilità in intrepid)
  • ricompilare senza i nuovi controlli sull'accesso alla memoria introdotti in Intrepid e ripacchettizzare da sorgente.

Dal punto di vista pratico una vera disdetta ma, come al solito, è in questi casi che si apprende di più.

Ho deciso di mantenere l'installazione più pulita possibile ed ho quindi optato per partire dai sorgenti ma certo che, occupandomi sempre più di sicurezza informatica, ricompilare per eliminare le check sui buffer overflow è stato un duro colpo!

La prima operazione da fare è rimuovere l'eventuale il pacchetto gpac precedentemente installato:

apt-get remove gpac

A questo punto ho installato tutte le librerie da cui gpac dipende:

apt-get build-dep gpac

Quindi ho scaricato i sorgenti di gpac:

apt-get source gpac

Nella gerarchia di directory del sorgente c'è il file di configurazione debian/rules. In questo file devono essere modificate le opzioni di compilazione. Ho aperto il file con nano ed ho modificato la riga:

CFLAGS = -Wall -g

con

CFLAGS = -01 -D_FORTIFY_SOURCE=0 -Wall -g

Il parametro -01 permette di compilare in modalità "ottimizzata". Il parametro -D_FORTIFY_SOURCE=0 consente di non utilizzare un nuovo metodo di monitoraggio a tempo di compilazione e a run-time dell'accesso alla memoria.

Attenzione: questa opzione riporta i livelli di sicurezza dell'applicazione a quelli delle versioni precedenti poiché disabilita il monitoraggio introdotto proprio in Ubuntu 8.10

A questo punto ho ripacchettizzato i sorgenti, ricompilati con le nuove flag ed ottenuto il nuovo .deb con il comando (da eseguire nel directory contenente i files sorgenti):

sudo debuild -us -uc -b

L'installazione dei pacchetti appena creati ha automagicamente risolto il problema:

cd ..; dpkg -i *.deb

Commenti

Non ci sono commenti

Inserisci un commento

I campi contrassegnati con " * " sono obbligatori




Creative Commons License Valid XHTML 1.1 Valid CSS [Valid RSS] Powered by SmartControl