Opzioni di base della linea di comando per LilyPond

Sono contemplate le seguenti opzioni.

-d, --define-default=variabile[=valore]

Si veda Opzioni avanzate della linea di comando per lilypond.

-e, --evaluate=espressione

Valuta l’espressione di Scheme prima di analizzare qualsiasi file .ly. Si possono specificare varie opzioni -e; saranno analizzate in modo sequenziale.

L’espressione viene analizzata nel modulo guile-user, dunque se vuoi usare una definizione come (define-public a 42) in espressione, usa

lilypond -e '(define-public a 42)'

nella linea di comando, e includi

#(use-modules (guile-user))

in cima al file .ly.

Nota: Gli utenti Windows devono usare i doppi apici invece dei singoli apici.

-E, --eps

Genera file EPS.

Questa opzione è simile a -dseparate-page-formats=ps.

-f, --format=formato

Formato del (principale) file di output. I valori possibili di formato sono ps, pdf, png o svg.

Esempio: lilypond -fpng file.ly

Internamente SVG utilizza un backend specifico e dunque non si può ottenere nella stessa esecuzione usata per altri formati; -fsvg o --svg sono in realtà equivalenti all’opzione -dbackend=svg. Vedi Opzioni avanzate della linea di comando per lilypond.

-h, --help

Mostra una sintesi dell’utilizzo.

-H, --header=CAMPO

Estrae un campo dell’intestazione nel file NOME.CAMPO.

Per esempio, supponiamo di avere un file di input pippo.ly contenente

\header { title = "pluto" }
\score { c1 }

Il comando

lilypond -H title pippo.ly

crea un file di testo semplice pippo.title contenente la stringa pluto.

-i, --init=file

Imposta il file di inizializzazione su file (predefinito: init.ly).

-I, --include=directory

Aggiunge directory al percorso di ricerca per i file di input con percorsi relativi. Per impostazione predefinita, cerca solo nella directory di lavoro corrente.

È possibile assegnare più opzioni -I. La ricerca inizia nella directory di lavoro corrente, e se il file da includere non viene trovato la ricerca continua nella directory indicata dalla prima opzione -I, poi nella directory della seconda opzione -I e così via.

Nota: L’uso del carattere tilde (~) con l’opzione -I potrebbe causare risultati inaspettati in alcune shell.

Gli utenti Windows devono aggiungere una barra obliqua al termine del percorso della directory.

-j, --jail=utente,gruppo,gabbia,directory

[Questa opzione è disponibile solo per i sistemi operativi che supportano la funzionalità chroot. Windows non la supporta.]

Esegue lilypond in una gabbia chroot.

L’opzione --jail fornisce un’alternativa più flessibile a --safe quando la formattazione di LilyPond è messa a disposizione attraverso un server web o quando LilyPond esegue sorgenti provenienti dall’esterno (si veda Opzioni avanzate della linea di comando per lilypond).

L’opzione --jail modifica la radice di lilypond in gabbia appena prima di iniziare il vero processo di compilazione. L’utente e il gruppo vengono poi modificati per corrispondere a quelli forniti, e la directory corrente viene spostata in directory. Questa configurazione garantisce che non sia possibile (almeno in teoria) uscire dalla gabbia. Si noti che perché --jail funzioni lilypond deve essere eseguito come root; di solito questo si fa in modo sicuro col comando sudo.

Configurare una gabbia è una questione un po’ delicata, perché bisogna essere sicuri che LilyPond possa trovare tutto quello di cui ha bisogno per compilare il sorgente dentro la gabbia. Una configurazione tipica comprende i seguenti elementi:

Impostare un filesystem distinto

Si dovrebbe creare un filesystem separato LilyPond, così che possa essere montato con opzioni di sicurezza come noexec, nodev, e nosuid. In questo modo è impossibile lanciare degli eseguibili o scrivere su un dispositivo direttamente da LilyPond. Se non si vuole creare una partizione separata, si può creare un file di dimensioni ragionevoli e usarlo per montare un dispositivo di loop. Un filesystem separato garantisce inoltre che LilyPond non possa scrivere su uno spazio maggiore di quanto permesso.

Impostare un altro utente

