amagovpt / autenticacao.gov

Middleware Oficial de Identificação Eletrónica em Portugal - Cartão de Cidadão, da Chave Móvel Digital e Sistema de Certificação de atributos profissionais
https://www.autenticacao.gov.pt
European Union Public License 1.2
164 stars 33 forks source link

[Tutorial] Debian 10 - Como instalar o ambiente de programação do CC #138

Open turcovadio opened 1 year ago

turcovadio commented 1 year ago

Como instalar o ambiente de programação do CC no Debian 10

Nota: o objectivo deste howto é unicamente instalar as bibliotecas que permitem a compilação de exemplos em C++. Assim se terá a possibilidade de desenvolver software em C++. A execução da aplicação instalada /usr/local/bin/eidguiV2 é irrelevante (não a consigo executar), uma vez que instalei com sucesso a versão empacotada em flatpak (ver em: https://github.com/amagovpt/autenticacao.gov/issues/133).


Versão Debian 10.13 Buster Oldstable Desktop Xfce 4.12 Arquitectura. AMD64 Login: root Instalação: expert


Em /etc/apt/sources.list devem estar as seguintes sources, uma vez que o Debian 10 é oldstable, e para além disso é preciso instalar pacotes backports:

deb http://security.debian.org/debian-security buster/updates main contrib deb-src http://security.debian.org/debian-security buster/updates main contrib

deb http://deb.debian.org/debian/ buster main contrib non-free deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/ buster/updates main contrib non-free deb-src http://security.debian.org/ buster/updates main contrib non-free

deb http://deb.debian.org/debian buster-backports main


Na consola, em root, ou usando o sudo, ou su, digitar o seguinte (na minha instalação tenho obrigatoriamente fazer login: root):

apt update

apt install libxml-security-c20

apt install libpcsclite-dev apt install build-essential libpoppler-qt5-dev libzip-dev libopenjp2-7-dev libpng-dev openjdk-11-jdk qtbase5-dev qt5-qmake qtbase5-private-dev qt5-default qtdeclarative5-dev qtquickcontrols2-5-dev qml-module-qtquick-controls2 libssl-dev libxerces-c-dev libxml-security-c-dev swig libcurl4-nss-dev

apt -t buster-backports install pcscd apt install qml-module-qt-labs-folderlistmodel qml-module-qt-labs-settings qml-module-qt-labs-platform qml-module-qtgraphicaleffects qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-dialogs qml-module-qtquick-layouts qml-module-qtquick-templates2 qml-module-qtquick-window2 qml-module-qtquick2 qt5-gtk-platformtheme libnsspem fonts-lato policykit-1

apt install git cd ~ git clone https://github.com/amagovpt/autenticacao.gov.git

Editar o ficheiro PageLoader.qml em: ~/autenticacao.gov/pteid-mw-pt/_src/eidmw/eidguiV2/PageLoader.qml

Substuir o código da função <function activateGeneralPopup(--- > na linha 175 por:

function activateGeneralPopup(titlePopup, bodyPopup, returnToSubMenuWhenClosed,
        linkUrl, accessibleText){

        if (linkUrl === undefined) linkUrl = ""
        if (accessibleText === undefined) accessibleText = bodyPopup 

        titleText.text = titlePopup
        labelText.propertyText.text = bodyPopup
        labelText.propertyLinkUrl = linkUrl
        labelText.propertyAccessibleText = accessibleText
        mainFormID.propertyPageLoader.propertyGeneralPopUpRetSubMenu = returnToSubMenuWhenClosed;

        // reduce main window opacity
        mainFormID.opacity = Constants.OPACITY_POPUP_FOCUS
        generalPopUp.visible = true;
        rectPopUp.forceActiveFocus();
}

Depois da edição do ficheiro PageLoader.qml digitar: cd ~/autenticacao.gov/pteid-mw-pt/_src/eidmw qmake pteid-mw.pro apt install libcjson-dev make

A compilação dá erros. De novo repetir duma forma muito bizantina: apt -t buster-backports install pcscd make make install && sudo ldconfig

Apesar dos erros as bibliotecas ficam devidamente instaladas em: /usr/local/lib/ /usr/local/include/

Para pôr o pcscd.service a funcionar: systemctl enable pcscd.socket pcscd.service systemctl restart pcscd.service

Remover o código que foi descarregado do Github cd ~ rm -fr ~/autenticacao.gov

export PATH=$PATH:/usr/local/lib:/usr/local/include

Experimentar compilar e executar o programa SignPDFDocument.cpp escrito em C++ existente em: https://github.com/amagovpt/docs.autenticacao.gov/tree/main/SDK_Examples/C%2B%2B Ao que parece, depois deste teste em root deixa de haver na área de trabalho (login normal) um erro de ownership numa pasta qualquer.

Fazer reboot ao SO entrando de seguida na área de trabalho (login normal).

No ficheiro .bashrc acrescentar através dum editor de texto o seguinte: export PATH=$PATH:/usr/local/lib:/usr/local/include Para refrescar o PATH nas variáveis de ambiente digitar: . ~/.bashrc Verificar se a PATH foi actualizada echo $PATH

Experimentar de novo compilar e executar o programa SignPDFDocument.cpp escrito em C++ existente em: https://github.com/amagovpt/docs.autenticacao.gov/tree/main/SDK_Examples/C%2B%2B

Testei com sucesso os seguintes exemplos: GetPhoto.cpp ReadAddress.cpp ReadCard.cpp SignPDFDocument.cpp

A metodologia apresentada é bizarra e bizantina, contudo funciona. Foi feita com suor, sangue e lágrimas.

A informação que foi por mim coligida baseou-se nas publicações feitas em https://github.com/amagovpt/autenticacao.gov/issues/126, em https://github.com/amagovpt/autenticacao.gov/issues/50 e em https://github.com/amagovpt/autenticacao.gov