<Precedenti | Contenuti | Succ.>
6.3.2.3. Gestione dei pacchetti in stile link simbolico
Questa è una variazione della precedente tecnica di gestione dei pacchetti. Ogni pacchetto viene installato in modo simile allo schema precedente. Ma invece di creare il collegamento simbolico, ogni file è collegato simbolicamente nel / usr gerarchia. Ciò elimina la necessità di espandere le variabili di ambiente. Sebbene i collegamenti simbolici possano essere creati dall'utente per automatizzare la creazione, molti gestori di pacchetti sono stati scritti utilizzando questo approccio. Alcuni dei più popolari includono Stow, Epkg, Graft e Depot.
L'installazione deve essere simulata, in modo che il pacchetto pensi di essere installato in / usr anche se in realtà è installato nel /usr/confezione gerarchia. L'installazione in questo modo non è solitamente un compito banale. Ad esempio, considera che stai installando un pacchetto libfoo-1.1. Le seguenti istruzioni potrebbero non installare correttamente il pacchetto:
./configure --prefix=/usr/pkg/libfoo/1.1 make
make install
./configure --prefix=/usr/pkg/libfoo/1.1 make
make install
L'installazione funzionerà, ma i pacchetti dipendenti potrebbero non essere collegati a libfoo come ci si aspetterebbe. Se compili un pacchetto che si collega a libfoo, potresti notare che è collegato a /usr/pkg/libfoo/1.1/lib/libfoo.so. 1 invece di /usr/lib/libfoo.so.1 come ti aspetteresti. L'approccio corretto consiste nell'utilizzare il DEST.DIR strategia per falsificare l'installazione del pacchetto. Questo approccio funziona come segue:
./configure --prefix=/usr make
make DESTDIR=/usr/pkg/libfoo/1.1 install
./configure --prefix=/usr make
make DESTDIR=/usr/pkg/libfoo/1.1 install
La maggior parte dei pacchetti supporta questo approccio, ma ce ne sono alcuni che non lo fanno. Per i pacchetti non conformi, potresti dover installare manualmente il pacchetto oppure potresti scoprire che è più semplice installare alcuni pacchetti problematici in /optare.