Per eseguire LilyPond in una gabbia si dovrebbe usare un altro utente e gruppo (ad esempio, lily/lily) con pochi privilegi. Ci dovrebbe essere una sola directory scrivibile da questo utente, che dovrebbe essere passata in dir.

Preparare la gabbia

LilyPond ha bisogno di leggere alcuni file quando viene lanciato. Tutti questi file devono essere copiati nella gabbia, sotto lo stesso percorso in cui appaiono nel vero filesystem principale. Si deve copiare l’intero contenuto dell’installazione LilyPond (ad esempio, /usr/share/lilypond).

Se c’è un problema, il modo più semplice per individuarlo è lanciare LilyPond usando strace, che permette di scoprire quali file mancano.

Eseguire LilyPond

In una gabbia montata con noexec è impossibile eseguire qualsiasi programma esterno. Dunque LilyPond deve essere eseguito con un backend che non richieda tale programma. Come è già stato detto, deve essere eseguito con privilegi di superutente (che ovviamente perde immediatamente), possibilmente con l’uso di sudo. È una buona idea limitare il numero di secondi di tempo della CPU che LilyPond può usare (ad esempio con ulimit -t), e, se il sistema operativo lo permette, la quantità di memoria che può essere allocata. Si veda anche LilyPond in una gabbia chroot.

-l, --loglevel=livello

Imposta la verbosità dell’output della console su livello. I valori possibili sono:

NONE

Nessun output, nemmeno i messaggi di errore.

ERROR

Solo i messaggi di errore, niente avvisi o messaggi di elaborazione.

WARN

Avvisi e messaggi di errore, nessun messaggio di elaborazione.

BASIC

Messaggi di elaborazione di base (riuscita), avvisi e errori.

PROGRESS

Tutti i messaggi di elaborazione, avvisi e errori.

INFO

Messaggi di elaborazione, avvisi, errori e ulteriori informazioni di esecuzione. Questo è il valore predefinito.

DEBUG

Tutti i messaggi possibili, incluso l’output verboso di debug.

-o, --output=file
-o, --output=cartella

Imposta il file di output predefinito file oppure, se una cartella con quel nome esiste già, dirige l’output in cartella, prendendo il nome del file dal file di input. In entrambi i casi viene aggiunto il suffisso appropriato (ad esempio .pdf per il PDF).

-O, --pspdfopt

Imposta l’ottimizzazione dell’output PS/PDF su chiave. I valori possibili sono:

size

Genera un documento PS/EPS/PDF molto piccolo. Questo è il valore predefinito.

L’uso di questo valore è equivalente a impostare le opzioni a linea di comando Scheme di LilyPond -dmusic-font-encodings='#f' e -dgs-never-embed-fonts='#f'.

TeX

Produce file ottimizzati per l’inclusione in documenti pdfTeX, LuaTeX o XeTeX.

L’uso di questo valore è equivalente a impostare le opzioni a linea di comando Scheme di LilyPond -dmusic-font-encodings='#t' e -dgs-never-embed-fonts='#f'.

TeX-GS

Se si desidera includere più di un PDF generato da LilyPond in un documento TeX, usare questa opzione e rielaborare il PDF generato da TeX con Ghostscript.

L’uso di questo valore è equivalente a impostare le opzioni a linea di comando Scheme di LilyPond -dmusic-font-encodings='#t' e -dgs-never-embed-fonts='#t'.

--ps

Questa opzione è equivalente a -fps.

--png

Genera immagini di ogni pagina in formato PNG. Questa opzione è equivalente a -fpng.

La risoluzione dell’immagine può essere impostata in N DPI con

-dresolution=N
--pdf

Genera PDF. Questa è l’opzione predefinita ed è equivalente a -fpdf.

-s, --silent Non mostra il progresso, ma solo i messaggi di errore. È equivalente a -lERROR.

--svg

Genera file SVG per ciascuna pagina. Questa opzione è equivalente a -fsvg.

-v, --version

Mostra informazioni sulla versione.

-V, --verbose

Aumenta la prolissità: mostra i percorsi completi di tutti i file letti, dà informazioni sui tempi, etc. È equivalente a -lDEBUG.

-w, --warranty

Mostra la garanzia con cui viene distribuito GNU LilyPond. (Distribuito con NESSUNA GARANZIA!)


LilyPond: manuale d’uso del programma v2.25.21 (ramo di sviluppo).