Nicola D'Agostino (.net) - Articoli, traduzioni, grafica, web

Hacking through OS X II – Ottimizzare OS X

Pulizia del disco, miglioramento delle prestazioni: viaggio tra falsi miti e veri problemi.

di Nicola D’Agostino

Come abbiamo visto nell’articolo scorso OSX è un mix molto particolare di novità, solide basi UNIX e della tradizione dei precedenti Mac OS. Quando si tratta di tenere "sotto controllo" il sistema e fare un po’ di pulizia gli utenti hanno a che fare con una situazione spesso complessa ed è necessario destreggiarsi tra potenziali problemi, operazioni utili, e altre un po’ meno.

E’ tempo di… fare pulizie.

Un caso in cui Darwin/OS X si dimostra in tutto e per tutto un OS di tipo UNIX è quello di programmi che vengono eseguiti automaticamente dal sistema intervalli regolari, ad esempio di notte, quando il carico di lavoro della macchina è minore. Questi programmi vengono supervisionati e lanciati dal comando ‘cron’ e solitamente indicati nel file ‘/etc/crontab’.

Un buon esempio sono i tre script:


/etc/daily
/etc/weekly
/etc/monthly

la cui esecuzione è eseguita con cadenza giornaliera, settimanale e mensile, rispettivamente.
Questi svolgono una moltitudine di compiti utili: cancellazione di vecchi file temporanei, generazione di statistiche, ricostruzione dei database, copie di backup ed altro ancora.

Il problema è l’orario di esecuzione che è in genere notturno. Laddove su un server questo non rappresenta un problema (è acceso 24 ore su 24), lo è invece sulle macchine desktop, spente o messe in stop (sleep) alla fine della giornata lavorativa.
La soluzione è far eseguire manualmente i comandi via terminale. Digitando


sudo /etc/daily

seguito dal tasto invio verrà chiesta la password da amministratore e verrˆ eseguita la procedura. Lo stesso va fatto con


sudo /etc/weekly

e infine con

sudo /etc/monthly

Alternativamente si possono usare un tool multiuso come Cocktail o meglio ancora una delle numerose utility create ad hoc come anacron (disponibile tramite il gestore di pacchetti software Unix Fink) che provvederanno ad eseguire automaticamente gli script alla prima occasione, solitamente l’avvio.

Cocktail

Eliminare i file .DS_store: la storia si ripete

Non è solo la parte UNIX a necessitare di pulizie: anche il lato che attiene a funzioni proprie del Mac necessita di qualche cura, sopratutto quando si scambiano file con il mondo Windows o Linux, e precisamente il modo in cui OSX gestisce tutte le informazioni aggiuntive sui file nelle cartelle.

Nell’articolo Caccia ai Desktop file abbiamo parlato di particolari file di sistema nascosti in MacOS, che, nascosti, contengono informazioni utili alla macchina ma potenzialmente molto pericolose per la privacy quando fatte girare, ad esempio su un CD masterizzato, fuori dal proprio computer Macintosh.
OSX ha invece i file “.DS_Store”, creati dal Finder in ogni directory per "tenere a mente" una serie di informazioni come posizione e dimensioni delle finestre, icone, commenti. Come visto in precedenza il punto davanti al nome serve a rendere invisibile il file, almeno agli utenti comuni.
Tutti gli altri possono usare un "ls -la" da Terminale o, ad esempio, l’utility freeware
Tinker Tool.

Il problema dei file .DS_Store è che ce ne sono a migliaia in tutto il sistema dato che ogni directory ne ha uno e che quando si masterizzano CD, si fa ftp o si scambiano dati con macchine Windows o Linux (ad esempio in una rete mista via Samba) o più semplicemente si riavvia e usa il Mac con OS 8 o 9, i file in questione possono comparire in bella vista.

.Ds_Store

A livello di privacy il problema è meno grave ma comunque è poco carino perché, oltre ad essere uno sgradevole inestetismo, dai .DS_Store file si può ricavare ad esempio un elenco dei file presenti nella directory (ad es. i documenti o i programmi installati), cose che gradiremmo restassero comunque private e confinate entro i limiti del nostro hard disk.

Per l’eliminazione di questi file le soluzioni sono varie e riconducibili a due approcci.
La prima è usare dei programmi ad hoc, come De_DDS,
DS_Store Cleaner,
Clean Up smb mess 1.1 o il costoso (e corredato di pacchiana iconografia) DS_StoreTerminator.

Meglio ancora è impiegare il Terminale e una combinazione di efficaci utility da shell. Digitando:

sudo find /Volumes/nomedeldisco -name .DS_Store -print0 | xargs -0 rm

verranno rimossi tutti i .DS_Store sul disco o partizione "nomedeldisco" (ovviamente da sostituire con il nome del vostro hard disk).
Sotto Mac OS X 10.2 (Jaguar) è possibile usare anche

sudo find /Volumes/nomedeldisco -name .DS_Store -delete

ed altre combinazioni a scelta dei comandi "find", "grep" e "rm".

