2023/02/12

Rust et Fyrox sous Debian

J'ai exploré les moteurs de jeux vidéos avec Rust. Celui que j'ai réussi à faire fonctionner rapidement est Fyrox.

Avant de commencer, il faut installer quelques paquets:

apt-get install gcc pkg-config openssl
apt install gcc pkg-config openssl libasound2-dev cmake build-essential python3 libfreetype6-dev libexpat1-dev libxcb-composite0-dev libssl-dev libx11-dev libfontconfig1-dev
apt-get install g++ pkg-config libx11-dev libasound2-dev libudev-dev
apt-get install libwayland-dev libxkbcommon-dev
apt install libxcb-shape0-dev libxcb-xfixes0-dev libxcb1-dev libxkbcommon-dev libasound2-dev

La vraie liste de paquets est probablement plus petite, mais j'ai essayé le moteur Amethyst et le moteur Bevy avant d'essayer Fyrox.

Avec:

git clone https://github.com/FyroxEngine/Fyrox.git

cargo run --example 2d

on se retrouve avec ceci:


On peut facilement copier le continu du fichier 2d.rs dans son propre programme et charger un nouveau fichier png à la place du vaisseau spacial. Dans un répertoire, faire:

cargo new jeu 

cd jeu

git init

git add *

git commit -m "Début."

puis copier-coller le contenu de 2d.rs dans main.rs et créer un dossier image avec une image png rapidement dessinée à l'aide de gimp. Ensuite, remplacer le chemin vers le fichier png avec votre propre image. La ligne avec le chemin commence par .with_texture(resource_manager.request_texture(". 

Il faut aussi ajouter fyrox comme dépendance au projet dans le fichier Cargo.toml:

[dependencies]
fyrox = "0.29.0"

Ensuite, avec cargo run, on obtient ceci:


Ce n'est probablement pas la meilleure manière de commencer un vrai projet, mais c'est assez bien pour simplement jouer avec Fyrox un peu. Pour commencer un vrai projet, il vaut probablement mieux suivre cette section: https://fyrox-book.github.io/fyrox/beginning/scripting.html qui se résume de manière très succinte à:

cargo install fyrox-template
fyrox-template init --name my_game --style 3d
cargo run --package editor --release
cargo run --package executor --release

Liens utiles:

Le livre de Fyrox: https://fyrox-book.github.io/introduction.html

Le git de Fyrox: https://github.com/FyroxEngine/Fyrox

La documentation d'Amethyst: https://amethyst.rs/doc

La documentation de Bevy: https://bevyengine.org/learn/book/getting-started/setup/

2022/12/11

Installer et désinstaller des .deb avec dpkg sous Debian et Ubuntu

Pour installer, dpkg -i paquet.deb

Pour désinstaller, on veut s'assurer que le paquet a été bien installé à la base avec dpkg -l paquet

Si on voit ii devant le nom du paquet, alors il a été installé comme il faut.

On peut l'effacer et effacer ses fichiers de configuration avec dpkg -P paquet

Liens utiles (en anglais):

- https://unix.stackexchange.com/questions/195794/how-to-uninstall-a-deb-installed-with-dpkg

Browsh pour naviguer sur internet dans un terminal

Browsh permet d'utiliser un navigateur web dans un terminal. Très pratique si on veut se connecter à une page web disponible seulement à partir d'un certain ordinateur auquel on peut déjà se connecter en ssh.

J'ai essayé d'installer Browsh directement sur ubuntu, mais l'installation crash parce qu'il doit manquer des dépendances.

Heureusement, il y a une image docker qu'on peut facilement utiliser avec sudo docker run --rm -it browsh/browsh

Pour des détails comment installer docker sur Ubuntu, voir cet autre message: L'Explorateur de l'informatique - Docker sur Ubuntu.

Liens qui m'ont été utiles (en anglais):

- https://github.com/browsh-org/browsh

- Les raccourcis clavier pour browsh: https://www.brow.sh/docs/keybindings/

Docker sur Ubuntu

Il faut s'assurer de désinstaller toutes les vieilles versions avec sudo apt-get remove docker docker-engine docker.io containerd runc

