Complier Qt en Static sous Windows

Lorsque l'on crée une application pour Linux avec Qt on peut être intéressé par la rendre multiplateforme. Sous Linux, Qt est généralement installé par défaut, ou dans le cas contraire facilement installable avec le gestionnaire de paquets systèmes. Mais sous windows, installer Qt est plus compliqué et plus lourd. Ce n'est pas une habitude sous windows de demander d'installer des dépendances. C'est pourquoi il peut être intéressant de compiler Qt en static. Ainsi, lors de la création de l'exécutable avec la version Static, le programme embarquera Qt et vos utilisateurs n'auront absolument pas besoin de l'installer. Voici la démarche.

Mise en oeuvre

Notez que toutes ces opérations se font bien sûr sous Windows.

1. Installation de Qt Dynamique + sources

Installez Qt 5.5 (ou une autre version 5.x selon votre choix et ce qui est disponible) grâce à l'installateur fournit par Qt ici. Il est primordial de sélectionner pour cette version, mingw32 ainsi que les sources, qui seront nécessaires pour la compilation de la version static ensuite. Notez que QtCreator sera installé avec le reste, nul besoin de l'installer à part.

2. Installation des dépendances nécessaires à la compilation

Pour chaque programme, choisissez d'ajouter le programme dans le PATH lorsque cela vous est proposé (cocher la case dans l'installateur). Commencez par installer python en téléchargeant la dernière version 3.x sur leur site. Installez ensuite perl (sous windows ce sera Strawberry-perl). Enfin, installez ruby, en téléchargeant la dernière version de Rubyinstaller depuis leur site. Notez que si vous avez un Windows 64 bits, vous pouvez prendre la version 64 bits de ces programmes (bien que Qt sous windows soit en 32bits avec mingw32).

3. Modifier les mkspecs de Qt pour rendre la compilation static

Ouvrez le fichier C:Qt5.5Srcqtbasemkspecswin32-g++qmake.conf (à adapter selon votre version de Qt), recherchez dans ce fichier la ligne suivante :

QMAKE_LFLAGS            =

et la remplacer apr :

QMAKE_LFLAGS            = -static -static-libgcc
4. Préparation de la compilation :

