• dLog

  • A un passo dalla fine e ritorno con macports

26 April 2008

A un passo dalla fine e ritorno con macports

Il Mac OSX, per me, è stata una svolta.

OSX

Una delle cose che più mi fa comodo è il fatto che posso installare, nativamente (senza dual boot o macchine virtuali), l’ambiente di sviluppo per applicazioni web che di solito uso sui server. Ossia, apache2, mysql5 e php5.
Per fare questo uso Macports (si chiamava Darwinports fino a qualche tempo fa).
Si tratta di un package manager che consente di installare, in parallelo alle librerie e alle applicazioni già presenti sul Mac OSX, tutta la serie di strumenti GPL a disposizione sotto Linux.

Sostanzialmente, con una serie di comandi come

sudo port install mysql5 +server
sudo port install apache2
sudo port install php5 +apache2 +mysql5 +pear +readline

Vi ritrovate, dopo tutto il tempo necessario alla compilazione, tutto installato e funzionante sulla macchina.
(Prendete tutto col beneficio di inventario, è una storia, non un tutorial).

Bene, l’altro giorno scopro che un pezzo di applicazione ha smesso di funzionare. Ossia, sul mio Mac non funziona più, mentre sui server in produzione è tutto a posto.

Indagando scopro che si tratta di un problema con la libxml2 (una libreria Gnome che serve per lavorare sull’XML). Il Mac usa la sua, compilata nativamente, e si trova in /usr/lib/, Macports installa la sua, in /opt/local/lib.
In qualche modo che non sto a spiegare (ma che se interessa è descritto qui), le due librerie non sembrano granché in grado di funzionare bene.

Allora, ieri sera, in preda a una follia smanettona vado a rinominare la libreria nativa, in /usr/lib/libxml2.2.dylib, chiamandola libxml2.2.dylib.old, sperando che non trovando quella nativa, le applicazioni vadano a cercare quella installata da Macports.

Improvvisamente tutte le applicazioni smettono di funzionare. Ossia, no, non smettono, ma non si apre più nulla.
Suppongo che dato che i file di configurazione su Mac sono in XML (i .plist) tutte le applicazioni usano questa libreria in fase di avvio.

Con il terminale ancora aperto, provo a ripristinare il nome originale della libreria, ma niente, dopo un comando sudo, il terminale va in crash. In poco tempo tutti i terminali che ho aperto crashano. Il finder non mi permette di rinominare la libreria, non ho i permessi.
Sono chiuso fuori.

Riavvio.

Grosso errore. Non parte niente. Rotellina su sfondo grigio. Sono le 11 di sera e dovevo solo lavorare all’import di certi dati, con urgenza, non stare a un passo dal portare il mac in assistenza e non rivederlo per chissà quanti giorni.

Con calma prendo un altro portatile e navigo, cercando come entrare nel Mac.
Tenendo premuti dei tasti in fase di avvio, si possono fare delle cose interessanti.
Ad esempio:

  • C - avvio dal CD o DVD
  • Command V - avvio in modo Verbose
  • Command S - avvio in modo Single User
  • Tasto del MousePad - espelle un eventuale disco rimasto dentro

Provo a far partire il DVD di Leopard, tra le opzioni non c’è “Ripristina un sistema incasinato”, ma solo reinstalla tutto, quindi lascio perdere.

Provo il Single User Mode. Appare subito la shell e sono dentro come root. Troppo facile.
Provo subito a rinominare la libreria maledetta, ma il file-system è montato in sola lettura.

Ancora cerco su Internet (chiave: mac single user read only) e arrivo qui.

Quindi

/sbin/fsck -y
/sbin/mount -wu /

e sono root sul mio file system in scrittura. A questo punto:

  • Rinomino la libreria, riavvio e tutto funziona
  • Chiunque può sedersi di fronte al mio Mac può cambiare la password in 40 secondi, anche io

Confortato da questi risultati, considero le due ore passate sul baratro piuttosto interessanti …

Aggiornamento
Il metodo descritto nell’articolo linkato per ottenere la password non funziona più. L’exploit è stato bloccato.

postato in Tecnologie | Nessun Commento