Pour installer docker à partir d'un répertoire qu'apt reconnaîtra, il faut préalablement installer quelques dépendances avec sudo apt-get install ca-certificates curl gnupg lsb-release

Pour faire confiance au répertoire docker, il faut ajouter les clés GPG du répertoire, on fait curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Pour configurer le répertoire docker, il faut echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Après avoir ajouté un répertoire, il faut mettre à jour apt avec sudo apt update

Pour installer la plus récente version de docker par le terminal sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Pour tester la nouvelle installation de docker, on peut faire sudo docker run hello-world

Les sites qui m'ont aidé (en anglais):

- https://docs.docker.com/engine/install/ubuntu/

-- https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

PiVPN: Un VPN pour soi facile à installer

Ce projet libre ce trouve ici: https://github.com/pivpn/pivpn.

J'ai utilisé la méthode 3 pour installer le VPN: git clone https://github.com/pivpn/pivpn.git et bash pivpn/auto_install/install.sh

J'ai choisi wireguard durant l'installation.

Plus de détails sur les paquets qu'il installe

Le script install.sh a besoin de sudo parce qu'il vérifiera pour ces paquets. Il installera les manquants avec apt. Paquets: git, tar, curl, grep, dnsutils, grepcidr, whiptail, net-tools, bsdmainutils, bash-completion, dhcpcd5, iptables-persistent.

Plus de détails techniques

Il faut que l'adresse IP de l'ordinateur soit toujours la même. J'ai préféré configurer mon routeur pour qu'il réserve toujours la même adresse.

Le port part défaut est 51820. Libre à vous de le changer.

Plusieurs serveurs DNS sont disponibles. On peut trouver leur page web facilement comme pour https://www.quad9.net/.

Il y a l'option de connecter au VPN par IP our par nom d'hôte. J'ai choisi IP pour ma part.

Optionnellement, on peut installer unattended-upgrades qui permet d'installer automatiquement les mises à jour de sécurité sur notre ordinateur par apt. Une bonne pratique pour un ordinateur exposé à l'internet.

Après l'installation

On peut utiliser pivpn add pour ajouter des profils clients qui pourront se connecter au vpn. L'autre commande est pivpn help pour avoir plus de détails sur la command pivpn.

Installer le client wireguard

Pour accéder au vpn, il faut installer un programme sur l'autre ordinateur (le client) qui se connecte à l'ordinateur sur lequel on a installé pivpn (le serveur).

Deux liens m'ont été utiles ici:

- https://docs.pivpn.io/wireguard/

- https://www.wireguard.com/install/

En résumé, pour Debian, il faut  

1. Installer wireguard avec apt install wireguard en étant root ou avec sudo.

2. Déplacer ou copier le fichier conf vers /etc/wireguard/.

