Miten uusi versio libcryptosta käyttöön Linuxissa

Työssä olen saanut tehtäväksi päivittää erään ohjelman Qt 4:stä Qt 5:lle. Kyseinen ohjelmisto käyttää OpenSSL-kirjastoa ja viittaa koodissa funktioon OPENSSL_init_crypto, eikä käännös mene läpi, koska funktion toteutusta ei löydy. Googlaamalla selvisi, että funktio on ilmeisesti toteutettu kirjastossa libcrypto, ja tuli mukaan versioon 1.1. Ongelmana on, että käyttämässäni Linux-distrossa (Kubuntu 17.04) uusin versio mikä löytyy paketinhallinnasta on 1.0.0. Ohjelmiston mukana on valmiiksi käännetty versio kirjastosta Windowsille (ohjelmiston on tarkoitus toimia sekä Windowsilla että Linuxilla), mutta ei Linuxille.

Latasin verkosta lähdekoodit uudemmalle versiolle ja käänsin ja asensin ne ohjeiden mukaan. Asentaminen kaiketi onnistui sillä komento "openssl version" näyttää versioksi 1.1.0, mutta käännös valittaa edelleen puuttuvasta funktiosta. Käännöksen tuloksena syntyi myös kirjastosta uusi versio (libcrypto.so.1.1), mutta se pitäisi kaiketi saada jotenkin osoitettua systeemille.

Osaisiko joku neuvoa miestä mäessä ?
Ilmianna
Jaa

17 Vastausta



Ei me aleta sun töitä täällä tekemään. Vai maksatko meille palkkaakin?
Ilmianna
Jaa
Minulla on vanha Linux Mint 17.3 Rosa
ja
OpenSSL 1.1.0f 25 May 2017

Enkä ole tuota tietoisesti päivittänyt.

jospa otat oman käännöksen pois ja yrität perinteistä tapaa:
sudo apt-get install openssl
Kommentoi
Ilmianna
Jaa
8 VASTAUSTA:
Hihihi, tuossa se taas nähdään että Ubuntu on se joka käyttää vanhoja paketteja.
Kommentoi
Ilmianna
Jaa
LMDE2 kirjoitti:
Hihihi, tuossa se taas nähdään että Ubuntu on se joka käyttää vanhoja paketteja.
Hihittele homo vain itseäsi. Ubuntuhan tunnetusti käyttää vakaitapaketteja, eikä sorru tuleviin tietoturva-aukkoihin. Ne ei ole vanhoja, vaan todistetusti toimivia. Käytä snap niin on aina uusin, muista päivittää.
Kommentoi
Ilmianna
Jaa
winaivowamma kirjoitti:
Hihittele homo vain itseäsi. Ubuntuhan tunnetusti käyttää vakaitapaketteja, eikä sorru tuleviin tietoturva-aukkoihin. Ne ei ole vanhoja, vaan todistetusti toimivia. Käytä snap niin on aina uusin, muista päivittää.
Miksiköhän nämä pikkupaskiaiset aina päätyvät homottelemaan toisia ja toisiaan?
Vastaus: Seksuaaliidenteetti ei ole vielä kehittynyt.
Kommentoi
Ilmianna
Jaa

Ylläpito on poistanut tästä viestin sääntöjen vastaisena.

Kommentoi
Ilmianna
Jaa

Ylläpito on poistanut tästä viestin sääntöjen vastaisena.

Taidat olla esiintyjänä
https://www.youtube.com/watch?v=DvtAE1RPLow
homoos
Kommentoi
Ilmianna
Jaa
LMDE2 kirjoitti:
Hihihi, tuossa se taas nähdään että Ubuntu on se joka käyttää vanhoja paketteja.
Lopetahan se asioiden vääristely.

OpenSSL on keskeinen osa käyttöjärjestelmän rajapintoja ja sitä pidetään vakaana tästä syystä. 1.02 -> 1.1 mitä todennäköisimmin rikkoo yhteensopivuuksia paljon joten sitä ei luultavasti siksi muuteta. Kyseistä rajapintaa muutettiin jo rajummin Ubuntu 10.04 LTS -> 12.04 LTS siirryttäessä joten tuota ei heti olla rikkomassa.

Muista että Ubuntu on vakaa käyttöjärjestelmä joka pyörittää maailman tietojärjestelmiä joten asioita ei muutella muuttamisen riemusta.
Kommentoi
Ilmianna
Jaa
M-Kar kirjoitti:
Lopetahan se asioiden vääristely.

