Ho installato Python 3.5 da Software Collections su CentOS 7 minimo. Tutto ha funzionato bene da solo, ma ho visto l'errore di libreria condivisa menzionato in questa domanda quando ho provato a fare funzionare un semplice script CGI:
tail /var/log/httpd/error_log
AH01215: /opt/rh/rh-python35/root/usr/bin/python: error while loading shared libraries: libpython3.5m.so.rh-python35-1.0: cannot open shared object file: No such file or directory
volevo una soluzione permanente systemwide che funziona per tutti gli utenti, in modo che esclusi aggiungere istruzioni di esportazione a file .profile o .bashrc. Ho visto la soluzione here e ho realizzato che in realtà è menzionata in una delle risposte anche qui! In ogni caso, su CentOS 7, questi sono i passi:
vim /etc/ld.so.conf
che sulla mia macchina ha appena avuto:
così ho creato un nuovo file:
vim /etc/ld.so.conf.d/rh-python35.conf
e ha aggiunto:
/opt/rh/rh-python35/root/usr/lib64/
Dopo un riavvio, il seguente ing passo non era necessario, ma per ricostruire manualmente la cache:
sudo ldconfig
Questo è tutto, gli script funzionano bene!
Questa era una soluzione temporanea, che non ha funzionato dopo il riavvio:
sudo ldconfig /opt/rh/rh-python35/root/usr/lib64/ -v
L'opzione -v (verbose) era solo per vedere cosa stava succedendo. Ho visto che lo ha fatto: /opt/rh/rh-python35/root/usr/lib64: libpython3.so.rh-python35 -> libpython3.so.rh-python35 libpython3.5m.so.rh-python35- 1.0 -> libpython3.5m.so.rh-python35-1.0
Questo errore particolare è andato via. Per inciso, ho dovuto chmod all'utente di apache per sbarazzarsi di un errore di autorizzazione dopo.
Nota che ho utilizzato per trovare la directory per la libreria. Si potrebbe anche fare:
sudo yum install mlocate
sudo updatedb
locate libpython3.5m.so.rh-python35-1.0
Che sul mio VM restituisce:
/opt/rh/rh-python35/root/usr/lib64/libpython3.5m.so.rh-python35-1.0
che è il percorso che ho bisogno di dare a ldconfig, come indicato sopra.
C'è un modo per esportare in modo che esso funziona con Eclipse? L'ho aggiunto al mio .profile, tuttavia Eclipse non è in grado di lanciare gdb. (Nota: l'aggiunta a ld.so.conf comunque funziona) – Setheron
quindi ho controllato le variabili di ambiente con cui eclipse è in esecuzione e ha il corretto LD_LIBRARY_PATH. Credo che quando lancia GDB non usi alcuna shell e quindi non ottiene nessuna variabile d'ambiente! L'impostazione di libpython nella configurazione di debug non ha aiutato nè poiché è solo per quando gdb viene effettivamente caricato (ma ho bisogno della lib per gdb da caricare) – Setheron
Puoi eseguire il debug dell'applicazione con successo quando esegui 'gdb' dalla riga di comando e LD_LIBRARY_PATH è impostato correttamente nel terminale? In caso contrario, sarà probabilmente necessario impostare LD_LIBRARY_PATH nel file '.gdbinit'. Vedere questa risposta per maggiori informazioni: http://stackoverflow.com/a/7041845/156771 –