3. Installer resolvconf avec apt install resolvconf. (J'ai eu une erreur sans ça pour ce qui suit.)

4. wg-quick up <nom> où le nom correspond au nom du fichier de configuration sans le .conf.

5. wg-quick down <nom> pour se déconnecter du VPN.

Préparer une carte SD avec Raspbian

Mise à jour 2023-04-25 

imager_1.7.4_amd64.deb est disponible.

sha512sum imager_1.7.4_amd64.deb
4a80df6ffb8ffe4522ce4c39e9c74e1d7dc6d693e13893bd247ed0f30eb3252dfe43cda729988eca4d220beaecfb342752a709e27a9c55d7eb4365f8cc1b287c  imager_1.7.4_amd64.deb 

sudo dpkg -i imager_1.7.4_amd64.deb
[sudo] password for nicolas:
(Reading database ... 333132 files and directories currently installed.)
Preparing to unpack imager_1.7.4_amd64.deb ...
Unpacking rpi-imager (1.7.4) over (1.7.3) ...
Setting up rpi-imager (1.7.4) ...
Processing triggers for desktop-file-utils (0.26-1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for man-db (2.9.4-2) ...

Article original:

Ces étapes ont été suivies avec Debian 11.5 AMD64. Il faut télécharger le packet pour Ubuntu x86 qu'on trouve ici https://www.raspberrypi.com/software/. Mon fichier d'installation s'appellait imager_1.7.3_amd64.deb.

Pour commencer:

La commande sha152sum imager_1.7.3_amd64.deb a donné ff29625f53aa44b2013c094c9be4b31a775a791d347a1eae5c117f4077399d2874e6689da28cdfe57afb8b7c39c87c26e6fd22231a781bf57804e86b29783649

Je l'ai installer en utilisant sudo dpkg -i imager_1.7.3_amd64.deb. On peut aussi passer en mode root et exécuter la commande sans sudo en faisant su -.

Régler les erreurs de dépendances:

C'est possible de se retrouver avec les problèmes suivants:

dpkg: dependency problems prevent configuration of rpi-imager:
 rpi-imager depends on qml-module-qtquick2; however:
  Package qml-module-qtquick2 is not installed.
 rpi-imager depends on qml-module-qtquick-controls2; however:
  Package qml-module-qtquick-controls2 is not installed.
 rpi-imager depends on qml-module-qtquick-layouts; however:
  Package qml-module-qtquick-layouts is not installed.
 rpi-imager depends on qml-module-qtquick-templates2; however:
  Package qml-module-qtquick-templates2 is not installed.
 rpi-imager depends on qml-module-qtquick-window2; however:
  Package qml-module-qtquick-window2 is not installed.
 rpi-imager depends on qml-module-qtgraphicaleffects; however:
  Package qml-module-qtgraphicaleffects is not installed.

J'ai essayé ceci sudo apt install qml-module-qtquick2 et je me suis retrouvé avec d'autres erreurs et un message me disant d'essayer un --fix-broken ce que j'ai fait de cette manière sudo apt --fix-broken install qml-module-qtquick2, mais ensuite d'autres erreurs et un message me disant de réessayer sans mentionner le paquet. Ce que j'ai fait sudo apt --fix-broken install et là j'ai eu ceci qui m'a permis de voir que l'imager a bien été installé:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Correcting dependencies... Done
The following additional packages will be installed:
  libqt5qmlworkerscript5 libqt5quickcontrols2-5 libqt5quicktemplates2-5 qml-module-qtgraphicaleffects qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qtquick-templates2
  qml-module-qtquick-window2 qml-module-qtquick2
The following NEW packages will be installed:
  libqt5qmlworkerscript5 libqt5quickcontrols2-5 libqt5quicktemplates2-5 qml-module-qtgraphicaleffects qml-module-qtquick-controls2 qml-module-qtquick-layouts qml-module-qtquick-templates2
  qml-module-qtquick-window2 qml-module-qtquick2
0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
[...]
Unpacking qml-module-qtgraphicaleffects:amd64 (5.15.2-2) ...
Setting up qml-module-qtquick-window2:amd64 (5.15.2+dfsg-6) ...
Setting up qml-module-qtquick-layouts:amd64 (5.15.2+dfsg-6) ...
Setting up libqt5qmlworkerscript5:amd64 (5.15.2+dfsg-6) ...
Setting up libqt5quicktemplates2-5:amd64 (5.15.2+dfsg-2) ...
Setting up qml-module-qtquick2:amd64 (5.15.2+dfsg-6) ...
Setting up qml-module-qtquick-templates2:amd64 (5.15.2+dfsg-2) ...
Setting up libqt5quickcontrols2-5:amd64 (5.15.2+dfsg-2) ...
Setting up qml-module-qtgraphicaleffects:amd64 (5.15.2-2) ...
Setting up qml-module-qtquick-controls2:amd64 (5.15.2+dfsg-2) ...
Setting up rpi-imager (1.7.3) ...
Processing triggers for libc-bin (2.31-13+deb11u5) ...

Écrire une image sur la carte:

Il est ici dans les menus et il s'ouvre et fonctionne:

 

Le seul problème que j'ai eu après avoir écrit l'image sur la carte et que l'imager ait vérifié la carte, c'est une erreur disant que Debian n'était pas parvenu à monter la carte SD. Pourtant, elle se montait bien manuellement dans l'explorateur de fichiers.

J'ai inséré la carte dans le rpi et j'ai suivi le programme de configuration qui se lance automatiquement au premier démarrage. Il faut un écran et un clavier pour ça.