OpenSSL on keskeinen osa käyttöjärjestelmän rajapintoja ja sitä pidetään vakaana tästä syystä. 1.02 -> 1.1 mitä todennäköisimmin rikkoo yhteensopivuuksia paljon joten sitä ei luultavasti siksi muuteta. Kyseistä rajapintaa muutettiin jo rajummin Ubuntu 10.04 LTS -> 12.04 LTS siirryttäessä joten tuota ei heti olla rikkomassa.

Muista että Ubuntu on vakaa käyttöjärjestelmä joka pyörittää maailman tietojärjestelmiä joten asioita ei muutella muuttamisen riemusta.
Ihan sama mitä pyörittää, minun muistini toimii vielä ja kommentti kohdistui joihinkin Ubutisteihin jotka alvariinsa dissaavat Mintin päivittymisten hitautta.
Kommentoi
Ilmianna
Jaa
LMDE2 kirjoitti:
Ihan sama mitä pyörittää, minun muistini toimii vielä ja kommentti kohdistui joihinkin Ubutisteihin jotka alvariinsa dissaavat Mintin päivittymisten hitautta.
Et ole siis ymmärtänyt mistä edes puhutaan.

Kyse ei ole pakettien versioista vaan siitä kuinka nopeasti turvapäivitys saadaan. Ihan sama vaikka olisi 10v siellä joku paketti versiota 1.02 kunhan siihen tulee turvapäitykset eikä niin että turvapäivitykset puuttuu monen kuukauden ajalta.
Kommentoi
Ilmianna
Jaa
M-Kar kirjoitti:
Et ole siis ymmärtänyt mistä edes puhutaan.

Kyse ei ole pakettien versioista vaan siitä kuinka nopeasti turvapäivitys saadaan. Ihan sama vaikka olisi 10v siellä joku paketti versiota 1.02 kunhan siihen tulee turvapäitykset eikä niin että turvapäivitykset puuttuu monen kuukauden ajalta.
Onnekseni en ole palstan ainoa ymmärtämätön.
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
"Googlaamalla selvisi, että funktio on ilmeisesti toteutettu kirjastossa libcrypto"

Eli lisää sen kirjaston kehityspaketin kun tuo on yleensä mukana käyttöjärjestelmässä.

"Ongelmana on, että käyttämässäni Linux-distrossa (Kubuntu 17.04) uusin versio mikä löytyy paketinhallinnasta on 1.0.0."

Käytä sitten sitä versiota.

"Ohjelmiston mukana on valmiiksi käännetty versio kirjastosta Windowsille (ohjelmiston on tarkoitus toimia sekä Windowsilla että Linuxilla), mutta ei Linuxille. "

Yleensä ohjelmat käyttävät käyttöjärjestelmän vakiokirjastoja eikä raahaa mukanaan kaikkea roinaa. Varsinkin tuota kun on aika standardia tavaraa.

"Latasin verkosta lähdekoodit uudemmalle versiolle ja käänsin ja asensin ne ohjeiden mukaan. Asentaminen kaiketi onnistui sillä komento "openssl version" näyttää versioksi 1.1.0, mutta käännös valittaa edelleen puuttuvasta funktiosta. Käännöksen tuloksena syntyi myös kirjastosta uusi versio (libcrypto.so.1.1), mutta se pitäisi kaiketi saada jotenkin osoitettua systeemille."

Ei siinä kai muuta kuin linkkerissä ottaa kirjaston mukaan ja että löytyy se headerfile sieltä missä se on sorsassa kerrottu.

Mutta minusta tuota nyt ratkotaan vähän hassusti, että olisi paljon helpompaa buildata Ubuntu 16.04 LTS:llä, ja asentaa "sudo apt-get install libssl-dev" ja siinä on sitten mukana se mitä tuon kirjaston käyttäminen projekteissa vaatii.

Saa sitten tehtyä käännöksen mikä toimii Ubuntu 16.04 LTS:llä. Windows käännöstä varten voi raahata mukana sitä kirjastoa ja jos siinä jotain nysvää Windowsia varten niin voi sitten olla #ifdef #endif siellä Windowsia varten siellä koodissa.
Ilmianna
Jaa
Huomasinpa tosi oudon ilmiön äskettäin. Jostain syystä Qt Creator teki ohjelmasta shared libraryn, vaikka sen piti tehdä ajettava ohjelma. Projektitiedostossa oli kyllä määritelty templateksi app, joten sen olisi pitänyt tehdä ajettava ohjelma, mutta arvelin, että olin rikkonut jotain projektitiedostossa.

