Domanda

Un giorno un insegnante di amministratore di sistema mi ha detto che avrei dovuto imparare a usare " make " perché potrei usarlo per molte altre cose che innescano solo complimenti.

Non ho mai avuto la possibilità di parlarne più a lungo. Hai qualche buon esempio?

Come bonus, questo strumento non è deprecato e quali sono le alternative moderne (a scopo di compilazione e altre)?

È stato utile?

Soluzione

Make può essere utilizzato per eseguire tutti i comandi che si desidera eseguire. È utilizzato al meglio per attività che richiedono il controllo delle dipendenze, ma non vi è alcun motivo per cui non si possa usare make per controllare la posta elettronica, riavviare i server, eseguire backup o altro.

Ant, NAnt e msbuild sono presumibilmente le alternative moderne, ma la vecchia generazione è ancora ampiamente utilizzata in ambienti che non usano Java o .NET.

Altri suggerimenti

Una cosa eccellente che può essere usata oltre alla compilazione è LaTeX. Se stai facendo un lavoro serio con LaTeX, troverai molto utile a causa della necessità di reinterpretare i file .tex più volte quando usi BibTex o sommari.

Make non è sicuramente obsoleto. Anche se ci sono diversi modi per fare la stessa cosa (file batch su Windows, script di shell su Linux) rendono il lavoro migliore, IMHO.

  

non è questo strumento deprecato

Cosa ?! No, nemmeno leggermente. Sono su Linux, quindi mi rendo conto di non essere una persona normale, ma lo uso quasi ogni giorno. Sono sicuro che ci sono migliaia di sviluppatori Linux che lo usano ogni giorno.

Ricordo di aver visto un articolo su Slashdot alcuni anni fa descrivendo una tecnica per ottimizzare la sequenza di avvio di Linux usando make .

modifica:

Ecco un articolo di IBM che spiega il principio.

Make esegue un ordinamento topologico , vale a dire che, dato un mucchio di cose, e una serie di requisiti che una cosa deve essere prima di un'altra cosa, trova un modo per ordinare tutte le cose in modo che tutte le esigenze siano soddisfatte. Costruire cose (programmi, documenti, tarball di distribuzione, ecc.) È un uso comune per l'ordinamento topologico, ma ce ne sono altri. Puoi creare un Makefile con una voce per ogni server nel tuo data center, comprese le dipendenze tra i server (NFS, NIS, DNS, ecc.) E fare in modo che ti dica in quale ordine accendere i tuoi computer dopo un'interruzione di corrente, oppure in quale ordine spegnerli prima di un'interruzione di corrente. Puoi usarlo per capire in quale ordine avviare i servizi su un singolo server. Puoi usarlo per capire quale ordine mettere i tuoi vestiti al mattino. Qualsiasi problema in cui è necessario trovare un ordine di un mucchio di cose o attività che soddisfi un insieme di requisiti specifici del modulo A va prima che B sia un potenziale candidato per essere risolto con make.

L'uso più casuale che abbia mai visto è quello di essere usato al posto di bash per gli script di init su BCCD . In realtà ha funzionato decentemente, una volta superato il momento wtf ....

Pensa a make come script di shell con aggiunta oomph.

Bene, sono sicuro che lo strumento UNIX " make " viene ancora usato molto, anche se sta calando nel mondo .Net. E mentre più persone potrebbero usare MSBUILD, Ant, nAnt e altri strumenti al giorno d'oggi, sono essenzialmente solo "make " con una diversa sintassi del file. Il concetto di base è lo stesso.

Rendi gli strumenti utili per tutto ciò che contiene un file di input che viene elaborato in un file di output. Scrivi i tuoi rapporti in MSWord, ma li distribuisci come PDF? - usa make per generare i PDF.

Il file di configurazione cambia tramite crontab, se necessario.

Ho esempi di postfix e di tabelle esterne squid .

Esempio per / etc / postfix / Makefile:

POSTMAP=/usr/sbin/postmap
POSTFIX=/usr/sbin/postfix

HASHES=transport access virtual canonical relocated annoying_senders
BTREES=clients_welcome

HASHES_DB=${HASHES:=.db}
BTREES_DB=${BTREES:=.db}

all: ${BTREES_DB} ${HASHES_DB} aliases.db
    echo \= Done

${HASHES_DB}: %.db: %
    echo . Rebuilding <*>lt; hash...
    ${POSTMAP} <*>lt;

${BTREES_DB}: %.db: %
    echo . Rebuilding <*>lt; btree...
    ${POSTMAP} <*>lt;

aliases.db: aliases
    echo . Rebuilding aliases...
    /usr/bin/newaliases

etc

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top