Nota bene: i programmi e i comandi da Terminale vanno eseguiti solo sul disco o sulla cartella specifica che si vuole condividere o copiare. Farlo altrove è inutile e anzi resetterebbe molti settaggi utili. Si raccomanda inoltre che il disco o la cartella in questione non siano aperti nel Finder nel momento della ripulitura nŽ che vengano riaperti dopo perché il Finder ricreerà al volo il file .DS_Store e saremmo punto e a capo.

Il "mito" dell’update prebinding

Sotto OS X esiste un meccanismo chiamato "prebinding". Molti avranno notato che quando si installano certi programmi (succede spesso con gli aggiornamenti Apple) c’è una fase alla fine denominata "Optimizing System" o qualcosa del genere. Si tratta appunto del "prebinding" che serve ad accellerare l’apertura dei programmi installati.

In Mac OS X i programmi non sono composti da un unico file ma da numerosi pezzi sparsi "in giro" che vengono cercati, usati e caricati all’occorrenza, tra cui le librerie, alcune delle quali fornite da Apple stessa.
Le librerie possono venire aggiornate aggiungendo nuove funzioni, motivo per cui si usa questa tecnica, detta "dynamic linking" (invece del "direct linking" che crea un unico amalgama inscindibile) che tiene le librerie slegate dai programmi veri e propri.
La modularità ha però un costo in termini di performance e allora il prebinding si incarica di "fissare" questo collegamento rendendo il caricamento delle librerie più rapido. Per questo motivo si è diffusa l’abitudine tra gli utenti di rifare ogni tanto (ad es. dopo aver installato nuovi programmi) il prebinding "a mano" per rendere il sistema, si dice,
più efficiente.
Il comando usato è:

update_prebinding -root

Altri comandi relativi al prebinding ma più specifici sono "fix_prebinding" e "redo_prebinding" di cui si possono avere le spiegazioni grazie al manuale in linea scrivendo nel Terminale:

man nomecomando

Per chi invece preferisce evitare i comandi da shell ci sono diversi programmi che effettuano questa (cosiddetta) ottimizzazione, a partire dal già citato Cocktail. Tra gli altri ci sono,
SpeedMeUp Pro, Mox Optimize e Maintain1.

Ma torniamo al prebinding: negli ultimi anni, come dimostra anche la pletora di utility scritte all’uopo, si è diffusa la convinzione che questa operazione aiutasse notevolmente OS X, che era nelle vecchie versioni tutt’altro che "scattante".
In realtà non solo il prebinding ha un’incidenza molto limitata sulla reattività del sistema ma, dalla versione 10.2 in poi, non è più necessario in quanto è l’OS stesso ad eseguirlo all’installazione di aggiornamenti e programmi.
Attenzione quindi a non cadere nell’effetto placebo e usare a tutti i costi questa tecnica (che anzi alla lunga pare possa mettere a dura prova il disco fisso) per cercare di spremere di più il proprio Mac.

Copiare file Mac "classici" senza perderne l’integrità.

Anche se sotto OS X c’è un sistema BSD, il filesystem consigliato (fortemente consigliato) per l’uso è il classico HFS+ che mantiene l’integrità e la coesione di molti file Mac tuttora composti da due parti strettamente interconnesse: data fork e resource fork.
Lo stesso vale nel caso di copia o di archiviazione e compressione dei file mac "classici": un semplice trascinamento su un volume formattato UFS o un disco Windows o il comando "tar" da Terminale rovinerebbe irrimediabilmente vecchi font, programmi e suoni e farebbe perdere informazioni preziose ad immagini e altri documenti.

Per ovviare è necessario usare strumenti specifici: uno di questi è il noto programma di compressione StuffIt, che nella versione completa (quella a pagamento) per OS X funziona addirittura anche da linea di comando.
Altre soluzioni sono copiare o comprimere usando da Terminale l’utility "ditto" con impostata l’opzione apposita "-rsrcFork" (così da usare il formato AppleDouble su filesystem che non supportano i resource fork)

ditto -rsrcFork nomedelfile destinazione

oppure possiamo optare per altre versioni modificate da Apple dei comandi da shell. Invece di "cp" e "mv" bisogna usare "CpMac" e "MvMac" e invece dell’archiviatore "tar" si usa "hfstar".

Un’ultima nota: molte di queste funzioni sono disponibili solo installando i "Developer Tools", preziosissima fonte di informazioni e applicativi per lo sviluppo e sopratutto per lo smanettamento.
I Developer Tools sono allegati come CD addizionale con OS X o disponibili da scaricare gratuitamente sul
sito Apple previa registrazione.

Approfondimenti:

Mac OS X for Unix Geeks
Jepson B., Rothman e., O’Reilly, 2003, ISBN 0-596-00356-0

Prebinding Explained
radio.weblogs.com/0100490/stories/2002/08/24/prebindingExplained.html

Apple Developer Connection
http://developer.apple.com/

Una versione di questo articolo è stata pubblicata su "Hacker Journal" n. 25 del 08/05/2003