Ouvrez la console Qt (Menu démarrer --> Tous les programmes --> Qt --> 5.5 --> Qt 5.5 for Desktop (MinGW 4.9.2 32 bit)       [Ceci peut légèrement différer en fonction de votre version de Qt et de MinGW]. Vérifiez que les différentes dépendances sont bien dans le path : Exécuter les commandes suivantes :

python ––version ruby ––version perl ––version

Chaque commande doit vous donner la version et vous ne devez en aucun cas avoir pour réponse que la commande est inconnue : checkDeps Si une commande n'est pas le path, contactez-moi par commentaire pour avoir de l'aide (mais si vous avez bien suivi ce tuto tout devrait aller !).

5. Lancement de la compilation :

Dans la console allez dans le dossier qtbase des sources :

cd C:\Qt5.5\Src\qtbase

Lancez la configuration de la compilation :

configure -static -release -opengl desktop -opensource -platform win32-g++

Répondre y pour accepter la licence. Puis attendre quelques minutes que l'exécution se termine. Quand c'est terminé, lancez la compilation :

mingw32-make sub-src

Attendre que la compilation se termine. Ceci peut prendre plusieurs heures.

6. Configurer Qt Creator pour qu'il utilise la version Qt STATIC

Ouvrez Qt creator. Allez dans les options (Outils --> Options...), dans l'onglet Compiler & Exécuter. Dans l'onglet Versions de Qt, sélectionnez Ajouter... et allez chercher l'exécutable qmake se trouvant dans C:\Qt5.5\Src\qtbase\bin. Dans l'onglet Kits, ajouter un nouveau kit avec la version de Qt précédemment ajoutée : qtcreator

7. Compiler mon application Qt en STATIC

Vous n'avez plus qu'à sélectionné le kit STATIC précédemment ajouté pour votre projet d'application Qt, en mode Release (pas de mode debug en STATIC). Et voilà, vous avez finit ! 🙂

Sources : https://www.youtube.com/watch?v=Oyb20BAgx0U

Sécuriser un serveur LAMP : port SSH + protection firewall (pare-feu) + fail2ban

Bonjour internaute ! Je vous propose quelques astuces pour sécuriser votre serveur dédié ou VPS, afin de limiter les risque de piratage. Fail2ban est un outil vous permettant de bannir des pirates qui tenteraient d'accéder à votre site. Notamment, au bout d'un certain nombre d'essais que vous définissez, l'IP est bannie pour une durée illimitée ou définie par vous. Il s'agit donc d'une protection efficace de votre serveur ! Associé à un pare-feu, votre serveur est désormais sécurisé. Mais les pirates essaieront souvent de se connecter en SSH sur votre machine, en utilisant le port par défaut (22). Nous vous proposons tout d'abord de le modifier.

Changement du port SSH

C'est très simple ! Il suffit d'éditer le fichier /etc/ssh/sshd_config, de décommenter la ligne Port 22 et de remplacer 22 par un autre port non utilisé jusqu'alors. Important : le numéro de port doit être inférieur à 65535. Quand c'est fait, redémarrez le serveur ssh. Sous CentOS 7 :
service sshd restart

Mise en place du firewall (pare-feu)

S'il n'est pas installé, installez-le. Sous CentOS 7 :
yum install firewall
Sous Debian 8 :
apt-get install firewalld
Regardez la zone active pour votre firewall :
firewall-cmd --get-default-zone
Pour la suite, nous dirons que la zone est public. Ajoutez les services nécessaires. Par exemple, http et https qui devront être débloqué pour que le port 80 et 443 soient ouverts (le premier est indispensable pour un serveur web, le second indispensable si vous utilisez une connexion sécurisée pour un de vos sites hébergés) :
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https
Ajoutez les autres ports nécessaires, comme le nouveau port SSH :
firewall-cmd --zone=public --add-port=1289/tcp --permanent
En remplaçant 1289 par votre numéro de port. Validez ensuite la configuration :
firewall-cmd --reload
Vérifiez que tout est bon :
firewall-cmd --list-all
Si vous voyez apparaître le service ssh, et que SSH n'utilise plus le port 22, supprimez ce service :
firewall-cmd --permanent --zone=public --remove-service=ssh firewall-cmd --reload

Installation de fail2ban

Je vous propose ici la procédure pour CentOS 7, une distribution linux des mieux adaptées aux serveurs, sinon la mieux. Elle fonctionne également sous Debian 8. Tout d'abord, pour installer fail2ban : Centos :
yum install fail2ban
Debian :
apt-get install fail2ban
Configurez votre configuration fail2ban dans le dossier /etc/fail2ban/jail.local. Ce fichier ne sera pas écrasé lors d'une mise à jour ! Sous CentOS 7, vous pouvez vous baser sur ce fichier qui vous propose nombre de protections. Remplacez dans ce fichier mail@example.com par votre adresse e-mail (vous y recevrez les notifications de fail2ban). Remplacez port=ssh par le numéro du port ssh en service si celui-ci n'est pas le 22 (pour plus de sécurité choisissez un autre port). Démarrez fail2ban :
service fail2ban start
Si vous êtes sous CentOS 7 (ou que vous avez la même version de fail2ban), un bug fait qu'après redémarrage, fail2ban ne fonctionnera plus. La raison est un dossier qui est supprimé au redémarrage. Pour remédier à ça, copiez le texte suivant dans le nouveau fichier /etc/tmpfiles.d/fail2ban.conf (le nom du fichier n'a pas d'importance, seulement son emplacement) :
D /run/fail2ban 0755 root root -

Finalisation

Sans vous déconnecter de SSH, dans un nouvel onglet, essayez de vous connecter :
  1. Avec le port par défaut : ssh user@adresse.fr : la connection échoue en vous répondant : No route to host. Très bien, le pare-feu a fonctionné !
  2. Avec le nouveau port : ssh -p 1289 user@adresse.fr (en remplaçant 1289 par votre port SSH) : là ça doit fonctionner.
Si tout fonctionne, redémarrez votre serveur et vérifiez que tout va toujours bien ! Lors du redémarrage, fail2ban doit vous indiquer que les services ont été stoppés, puis d'autres mails mettant qu'ils ont été démarrés.

Test de fail2ban

Depuis une IP que vous n'utiliserez plus, essayez de vous connecter sur le serveur avec le bon port SSH, en mettant un mot de passe erroné. Faites-le jusqu'à dépasser la limite de nombre de tentatives (3 avec le fichier de configuration fournit). Vous êtes alors banni : on ne vous demande même plus le mot de passe, c'est refusé direct. Et un mail vous est envoyé indiquant que l'IP utilisée pour le test a été bannie. Fin ! Vous avez un serveur bien sécurisé.

Skype 4.3.0.37 : comment s'en sortir avec PulseAudio ?

La dernière version de Skype est sortie, et vous avez peut-être reçu comme moi un message disant que votre ancienne version ne fonctionnerait plus bientôt ? Et peut-être comme moi ça ne fonctionne déjà plus (Skype vous dit et répète que vos identifiants sont incorrects... Alors que bon... Ils sont corrects !). Vous avez fait quelques recherches et vous êtes alors tombé sur cette info : vous devez fonctionner sous PulseAudio. De là, 2 possibilités :
  • Soit votre système fonctionne déjà sous PulseAudio (cet article ne vous concerne pas alors pas et vous pouvez ricaner en pensant à ceux qui sont dans le second cas mais c'est pas très sympa).
  • Soit votre système utilise ENCORE Alsa... pleurez pas vous allez vous en sortir 🙂
Pour les concernés : Il vous faut donc maintenant installer PulseAudio.
Hein ?! Quoi ?!!! Mais noooooooon, PulseAudio, c'est pourri, ça plante tout le temps, c'est pas un bon produit... Moi je veux du libre, du vrai, dans l'esprit linux... Pourquoi ? POURQUOI MOAAAAAAAAAaaaaaaa.......... Rassures-toi mon ami, il ne faut pas croire tout ce qu'on lit sur internet. Certes, PulseAudio est critiqué en raison d'une rivalité entre Linus Torvald lui même et le créateur de PulseAudio. Pour être honnête, je ne fais pas partie des puristes du monde Linux, je ne m'y suis donc pas plus intéressé plus que ça. Et si PulseAudio n'est pas dans "l'esprit linux", que dire de Skype ? Ça ne m'a pas plu de passer à PulseAudio. Mais vous avez peut-être vous aussi des amis qui sont pas bien intéressés par le monde de l'informatique, ou des collègues, des correspondants... Pour qui installer un autre logiciel que Skype, plus compliqué à configurer... Leur demander de changer de logiciel est impensable... D'autant que malheureusement, il n'existe à ce jour aucun logiciel qui lui arrive à la hauteur en terme de qualité ET de simplicité (ou bien je ne l'ai pas encore trouvé ^^). Donc comme moi, vous choisirez peut-être d'installer PulseAudio, par résignation. Au final, vous ne serez sûrement pas déçus. Pour ma part, comme j'ai pu lire sur un forum, j'ai trouvé le son de meilleur qualité avec PulseAudio qu'avec Alsa (oui... Y a des gens qui pensent comme moi... hourra ! :-D). Et puis PulseAudio a certains avantages. Grâce à un mixer adapté (par exemple pavucontrol), vous contrôlerez bien plus de choses qu'avec votre ancien KMix ou équivalent ! Souriez !
Note : si vous êtes vraiement réticents à PulseAudio, vous pouvez faire en sorte que SEUL skype l'utilise, et tout le reste de votre système utilisera toujours ALSA, et les 2 n'entreront pas en conflit. Pour ce faire, dans la partie Configuration de PulseAudio, choissez la méthode 2. Bref, passons donc aux choses sérieuses. Dans un premier temps, il va falloir installer PulseAudio. Puis, il faudra le configurer.

Installation de PulseAudio

Je vous laisse pour ceci vous référer à votre distribution. Pour ceux qui ont une distribution linux ne gérant pas les dépendances (oui... ça existe encore... en 2014 😀 [et heureusement ;-)]), sachez que PulseAudio a 2 dépendances :
  • speex
  • json-c
Vous devrez donc les installer avant d'installer PulseAudio. Pour mes amis sous Slackware, PulseAudio et l'ensemble des dépendances citées sont déjà disponibles sous forme de SlackBuilds chez slackbuilds.org, et vous pouvez facilement les installer grâce à l'excellent outil qu'est sbopkg.

Cas des systèmes en 64 bits

Comme vous le savez sûrement, Skype n'est disponible qu'en version 32 bits. Pour le faire fonctionner dans un environnement 64 bits, vous avez probablement passé votre Système en multilib. Si ce n'est pas encore le cas, renseignez-vous auprès de votre distribution pour savoir comment le faire. Sous Slackware, tout est expliqué en français à cette adresse, ou en anglais (original) ici. Une fois que votre système est multilib-READY, vous devez installer les versions 32 bits des 3 paquets suivants :
  • speex
  • json-c
  • PulseAudio (en dernier).
Vous trouverez peut-être des paquets tous prêts. Ce sont des paquets compat32. Ne SURTOUT PAS installer un paquet 32 bits classique, qui écraserait les version 64 bits des logiciels concernés. Sous slackware, il existe un outil, convertpkg-compat32, qui peut convertir n'importe quel paquet 32 bits en paquet compat32 :
convertpkg-compat32 -i /path/to/mesa-7.5-i486-1.txz
Comment créer vos propres paquets compat32 ? Si vous êtes sous Slackware, pour ma part j'ai installé en machine virtuel une version 32 bits de même numéro de version que ma Slackware 64 bits, dans laquelle j'ai compilé via des SlackBuilds les 3 paquets, que j'ai ensuite rapatrié sur ma Slackware host en 64 bits, et je les ai convertis grâce à la commence convertpkg-compat32 comme ci-dessus. Je les ai ensuite tout simplement installés via installpkg. Si vous avez une Slackware 14.1 ou current, vous pouvez utiliser les paquets que j'ai créé, que je vous fournit ici (merci qui ? :-D). Une fois téléchargés, installez-les directement via installpkg et le tour est joué !  

Configuration de PulseAudio

Maintenant, vous allez devoir faire un choix :
  • Soit vous passez tout votre système sous PulseAudio.
  • Soit vous êtes réticents, et seul Skype utilisera PulseAudio.

1. Passer tout le système en PulseAudio

C'est sûrement la solution la plus simple. Pour se faire, il faut tout d'abord installer le paquet alsa-plugins, s'il n'est pas encore installé. Ce paquet permet aux applications ne fonctionnant qu'avec alsa de fonctionner avec pulse-audio, via alsa-plugins. Sous la Slackware, le paquet peut s'installer via un SlackBuild (veuillez prendre dans ce cas celui correspondant à votre version de Slackware, pour qu'il corresponde à votre version d'alsa. Ici, le lien pointe vers celui de la Slackware 14.1). Ensuite, téléchargez le fichhier asound.conf et placez-le sans le renomer dans le dossier /etc. S'il existe, remplacez le fichier existant (sauvegardez l'ancien au cas où). Redémarrez votre ordinateur... Et voilà, bienvenue sur votre nouvel ordinateur qui fonctionne sous PulseAudio !