Päätin sitten kokeilla testauksen vuoksi tehdä yksinkertaisen demoprojektin (Qt widgets application) ja kääntää sen. Siitä olisi pitänyt tulla ajettava ohjelma, koska se oli määritelty sellaiseksi ja projektitiedostossa oli oikeaoppisesti "TEMPLATE = app". En tehnyt projektiin mitään muutoksia ja käänsin sen. Arvatkaapa minkä tyyppisenä käännöksen tulos näkyi ? Jep. Shared library.

Eli vaikuttaa siltä, että Qt Creator on jotenkin rikki, mutta en tiedä mikä voisi olla vialla. Voisiko ongelmana olla, että ajan Linuxia Virtualboxin alla ? Tai se, että asensin koneelle jälkikäteen vanhemman version Qt Creatorista (2.3.0, nykyinen on 4.4.1) testatakseni kyseisen sovelluksen kääntämistä ilman muutoksia ?

Asensin Linuxiin build-essential paketin ennen Qt-creatoria, mutta en ole varma pitäisikö asentaa vielä jotain muuta. Itse olen käyttänyt pääasiassa SuSE:a, joten Ubuntu ei ole minulle niin tuttu.
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
"Eli vaikuttaa siltä, että Qt Creator on jotenkin rikki, mutta en tiedä mikä voisi olla vialla. Voisiko ongelmana olla, että ajan Linuxia Virtualboxin alla ? Tai se, että asensin koneelle jälkikäteen vanhemman version Qt Creatorista (2.3.0, nykyinen on 4.4.1) testatakseni kyseisen sovelluksen kääntämistä ilman muutoksia ?"

No siis tarkoitushan on tehdä niitä muutoksia siihen ohjelmaan, eli Qt4 -> Qt5

Helpoiten käy kun on se Ubuntu 16.04 LTS, klikkailee sieltä paketeista sen Qt Creatorin, Qt5 kirjastojen dev paketit, build-essential sekä openssl:n dev paketin, laittaa koodin siihen Qt Creatoriin ja alkaa säätämään kunnes toimii. Nimenomaan se nysvä pitää tehdä siihen koodiin mitä ollaan päivittämässä nykyaikaan eikä itse rakennella jotain alustaa.
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
Linux aina vaikea.
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
Linux ei liity mitenkään tähän.
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
Käytätkö ldconfig -komentoa päivittämään kirjastot, jotta ne uudet käännökset löytyvät?

Toinen, mitä voit tehdä, on tehdä tarkistaa, että symbolisesti linkit on tehty oikein.

Katso myös Qt:n configure, mitä vaihtoehtoja on SSL:ole.
Ilmianna
Jaa
Niin.. ja tosiaan, löytyvät kirjastot han näet: ldconfig -p

Jos sieltä ei oikeaa kirjastoa löydy, lisää ldconfig konferenssiin oikea path ja suorita ldconfig.
Ilmianna
Jaa

Vastaa alkuperäiseen viestiin

Miten uusi versio libcryptosta käyttöön Linuxissa

Työssä olen saanut tehtäväksi päivittää erään ohjelman Qt 4:stä Qt 5:lle. Kyseinen ohjelmisto käyttää OpenSSL-kirjastoa ja viittaa koodissa funktioon OPENSSL_init_crypto, eikä käännös mene läpi, koska funktion toteutusta ei löydy. Googlaamalla selvisi, että funktio on ilmeisesti toteutettu kirjastossa libcrypto, ja tuli mukaan versioon 1.1. Ongelmana on, että käyttämässäni Linux-distrossa (Kubuntu 17.04) uusin versio mikä löytyy paketinhallinnasta on 1.0.0. Ohjelmiston mukana on valmiiksi käännetty versio kirjastosta Windowsille (ohjelmiston on tarkoitus toimia sekä Windowsilla että Linuxilla), mutta ei Linuxille.

Latasin verkosta lähdekoodit uudemmalle versiolle ja käänsin ja asensin ne ohjeiden mukaan. Asentaminen kaiketi onnistui sillä komento "openssl version" näyttää versioksi 1.1.0, mutta käännös valittaa edelleen puuttuvasta funktiosta. Käännöksen tuloksena syntyi myös kirjastosta uusi versio (libcrypto.so.1.1), mutta se pitäisi kaiketi saada jotenkin osoitettua systeemille.

Osaisiko joku neuvoa miestä mäessä ?

5000 merkkiä jäljellä

Peruuta