Ciao a tutti, sto scrivendo un’applicazione Web in ambiente Windows 10 usando Xojo 2019r1.1; l’applicazione è CGI e deve girare su server Linux.
Ho aggiunto oggi una nuova feature che utilizza la classe URLConnection, ed ho scoperto dalla guida che tale classe su Linux richiede la Libsoup 2.4
Ho provato a cercare in Internet, ma tutto quello che ho trovato è il materiale per installarla su Linux, cosa che io non posso fare in quanto il server nel quale deve girare la mia applicazione è un server condiviso.
Qualcuno mi sa indicare dove posso trovarla (o, meglio ancora, me la può inviare via mail a freguglia.nediatgmail.com)?
Grazie mille!
Nedi
Ho trovato la libreria (per gentile concessione di Tim Parnell): l’ho inserita nel Build Step Copyfile della mia applicazione web facendola caricare nella cartella Libs.
Però non funziona.
La libreria è “libsoup-2.4.so.1.8.0” e l’applicazione gira su un server condiviso Linux (CentOS 7 con Apache 2.4).
Qualcuno mi sa dare qualche indicazione?
Grazie!
Nedi
Probabilmente non e’ “libsoup-2.4.so.1.8.0” che l’applicazione cerca ma una generica “libsoup-2.4.so”.
Benvenuto nel mondo alquanto convoluto di Linux che ha sempre deriso le DLL di Windows e che non ha risolto, ma spesso complicato, i punti definiti “deboli” additati come difetti.
Tanto per iniziare potresti rinominare il file in “libsoup-2.4.so” e vedere cosa cambia.
Con l’utility “ldd” ottieni l’elenco delle dll (.so) richieste dal programma e, sperando che non sia caricata dinamicamente ma riferita in fase di link dell’eseguibile, dovresti vedere quale “libsoup” serve.
Aggiungi qui ulteriori osservazioni…
Execute in Ubuntu
apt install libsoup2.4-1
Linux libraries have dependencies.
Nedi is using a shared server so He can’t install system libraries (I suppose)
Grazie Maurizio!
Ho già provato a ridenominarla, ma senza successo.
Per quanto riguarda l’utility ldd non saprei come usarla: la mia è un’applicazione CGI e sto lavorando in ambiente Windows 10
My app is on a shared server, so I can’t install nor modify ANYTHING!
Thank you, anyway.
Giusto per rendere più chiaro il quadro:
la mia è un’applicazione web cgi scritta in Xojo 2019 r1.1 e installata su un server condiviso Aruba (Linux CentOS 7 e Apache 2.4)
Nella mia applicazione ultimamente ho aggiunto un nuovo container control per utilizzare il servizio SMS fornito da Aruba. Per dialogare con le API REST di Aruba utilizzo un oggetto Xojo.Net.HTTPSocket: non appena viene eseguito l’evento Shown del container arriva l’errore:
Unhandled Xojo.Core.PlatformNotSupportedException
Message: Could not load libsoup-2.4, used by Xojo.Net.HTTPSocket
Ho aggiunto la libreria nel Build Step Copyfile indicando, in un primo tempo, la destinazione “Framework folder” (cartella Libs), ma non ha funzionato. Poi ho provato ad inserire la destinazione “App Parent Folder” (nella stessa cartella dell’applicazione), ma anche così non ha funzionato.
Ho aperto un ticket su Aruba, sperando (ma ci spero poco) che mi diano qualche indicazione valida.
A meno che non sia proprio possibile l’utilizzo di tale libreria nei server condivisi.
Non so se esistono altri sistemi per dialogare con API REST: la mia conoscenza in materia è alquanto limitata…
Il comando “ldd” si applica sia agli eseguibili che alle dll (.so).
ldd nomefile elenca tutte le librerie richieste da nomefile, eseguibile o dll che sia.
Il problema che mi pare di capire e’ che la libreria non sara’ presente tra quelle richieste per il lancio del programma ma e’ dinamicamente caricata alla bisogna dal programma.
Se non la trovi nell’elenco riportato da ldd applicato all’eseguibile e a tutte le dll del programma nella cartella “libs” vuol dire che e’ appunto caricata dinamicamente.
Se invece la trovi nell’elenco probabilmente il problema dipende dalle dipendenze della libreria libsoup stessa.
Inizia con l’elenco fornito da ldd applicato a tutte le dll e all’eseguibile: in questo modo si ottiene l’insieme delle parti richieste.
In seguito vedremo come proseguire.
Rimane comunque la soluzione ufficiale di chiedere aiuto al supporto tecnico di Xojo.
Credo che per un problema di questa natura la risposta sia generalmente rapida.
P.S.
Ha verificato se CentOS 7 e’ tra le versioni di Linux compatibili con Xojo 2019 R1.1?
Si, ne ho già fatte alcune di applicazioni che girano tranquillamente. Anche quest’ultima girava benissimo, prima che aggiungessi la classe HTTPSocket.
Per quanto riguarda il comando ldd come faccio ad eseguirlo? Il mio è un computer Windows e sul server non ho modo di eseguire comandi da qualcosa che assomigli ad una riga comandi
Questo e’ un problema.
Non hai una macchina virtuale per il test dell’applicazione?
Per ora no, ma potrei cercare un’immagine da installare nella macchina virtuale…magari proprio Linux CentOS.
Mi sapresti indicare tu dove cercarla?
Grazie dell’aiuto che mi stai dando!!
Se posso Linux cerco di evitarlo quindi potrei anche darti consigli non esattamente appropriati…
Guarda sul sito di CentOS e scarica il necessario per l’installazione.
Come sistema di virtualizzazione potresti anche usare VMWare player che e’ gratuito.
Non credo che sia un’operazione particolarmente complessa la creazione di una macchina virtuale.
Come macchina virtuale io uso Oracle VirtualBox. Dovrei installare una qualche versione di Linux server, vero? Per simulare il server Aruba…
Credo che basti solo CentOS installato dentro VirtualBox.
Tra l’altro credo che tu possa provare il tutto anche senza Apache mettendo in esecuzione il programma non in modalita’ CGI.
L’eseguibile dovrebbe comportarsi allo stesso modo dal punto di vista delle DLL che utilizza durante il funzionamento.
In modalita’ CGI direi che cambia solo il modo in cui viene lanciato dal server Apache esterno e come il server comunica con l’applicazione Xojo.
Sto scaricando CentOS 7, poi lo installo nella VM…e da lì in poi per me è arabo!
Tranquilllo, i problemi seri sono altri.
Quando ci sei batti un colpo.
Per quello che posso un aiuto non si nega mai
Ho scaricato l’immagine iso di CentOS7. Per installarlo nella VM dovrei masterizzarlo su un DVD (dopo averlo scompattato)? Non mi ricordo più la prassi…è una vita che non installo sistemi operativi sulla VM…di sicuro devo rendere visibile il DVD alla VM (ho un masterizzatore USB esterno, e già qui ho qualche difficoltà), ed in più il DVD deve essere di avvio…HELP!!!