Come dovrei installare il software dal sorgente in modo da poter rendere la mia configurazione gestibile e riproducibile?

1

Domanda correlata su Unix / Linux: Come dovrei installare il software dal sorgente in modo da poter rendere la mia configurazione gestibile e riproducibile? Tuttavia, ho ulteriormente adattato questa domanda all'ecosistema Mac OS X.

Lavoro con molti software scientifici su Mac OS X (attualmente 10.7, ma anche 10.6). Al fine di massimizzare le prestazioni e accedere alle funzionalità più recenti, è spesso preferibile compilare il software dal sorgente.

Tuttavia, farlo è disordinato e può portare a problemi di configurazione. Da quando ho sviluppato anche in Linux, ho esaminato tutti i suggerimenti in Unix & Domanda Linux "Come compilare e installare programmi dalla fonte" e Unix & Domanda su Linux Dove devo inserire il software che compilo dalla fonte? per qualche consiglio. Queste domande sono un buon punto di partenza, ma non mi è chiaro come sia possibile gestire facilmente le dipendenze e la configurazione. Ad esempio, se costruisco il ramo di sviluppo di NumPy dall'origine, come devo rilevare, gestire e risolvere le dipendenze in modo che possa gestire la mia configurazione? Un gestore di pacchetti come MacPorts, Homebrew o Fink è un'opzione, ma se seguo questa strada per gestire la mia configurazione, come faccio a compilare i pacchetti in modo che possa usare quei gestori di pacchetti per gestire le dipendenze? C'è qualcosa di simile a qualcosa come checkinstall per questi gestori di pacchetti? Il mio obiettivo qui è rendere l'installazione e la disinstallazione del software relativamente indolore senza ingombrare la mia configurazione.

Mi piacerebbe anche rendere la mia configurazione riproducibile. Con ciò intendo che mi piacerebbe impostare un flusso di lavoro per l'installazione del software sulla mia macchina in modo da poterlo ripetere esattamente su una nuova installazione del sistema operativo. Esiste una best practice per questo? Quando si tratta di pacchetti standard in un gestore di pacchetti Linux, il metodo più semplice per ripetere un'installazione software consiste nel creare uno script contenente il apt-get install <package> appropriato (o equivalenti). Tuttavia, durante l'installazione del software dal sorgente, ho potuto vedere questo metodo molto complicato. C'è un modo migliore?

Inoltre, per Mac OS X, molte applicazioni sono installate copiando un file *.app in /Applications o facendo doppio clic su un file *.pkg . Posso installare questi da una riga di comando e scriptare l'installazione di questi pacchetti? Inoltre, c'è un buon modo per disinstallare questi pacchetti?

    
posta Geoff Oxberry 11.06.2012 - 02:43
fonte

2 risposte

2

Penso che un gestore di pacchetti farà la maggior parte di ciò che ti serve. Mostrerò i macport come quello che conosco, ma gli altri hanno funzionalità simili.

Se usi i pacchetti standard, ovvero quelli aggiornati che sono stati pacchettizzati, macports farà tutte le dipendenze per te. per esempio. costruire scipy sa che deve prima costruire Numpy e lo farà. Puoi anche ninstallare facilmente una porta - macports ti dirà se qualche porta dipende da essa. Se una porta è corazzata, Macport aggiornerà le porte a seconda di esso.

Puoi anche modificare manualmente la porta per gestire le versioni di sviluppo di numpy, ad esempio. Dovrai produrre una copia del file della porta e modificare quella che vedi guida macports . Il minimo sarebbe cambiare la versione e le regole per il download in modo da ottenere un codice diverso ma includere molte patch per le funzioni specifiche di OSX.

Puoi tenere traccia di ciò che hai installato da port list (anche chiamate più avanzate per ridurre al minimo il numero di comandi necessari. Le modifiche apportate saranno nel tuo repository Portfile locale di cui sarà necessario eseguire il backup e un piccola modifica alla configurazione di macports defualt effettuata.

    
risposta data 11.06.2012 - 11:08
fonte
1

Sembra che ci siano davvero due domande qui:

  • Come configurare automaticamente il codice sorgente distribuito.
  • Come installare pacchetti di applicazioni precompilati dalla riga di comando.

Per la distribuzione dei sorgenti, sembra che GNU autoconf sia quello che stai cercando.

Per i pacchetti precompilati .app , l'installazione da riga di comando è semplice come

cp -R MyApp.app /Applications/

Questo presuppone 10.5 o successivo, in cui gli strumenti della riga di comando sono pienamente consapevoli di OS X.

Per i pacchetti precompilati .pkg , l'installazione da riga di comando è

installer -package MyApp.pkg -target /

Entrambi i comandi precedenti devono essere preceduti da sudo se l'installazione richiede i privilegi di amministratore. In caso di dubbio, supponiamo che:

sudo installer -package MyApp.pkg -target /

Suggerimento per l'installazione di bonus: puoi trasformare qualsiasi cartella in un .dmg come questo:

hdiutil create -ov -format UDBZ -noscrub -srcfolder MyAppsFolder/ MyAppImage.dmg

Includi un link simbolico a /Applications/ in quella cartella, accanto al tuo .app e gli utenti finali possono trascinare e rilasciare.

Suggerimento bonus avanzato: Cerca in PAM l'utilità PERL Mac :: Finder :: DSStore. Ciò ti consente di modificare il file .DS_Store nella cartella dei modelli di .dmg in modo da poter posizionare con precisione icone e grafici.

    
risposta data 11.06.2012 - 03:24
fonte

Leggi altre domande sui tag