PDA

View Full Version : Path di installazione software


Michele81
02-12-2004, 13:38
Ciao!

A causa di un comando root un po' troppo avventato (rm -rf etc/* ....solo che non ero in /usr/local, ma in / :rolleyes: ) ho dovuto reinstallare linux (non tutto il male vien x nuocere: colgo così l'occasione per passare da archlinux a slack).

Con Slack xò voglio cambiare l'approccio all'installazione: voglio innanzitutto installare tutti i programmi in /usr/local, e poi per ogni programma creare una propria dir (/usr/local/<nomesoftware>).
Con installpkg nulla di più facile: basta utilizzare "-root <pathinstallazione>" ed il gioco è fatto!

Solo che xò mi è venuta in mente una domanda: come fa il software a trovare il path delle proprie librerie, dei propri file di config, ecc se non sono presenti nella $PATH in /etc/profile?

Esempio: io ho installato amule in /usr/local/amule/
dentro ho le varie cartelle usr, opt, var con le relative sottodirectory e file.
Come fa amule a sapere dei sui file contenuti in queste sottodir se come PATH in /etc/profile ho solo PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games"?

Spero di essermi spiegato ;)
Thx a l8
Michele81

ilsensine
02-12-2004, 13:51
Se lo script di installazione è ben fatto, è in grado di linkare il programma in modo da trovare le proprie librerie nel path in cui è stato installato (tecnicamente: -Wl,--rpath= in fase di linking).

Altrimenti devi usare le solite tecniche -- ld.so.conf, LD_LIBRARY_PATH, ...

ilsensine
02-12-2004, 13:56
Uff non avevo letto bene la domanda (la risposta precedente è comunque in qualche modo legata) -- per tutti gli altri file, viene fatto con l'ausilio degli script di compilazione ("definiscono" una macro contenente il prefisso di installazione, che viene poi utilizzata all'interno del codice del programma)

Michele81
02-12-2004, 19:22
Grazie ilsensine per la spiegazione! :)

La domanda sorge spontanea: se il path nn è presente nella $PATH di sistema e in ld.so,conf, dov'è che viene scritto (dai programmi come installpkg o il semplice make install) il percorso del software?

Giusto per curiosità...nulla di più! :oink:

Grazie ancora!
Michele81

ilsensine
02-12-2004, 22:11
Innanzitutto $PATH non serve al programma, serve alla shell per trovare l'eseguibile senza obbligarti a digitare il percorso completo.
Al programma servono i suoi file di configurazione (che "sa" dove sono, in quanto "conosce" il --prefix che hai passato a configure). Al linker serve sapere dove sono le librerie necessarie per lanciare il programma (deve poterle trovare nei percorsi standard, nei percorsi indicati da ld.so.conf, nel percorso LD_LIBRARY_PATH, oppure nell'eseguibile stesso, se è stato linkato con -Wl,--rpath=<path>)