2. N'utiliser PulseAudio que pour Skype

Cette méthode ne fonctionne chez moi qu'avec mon micro interne, sur mon ordinateur portable. Les micros externes ne sont pas reconnus. Aussi, si vous voulez utiliser un micro externe (sur un ordinateur fixe, vous n'avez pas le choix !), la seule méthode fonctionnelle que je connaisse est la méthode 1 ci-dessus.J'ai trouvé comment faire fonctionner cette méthode avec mon micro externe également, je vous livre la solution ci-dessous. Pour cette méthode, inutilise d'installer un paquet supplémentaire. Il vous faut simplement modifier le fichier suivant :
/etc/pulse/default.pa
Éditez-le en tant que root et modifiez-le de cette manière : 1) Commentez les lignes suivantes :
### Automatically load driver modules depending on the hardware available
 .ifexists module-udev-detect.so
 load-module module-udev-detect
 .else
 ### Use the static hardware detection module (for systems that lack udev support)
 load-module module-detect
 .endif
2) Insérez les deux lignes suivantes, à la fin du fichier par exemple :
load-module module-alsa-sink device=dmix
load-module module-alsa-source device=dsnoop
Redémarrez votre ordinateur (normalement ce n'est cependant pas nécessaire...). C'est bon,Skype sera content ! Si vous avez un micro externe, en particulier s'il s'agit d'un micro USB (associé à votre webcam externe ou non), le micro risque de ne pas fonctionner. Le device dnsoop risque de ne pas fonctionner. Si vous êtes sous KDE comme moi, voici la solution. Allez dans le centre de configuration de KDE. Allez dans Multimédia. Puis dans Configuration du son et de la vidéo. Enfin, allez dans Enregistrement audio > Enregistrement. Là cherchez votre périphérique et placez la souris dessus. Chez moi ça donne ça : carteSon Comme vous le voyez, le périphérique est sur CARD=2 et DEV=0. Si vous n'êtes pas sous KDE, vous devriez pouvoir avoir accès à ces informations par un autre moyen. Renseignez-vous ;-). Modifiez alors dans le fichier /etc/pulse/default.pa la ligne suivante insérée précédemment :
load-module module-alsa-source device=dsnoop
en :
load-module module-alsa-source device=hw:2,0
En remplaçant 2 et 0 par ce que vous avez chez vous ;-). Si nécessaire, arrêtez le processus pulseaudio en cours :
pulseaudio -k
Et redémarrez skype... Avec votre micro qui fonctionne !

