OpenSUSE Leap 15.2 ja ID-kaart

SuSe Linuxiga seotud arutelu

Moderaator: Moderaatorid

Vasta
mait
Pingviini aktivist
Pingviini aktivist
Postitusi: 104
Liitunud: 14.12.2012, 17:00

OpenSUSE Leap 15.2 ja ID-kaart

Postitus Postitas mait »

Tervist!

OpenSUSE 15.2 on nüüd ametlikult toetatav väljalase.

Võtsin GIT-st openSC ja ID-kaardi utiliidid ja kompileerisin nagu tavaliselt (vana näide on siin https://pingviin.org/ftopic10679.html).

Libdigidoc-i kompileerib ära, aga libdigidocpp kompileerimine lõpetab veateatega:

Kood: Vali kõik

/home/mait/src/libdigidocpp/src/crypto/TSL.cpp: In member function ‘void digidoc::TSL::validate(const std::vector<digidoc::X509Cert>&)’:

				/home/mait/src/libdigidocpp/src/crypto/TSL.cpp:521:43: error: invalid conversion from ‘const char16_t*’ to ‘const XMLCh* {aka const short unsigned int*}’ [-fpermissive]
         sig->registerIdAttributeName(u"ID"); 
Kui kommenteerisin katseks välja

Kood: Vali kõik

 sig->registerIdAttributeName(u"ID"); 
, siis tuli mujalt veateateid, kus leidus konstruktsioon (u"misiganes_string").

Vaatasin teeke ja need tundusid olevat seotud ning vanad ka, aga OpenSUSE 15.2 hoidlates uuemaid ei ole
libxml-security-c 1.7.3-lp152.4.7
libxerces-c-3_1 3.1.4-lp152.4.10.

Proovisin ise kompileerida ja xerces-c kompileerus, aga libxml-security-c leiab et xalan 1.11 ei sobi ja xalan-i kompileerimine lõpeb veateatega

Kood: Vali kõik

 
src/xalan-c/src/xalanc/XPath/MutableNodeRefList.cpp:707:12: error: ‘checkForDuplicates’ was not declared in this scope
 707 |     assert(checkForDuplicates(getMemoryManager()) == false);
      |            ^~~~~~~~~~~~~~~~~~
make[2]: *** [src/xalanc/CMakeFiles/xalan-c.dir/build.make:1445: src/xalanc/CMakeFiles/xalan-c.dir/XPath/MutableNodeRefList.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:457: src/xalanc/CMakeFiles/xalan-c.dir/all] Error 2
make: *** [Makefile:158: all] Error 2 
Mul oli vana 2019. aasta ID-kaardi kood ja see kompileerus probleemideta. Saab kõike teha, aga alati teatab, et tarkvarast on uuendused olemas (aga nende kompileerimine nagu eespool kirjeldatud, ei õnnestu).

Mida soovitate?
Kasutaja avatar
imre
Vana Pingviin
Vana Pingviin
Postitusi: 2653
Liitunud: 16.08.2005, 03:00

Postitus Postitas imre »

libdigidocpp puhul proovi ver. varasemat. Kompileerumiseks on vajalik libxalan-c-devel pakk peale lasta.

Kood: Vali kõik

git clone -b v3.14.3 --recursive https://github.com/open-eid/libdigidocpp
mkdir build; cd build; cmake -DPODOFO_LIBRARY="" -DPODOFO_INCLUDE_DIR="" .. ; make
Mul kompileerus ära igatahes.
Enne teema püstitamist kasutage OTSINGUT
Küsi targalt: Infot siit!
Kui aru ei saa, siis küsi.
mait
Pingviini aktivist
Pingviini aktivist
Postitusi: 104
Liitunud: 14.12.2012, 17:00

Postitus Postitas mait »

Selle vanema versiooniga jõuab peaaegu lõpuni ja neid (u"ID) sarnaseid vigu ei teki. Kui kustutasin välja varasema katsetuse käigus ise tehtud xerces-c ja muud ning panin hoidlatest pakid tagasi, siis kompileeris libdigidoc ja libdigidoc-i ära. Käsitsi pidin peale "make install" veel tegema:

Kood: Vali kõik

ln -s /usr/local/lib64/libdigidocpp.so.3.14.3 /usr/lib64/libdigidocpp.so.1
Kõige viimase DigiDoc4-Client kompileerimisel sain

Kood: Vali kõik

[ 18%] Built target TSLDownload_autogen
[ 20%] Built target TSLDownload
[ 21%] Building CXX object client/CMakeFiles/qdigidoc4.dir/DigiDoc.cpp.o
zzz/src/DigiDoc4-Client/client/DigiDoc.cpp: In member function ‘void DigiDoc::create(const QString&)’:
zzz/src/DigiDoc4-Client/client/DigiDoc.cpp:436:17: error: ‘createPtr’ is not a member of ‘digidoc::Container’
  b = Container::createPtr(to(file));
                 ^~~~~~~~~
zzz/src/DigiDoc4-Client/client/DigiDoc.cpp: In member function ‘bool DigiDoc::open(const QString&)’:
zzz/src/DigiDoc4-Client/client/DigiDoc.cpp:518:18: error: ‘openPtr’ is not a member of ‘digidoc::Container’
   b = Container::openPtr(to(file));
                  ^~~~~~~
zzz/src/DigiDoc4-Client/client/DigiDoc.cpp:530:21: error: ‘openPtr’ is not a member of ‘digidoc::Container’
      b = Container::openPtr(to(tmppath));
                     ^~~~~~~
zzz/src/DigiDoc4-Client/client/DigiDoc.cpp: In static member function ‘static void DigiDoc::parseException(const digidoc::Exception&, QStringList&, digidoc::Exception::ExceptionCode&)’:
zzz/src/DigiDoc4-Client/client/DigiDoc.cpp:560:18: error: ‘TSForbidden’ is not a member of ‘digidoc::Exception’
  case Exception::TSForbidden:
                  ^~~~~~~~~~~
zzz/src/DigiDoc4-Client/client/DigiDoc.cpp: In member function ‘void DigiDoc::setLastError(const QString&, const digidoc::Exception&)’:
zzz/src/DigiDoc4-Client/client/DigiDoc.cpp:630:18: error: ‘TSForbidden’ is not a member of ‘digidoc::Exception’
  case Exception::TSForbidden:
                  ^~~~~~~~~~~
make[2]: *** [client/CMakeFiles/qdigidoc4.dir/build.make:438: client/CMakeFiles/qdigidoc4.dir/DigiDoc.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:367: client/CMakeFiles/qdigidoc4.dir/all] Error 2
make: *** [Makefile:147: all] Error 2 
Võtsin imre postitatud näite järgi ka selles vanema versiooni

Kood: Vali kõik

  git clone   -b v4.2.5  --recursive https://github.com/open-eid/DigiDoc4-Client.git 
ja selle tegi ära.
aarengu
Uus kasutaja
Uus kasutaja
Postitusi: 8
Liitunud: 17.10.2010, 12:54

Postitus Postitas aarengu »

Kasutaja avatar
DaStoned
Pingviini aktivist
Pingviini aktivist
Postitusi: 395
Liitunud: 11.01.2007, 16:23

Postitus Postitas DaStoned »

Uuem gcc annab vea, sest ei luba pointereid signed ja unsigned integer tüüpi muutujate pihta omavahel vahetada (mida aeg edasi, seda pedantlikumaks gcc muutub).

Aga workaround on see, et sa ütled gcc-le et ole vait ja tee tööd edasi. Selleks tuleb temani toimetada veateates vihjatud argument "-fpermissive". Konkreetselt, enne cmake käivitamist anna need kaks käsku (esimene mõjutab C ja teine C++ kompilaatorit):

Kood: Vali kõik

export CFLAGS=-fpermissive
export CXXFLAGS=-fpermissive
Kui sa oled juba varasemalt cmake käima lasknud, siis tuleb enne plats puhtaks teha kui neist muutujatest midagi tolku on. Ma ei viitsi siinkohal süveneda, aga arvatavasti teeb selle töö ära cmake kataloogi ärakustutamine ja uue tegemine.
When the shit hits the fan, keep your mouth shut!
mait
Pingviini aktivist
Pingviini aktivist
Postitusi: 104
Liitunud: 14.12.2012, 17:00

Postitus Postitas mait »

Need on kindlasti väärt proovimiseks. Teisalt on jälle nii, et kui algkoodist kompileerimise pisik on külge jäänud, siis sellest niisama lihtsalt lahti ei saa. Lisaks on ise kompileerimisel alati võimalik midagi uut teada saada.
jaan513
Pingviini külastaja
Pingviini külastaja
Postitusi: 17
Liitunud: 07.12.2017, 11:34

Postitus Postitas jaan513 »

Uue Leap 15.3 peal tundub Digidoc töötavat, ma midagi erilist ei pidanud tegema, kompileerisin üsna vana 42.3 juhendi järgi. Siin lehel väljatoodud asju ette ei tulnud, mingeid vanemaid versioone checkout-ima ei pidanud. Võrreldes eespool viidatud 42.3 õpetusele on nüüdseks muidugi Digidoc4 olemas ja qdigidoc ja qesteidutil on vananenud.

Nii et digidoc4 jaoks pidin tegema:

Kood: Vali kõik

git clone --recursive https://github.com/open-eid/DigiDoc4-Client
Minu konkreetse lugeja (OmniKey CardMan 1021, USB) jaoks oli vaja ka:

Kood: Vali kõik

zypper in pcsc-ccid
Installitud Opensuse vaikimisi repo Firefox 78.13.0esr (64-bit) saab ID-kaardiga sisselogimisega hakkama, allkirjastamisega mitte (võib-olla tuleb jälle Firefox otse Mozilla lehelt alla laadida ja siis proovida)

Veidi hiljem: jah, allalaetud Mozilla Firefox 91.0.2 hakkas ka allkirjastama, kui panin käsitsi /usr/lib64/onepin...so faili "Security Devices" alla ja laadisin "Token signing" Firefoxi lisade nimekirja.
Vasta