Installation de Skype 4.3.0.37

Vous pouvez maintenant installer Skype depuis les paquets fournis par votre distribution ou votre packager favoris. Sous Slackware, un SlackBuild est disponible sur slackbuild.org. Malgré le message d'avis que vous pourriez avoir, il est désormais compatible avec votre système 64 bits, si vous êtes en 64 bits. Vous pouvez également installer directement mon paquet, quelle que soit votre version de Slackware et votre architecture. Il devrait maintenant fonctionner très bien et du premier coup. Un avantage par rapport aux dernières versions : plus une longue liste de périphériques, c'est skype qui gère tout. Cependant il arrive que le micro ne soit pas immédiatement détecté par Skype. Si vous êtes passés par l'étape 1, PulseAudio l'a sûrement détecté mais ne le sélectionne pas par défaut. Pour pouvoir changer le micro et/ou les enceintes à utiliser, il vous faudra utiliser un mixer pour PulseAudio. Je vous conseille pour ma part pavucontrol, qui est très bien fait je trouve et qui en plus s'interface très bien avec skype (en effet, vous pouvez y accéder depuis les options de skype, onglet Son). Le slackbuild est disponible sur slackbuild.org pour les slackeux. Seul inconvénient : comme vous le verrez, il a pas mal de dépendance puisque c'est un produit gnome (il dépend de gtkmm3 qui lui même à beaucoup de dépendances de dépendances de...). Mais ça vaut le coup. Bien sûr je dis ça parce que je suis sous KDE. Si vous utilisez déjà gnome, vous n'aurez pas toutes ces dépendances à installer puisque vous les aurez déjà. Lancez Skype, tout fonctionne !  

Conclusion

Vous avez maintenant un Skype qui fonctionne ! Vous pouvez continuer à parler à vos amis sans problème ! Si vous avez un soucis ou une question, n'hésitez pas à poster un commentaire, je vous répondrai dans les plus brefs délais 😉