Logo carnetderootxzz@carnetderoot.net"La simplification est la sophistication suprême" - Léonard De Vinci
lundi 12 novembre 2018

:: Configuration environnement graphique avec Openbox ::

Gestionnaire de son Alsa

$ sudo pacman -S alsa-utils
$ alsamixer
$ speaker-test -c2

Serveur graphique Xorg

$ sudo pacman -S xorg-server xorg-xinit

Gestionnaire de fenêtre Openbox

$ sudo pacman -S openbox lightdm lightdm-gtk-greeter

Configuration


:: Installation d'Archlinux sur Asus Zenbook ::

Liens intéressants

Arch Linux

Openbox

Installation d'Arch Linux

Caractéristiques du portable

Asus Zenbook UX 303 LN
Ecran 13.3 pouces, résolution 3200x1800px, IPS, tactile
Processeur Intel Haswell Core i7-4510U CPU
Chipset Intel HM87
Video Intel 4400 HD intégré + Nvidia GeForce GT840M 2Go
Memory 8Go DDR3
Stockage 256Go SSD
Connectivity Wireless AC, Bluetooth, Lan (avec adapteur USB-Ethernet)
Ports 3 x USB3.0, lecteur de carte SD, HDMI, mini-DisplayPort
Batterie 50 Wh
Dimensions Epaisseur 21mm avec les pieds (18mm sans)
Poids 1.5 kg (3.3 pounds)
Extras Clavier retro-éclairé, haut-parleurs Bang and Olufsen

Préparation de l'installation

  1. Télécharger la dernière iso sur le site de téléchargement Arch Linux et vérifier son intégrité à l'aide des sommes de contrôle MD5 ou SHA1 :

    $ md5sum archlinux-2015.01.01-dual.iso

    ou

    $ sha1sum archlinux-2015.01.01-dual.iso

    puis comparer la somme de contrôle obtenue à celle présente sur la page de téléchargement.

  2. Créer la clé USB

    $ sudo dd if=archlinux.iso of=/dev/sdx bs=512k

    où /dev/sdx correspond au périphérique USB (Attention à ne pas se tromper !!)

  3. Démarrer sur la clé et sélectionner "Arch Linux archiso x86_64 UEFI" dans le menu de démarrage. On arrive sur la ligne de commande avec un prompt root.

  4. Avant toute chose, modifier l'agencement du clavier (par défaut US-qwerty) :

    # loadkeys fr

    Pour lister les agencements disponibles :

    # find /usr/share/kbd/keymaps/ -type f
  5. Vérifier que l'on est en mode EFI. Si c'est bien le cas, la commande ci-dessous doit afficher les variables EFI :

    # efivar -l 
  6. Etablir une connexion internet. N'ayant pas de port ethernet, ni de câble USB-Ethernet, j'ai configuré le wifi :

    # iw dev                    ---> Récupérer le nom de l'interface (ici, wlp2s0)
    # ip link set wlp2s0 up     ---> Activation de l'interface
    # wifi-menu wlp2s0          ---> Connexion au point d'accès
    # ping www.google.com       ---> Test de la connexion
  7. Partitionner l'espace disque. N'ayant pas l'utilité d'un Windows 8.1, j'ai supprimé l'intégralité du disque. Pour cela, utiliser j'utilise gdisk, un équivalent de fdisk pour GPT (GUID Partition Table), nécessaire pour le mode EFI.

    # gdisk /dev/sda

    Schéma de partitionnement cible :

    Périphérique Point de montage Taille Type
    /dev/sda1 / 20 GiB 8300
    /dev/sda2 /boot 1024 MiB EF00
    /dev/sda3 /home le reste de l'espace disque 8300
  8. Formater les partitions

    # mkfs.ext4 /dev/sda1
    # mkfs.ext4 /dev/sda3
    # mkfs.fat -F32 /dev/sda2
  9. Monter les partitions

    # mount /dev/sda1 /mnt
    # mkdir /mnt/home && mount /dev/sda3 /mnt/home
    # mkdir /mnt/boot && mount /dev/sda2 /mnt/boot

Installation d'Arch Linux et configuration de base

  1. Choix du miroir de téléchargement. Préférer un miroir géographiquement proche (vérifier sur http://archlinux.org/mirrorlist/).

    # nano /etc/pacman.d/mirrorlist
  2. Installer le système de base Arch Linux.

    # pacstrap -i /mnt base base-devel
  3. Créer le fichier fstab.

    # genfstab -U -p /mnt >> /mnt/etc/fstab
  4. Faire un chroot pour accéder au système nouvellement installé.

    # arch-root /mnt
  5. Définir le nom d'hôte

    # echo computer_name > /etc/hostname
  6. Configurer la time zone

    # ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
  7. Configurer les locales Editer le fichier /etc/locale.gen et décommenter la ligne fr_FR.UTF-8 UTF-8 Générer les locales :

    # locale-gen

    Créer le fichier /etc/locale.conf et modifier la valeur LANG

    # echo LANG=fr_FR.UTF-8 > /etc/locale.conf
    # export LANG=fr_FR.UTF-8
  8. Démonter les systèmes de fichiers

    # umount /mnt/boot /mnt/home /mnt
  9. Redémarrer

    # reboot

Configuration post-installation

  1. Créer un utilisateur

    # useradd -g users -m -s /bin/bash utilisateur
    # passwd utilisateur

    [à compléter]

Gestion d'écran HiDPI (High Dots Per Inch)

L'écran de l'UX303LN est un écran 13.3" avec une résolution QuadHD+ de 3200x1800 pixels. Les éléments affichés apparaissent donc trés petits (boutons, polices, etc.), à la limite du lisible.

Vous trouverez ci-dessous une liste (non exhaustive) de modifications permettant de profiter pleinement d'une haute résolution sans avoir besoin d'une loupe :-)

Paramètres X

En l'absence d'un environnement de bureau manipulant les paramètres X (Gnome, KDE, Xfce, etc.), il faut définir ces paramètres manuellement dans le fichier ~/.Xresources :

# Gestion HiDPI
Xft.dpi: 192
Xft.autohint: 0
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb

Note : Adaptez le paramètre Xft.dpi à votre définition d'écran (ici 192dpi).

XTerm

Ici aussi on modifie le fichier ~/.Xresources pour préciser la police désirée, sa taille et sa résolution :

# Police XTerm
xterm*faceName:DejaVu Sans Mono:size=11:antialias=false
xterm*font: 7x13

Note : Modifiez ces paramètres selon vos desideratas.

Firefox et Thunderbird

Dans Firefox, aller dans les préférences avancées (about:config) et modifier le paramètre layout.css.devPixelsPerPx à 2 (défaut : -1). Dans le cas d'une utilisation multi-écran, il est possible d'utiliser le module Firefox AutoHiDPI (Non testé).

Dans Thunderbird, les paramètres avancés sont disponibles sous Edition / Préférences / Avancé / Editeur de configuration.

Installation de yaourt (Yet AnOther User Repository Tool)

Important : Il est vivement conseillé de se documenter sur AUR afin d'en comprendre les mécanismes et d'utiliser yaourt, ainsi que ABS et makepkg.

Méthode 1 - Installation depuis AUR

curl -O https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz
tar zxvf package-query.tar.gz
cd package-query
makepkg -si
cd ..
curl -O https://aur.archlinux.org/packages/ya/yaourt/yaourt.tar.gz
tar zxvf yaourt.tar.gz
cd yaourt
makepkg -si
cd ..

Méthode 2 - Installation depuis le dépôt archlinux.fr

Editer le fichier /etc/pacman.conf et ajouter les lignes suivantes :

[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

Puis, installer le paquet yaourt :

pacman -Sy yaourt

[à suivre]


mercredi 07 novembre 2018

:: Installation minimale d'ArchLinux avec système de fichier crypté et UEFI ::

Préparation de l'installation

  1. Télécharger l'archiso à partir du site https://www.archlinux.org/
  2. Préparer la clé usb

    # dd if=archlinux.img of=/dev/sdX bs=16M && sync
  3. Démarrer sur la clé usb et attendre le prompt root

Installation

Sélection du clavier

# loadkeys fr-latin9

Configuration du wifi

# wifi-menu

Synchronisation horaire

# timedatectl set-ntp true

Schéma de partitionnement

Sur mon Thinkpad, la taille du disque SSD est de 128Go.
1G sera réservé pour les partitions de boot (boot et EFI) et le reste intégralement chiffré.

A noter que les tailles des partitions efi et boot ne sont pas optimisées, 100M serait suffisant pour efi et 250M pour boot...

Configuration cible

NAME                  MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                     8:0    0 119,2G  0 disk
├─sda1                  8:1    0   512M  0 part  /boot/efi
├─sda2                  8:2    0   512M  0 part  /boot
└─sda3                  8:3    0 118,2G  0 part
  └─cryptroot         254:0    0 118,2G  0 crypt
    ├─vg0-swap        254:1    0     4G  0 lvm   [SWAP]
    ├─vg0-root        254:2    0    20G  0 lvm   /
    └─vg0-home        254:3    0  94,2G  0 lvm   /home

Une partition de swap n'est pas nécessaire, mais peut s'avérer pratique si on souhaite utiliser les fonctions d'hibernation d'un portable.
Dans ce cas, la taille de la partition doit être au moins égale à la quantité de RAM, sur mon Thinkpad -> 3915312 octets.

Création des partitions

# cgdisk /dev/sda

Créer les partitions suivantes :

Partition Périphérique Taille Hex code
EFI /dev/sda1 512M ef00
boot /dev/sda2 512M 8300
cryptroot /dev/sda3 Espace disque restant 8300

Formatage des partitions

# mkfs.vfat -F32 /dev/sda1
# mkfs.ext2 /dev/sda2

Chiffrement de la partition cryptroot

# cryptsetup -c aes-xts-plain64 -y --use-random luksFormat /dev/sda3
# cryptsetup luksOpen /dev/sda3 cryptroot

Création des volumes logiques

Créer un groupe de volume (vg0) et les volumes logiques suivants :

Volume logique Taille
vg0-swap 4G
vg0-root 20G
vg0-home le reste
# pvcreate /dev/mapper/cryptroot
# vgcreate vg0 /dev/mapper/cryptroot
# lvcreate --size 4G vg0 --name swap
# lvcreate --size 20G vg0 --name root
# lvcreate --extents +100%FREE vg0 --name home

Création des systèmes de fichiers

# mkfs.ext4 /dev/mapper/vg0-root
# mkfs.ext4 /dev/mapper/vg0-home
# mkswap /dev/mapper/vg0-swap
# swapon /dev/mapper/vg0-swap

Montage des partitions

# mount /dev/mapper/vg0-root /mnt
# mkdir /mnt/boot && mount /dev/sda2 /mnt/boot
# mkdir /mnt/boot/efi && mount /dev/sda1 /mnt/boot/efi
# mkdir /mnt/home && mount /dev/mapper/vg0-home /mnt/home

Sélection des miroirs

Manuelle

  • /etc/pacman.d/mirrorlist

Décommenter et déplacer en haut du fichier le miroir préféré.

Test des miroirs

  1. Sauvegarder le mirrorlist existant et préparer une copie de travail

    # cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
    # cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.test
  2. Modifier le fichier mirrorlist.test et décommenter les miroirs à tester

    Astuce - Pour garder les miroirs français, générer le fichier à partir de la commande suivante :

    # grep -E '^## France$' -A 1 /etc/pacman.d/mirrorlist | grep -vE '^-' > /etc/pacman.d/mirrorlist.test

    Pour décommenter tous les serveurs :

    # sed -i 's/^#Server/Server/' /etc/pacman.d/mirrorlist.test
  3. Tester les miroirs et générer le nouveau mirrorlist (ici avec les 5 miroirs les plus rapides uniquement) :

    # rankmirrors -n 5 /etc/pacman.d/mirrorlist.test > /etc/pacman.d/mirrorlist

Installation des paquets

Installation du système de base et des outils nécessaires au premier démarrage (vim et git sont optionnels)

# pacstrap /mnt base base-devel grub-efi-x86_64 efibootmgr dialog wpa_supplicant vim git

Création du fstab

# genfstab -pU /mnt >> /mnt/etc/fstab

Facultatif

tempfs sur /tmp

# /tmp
tmpfs   /tmp    tmpfs   defaults,noatime,mode=1777  0   0

Options pour SSD

Remplacer les options 'relatime' par 'noatime' sur les partitions sauf celle de boot (limite les accès et augmente donc la durée de vie d'un disque SSD)

Entrer dans le nouveau système

# arch-chroot /mnt /bin/bash

Fuseau horaire

# ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime
# hwclock --systohc --utc

Localisation

  • /etc/locale.gen

Décommenter fr_FR.UTF-8 UTF-8 dans le fichier puis regénérer les locales :

# locale-gen
  • /etc/locale.conf

    LANG=fr_FR.UTF-8
  • /etc/vconsole.conf

    KEYMAP=fr-latin9

Nom d'hôte

  • /etc/hostname

    myhostname
  • /etc/hosts

    127.0.0.1    localhost
    ::1          localhost
    127.0.1.1    myhostname.domain.local myhostname

Utilisateurs

Modification du mot de passe root

# passwd

Utilisateur supplémentaire

# useradd -m -g users -G wheel username
# passwd username

Configuration de mkinitcpio

  • /etc/mkinitcpio.conf

Ajouter les options suivantes avant 'filesystems' : * keymap : chargement du clavier * encrypt : gestion du chiffrement * lvm2 : gestion des volumes logiques * resume : gestion du mode hibernation

Au final, cela donne :

HOOKS=(base udev autodetect modconf block keymap encrypt lvm2 resume filesystems keyboard fsck)

Regénérer l'image initrd

# mkinitcpio -p linux

GRUB

# grub-install
  • /etc/default/grub

    GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda3:cryptroot resume=/dev/mapper/vg0-swap"

Regénérer le grub.cfg

# grub-mkconfig -o /boot/grub/grub.cfg

Fin de l'installation et redémarrage

# exit
# umount -R /mnt
# swapoff -a
# reboot

References


vendredi 26 octobre 2018

:: CloudSHell2 - Installation d'Archlinux ::

Détails techniques

Introduction

Toutes les opérations décrites ci-dessous ont été faites à partir d'un portable sous Archlinux et du reader/writer eMMC se branchant sur le port SD (via un adaptateur micro-SD).

La commande lsblk permet de récupérer le nom du périphérique, pour ma part /dev/mmcblk0

Préparation du module eMMC

Remise à zéro

$ sudo dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=8

Partitionnement

$ sudo fdisk /dev/mmcblk0

Créer une nouvelle partition primaire vide, en tapant les commandes suivantes :

  1. o : crée une nouvelle table de partition DOS
  2. n : crée une nouvelle partition avec les paramètres suivants :
    • p : type de partition primaire
    • 1 : première partition
    • 4096 : premier secteur de la partition
    • ENTER : dernier secteur de la partition (defaut)
  3. w : écrit la table de partition et quitte

Création du système de fichiers ext4

$ sudo mkfs.ext4 /dev/mmcblk0p1

Montage du système de fichiers

$ mkdir root  
$ sudo mount /dev/mmcblk0p1 root

Téléchargement et extraction du système de fichier root

$ wget http://os.archlinuxarm.org/os/ArchLinuxARM-odroid-xu3-latest.tar.gz  
$ sudo bsdtar -xpf ArchLinuxARM-odroid-xu3-latest.tar.gz -C root

Flash du bootloader

$ cd root/boot/
$ sudo ./sd_fusing.sh /dev/mmcblk0

Démontage du système de fichiers

$ cd ../..
$ sudo umount root

Premier démarrage du système

  1. Insérer le module eMMC dans son emplacement sur la carte XU4
  2. Connecter le câble ethernet et brancher l'alimentation
  3. Attendre la fin du démarrage du système puis se connecter en ssh avec le user alarm et le mot de passe alarm

    $ ssh alarm@cloudshell.domaine.lan
  4. Ouvrir une session root avec le mot de passe root

    $ su - root

Initialisation

Création du trouseau de clés et enrichissement des certificats des dépôts Arch Linux ARM

# pacman-key --init
# pacman-key --populate archlinuxarm

Gestion de paquets

Mise à jour du système

# pacman -Syu

Paquets supplémentaires

# pacman -S vim

Configuration réseau

Nom d'hôte

  • /etc/hostname

    cloudshell
  • /etc/hosts

    127.0.0.1       localhost
    ::1             localhost
    127.0.1.1       cloudshell.domaine.lan cloudshell

Adresse IP

Comme il s'agit d'un serveur installé dans mon réseau local, je préfère lui assigner une adresse ip fixe tout en gardant la possibilité de demander une adresse ip dynamique (si je le déplace par exemple). J'ai donc créé un profil statique en ajoutant les lignes suivantes à la fin du fichier /etc/dhcpcd.conf :

  • /etc/dhcpcd.conf

    # Static profile
    interface eth0
    static ip_address=192.168.0.2/24 
    static routers=192.168.0.254
    static domain_name_servers=192.168.0.254 8.8.8.8

Configuration des disques

Le CloudShell2 permet de connecter deux disques SATA au format 3.5" et supporte les technologies RAID0, RAID1, SPAN ainsi que l'accès direct (mode PM).

Dans ma configuration, j'ai branché deux disques SATA de 3To et configuré le 'DIP switch' en RAID1. Le volume RAID est accessible via /dev/sda et sera monté sur /home.

Partitionnement

# fdisk /dev/sda

Créer une nouvelle partition primaire sur le volume, en tapant les commandes suivantes :

  1. n : crée une nouvelle partition avec les paramètres suivants :
    • p : partition de type primaire
    • 1 : numéro de partition
    • ENTER (2048) : premier secteur par defaut
    • ENTER (dernier secteur) : dernier secteur par defaut
  2. w : applique les changements et quitte

Formatage de la partition

# mkfs.ext4 /dev/sda1

Synchronisation du contenu de /home

# mkdir /mnt/data
# mount /dev/sda1 /mnt/data
# rsync -avz /home/ /mnt/data/

Une fois les données synchronisées (et vérifiées !), on peut nettoyer le répertoire /home :

# rm -rf /home/*

Montage de la partition et génération du fstab

# mount /dev/sda1 /home
# genfstab -p -U / > /etc/fstab

Ecran LCD

Ventilateur

Récepteur infrarouge

Références


mercredi 03 octobre 2018

:: Prusa i3xl - Notes techniques ::

Alimentation

Besoins estimés

  • 12V @ 5A pour les 5 moteurs
  • 12V @ 2A pour la buse chauffante de l'extrudeur (+20W)
  • 12V @ 12A pour un lit chauffant 140W (300x200)
  • 5V @ 2A pour l'électronique embarquée (Arduino, RAMPS, Raspberry Pi)
  • 5V @ 1-2A pour le "base load" de l'alimentation

Cela donne un total d'environ 20A en 12V (240W) et 5A en 5v (25W). Sachant qu'une alimentation ne fournit au mieux que 80% de sa puissance max indiquée et qu'il est préférable de l'utiliser à 50-60% de sa puissance max, on cible une alimentation de 500-600W et de préférence certifiée 80+.

Préparation de l'alimentation

Le modèle est une alimentation Antec Neo ECO 520C 80PLUS. La puissance fournie en sortie sur les différentes tensions est résumée ci-dessous :

+5V +3.3V +12V -12V +5VSB
Intensité max 24A 24A 40A 0.8A 2.5A

Caractéristiques

  • Certification 80+ Bronze
  • ATX 2.3

Connecteurs

  • 1 x +12V (Alimentation P8 - Scindable en 2 x P4)
  • 6 x Alimentation Serial ATA
  • 1 x ATX 20 + 4 Broches
  • 1 x Disquette (Molex 4 Broches Femelle)
  • 6 x Molex (4 broches) Femelle
  • 1 x PCI Express 6 + 2 Broches
  • 1 x PCI Express 6 broches

Diagramme des connecteurs

Diagramme des connecteurs

Câbles

20AWG gaine PVC semi-rigide (RS)

  • 331862 Fil câblage équip. UL1007 noir, 20 AWG
  • 331878 Fil câblage équip. UL1007 rouge, 20 AWG

22AWG / 0,35 mm2 gaine PVC semi-rigide (RS)

  • 1680786 FIL DE CABLAGE UL1061
  • 1680821 FIL DE CABLAGE UL1061
  • 1680764 FIL DE CABLAGE UL1061
  • 1680809 FIL DE CABLAGE UL1061
  • 1680758 FIL DE CABLAGE UL1061

Fils trés souples gaine silicone (Intermodel)

  • fs20awgr fil silicone 20 awg / 0.5mm² pour les courants faibles
  • fs16awgr fil silicone 16 awg / 1.32mm² pour le lit 140W

Moteurs NEMA17

Extrudeur

1 moteur pas à pas Casun 42SHD0404-22 :

  • Angle du pas : 1.8° (200 pas / tour)
  • Couple : 520 mN.m
  • Tension : 3.4 V
  • Intensité : 1.7 A

Axes X, Y et Z

4 moteurs pas à pas Casun 42SHD001-24 :

  • Angle du pas : 1.8° (200 pas / tour)
  • Couple : 260 mN.m
  • Tension : 12 V
  • Intensité : 0.4 A

Stepper drivers (x4)

Le réglage du courant fourni au moteur se fait à l'aide du petit potentiomètre présent sur le stick. Commencer au plus bas (tourner dans sens horaire inverse) et augmenter doucement (par 1/8ème de tour) la tension de référence jusqu'à obtenir le résultat désiré.

Note : la mesure de la tension qui nous sert de référence se fait entre la terre et le potentiomètre lui-même.

La puissance demandée aux moteurs variant en fonction des vitesses maximales paramétrées, j'ai arbitrairement choisi les vitesses maximales suivantes :

  • Axes X et Y : 7500 mm/min <=> 125 mm/s
  • Axe Z : 300 mm/min <=> 5 mm/s

Dans mon cas, après suppression/diminution des bruits et autres vibrations, j'arrive aux réglages suivants :

  • Axe X : 0.419 V
  • Axe Y : 0.573 V
  • Axe Z : 0.669 V
  • Extrudeur : 0.435 V

Schéma de cablage

Schéma de câblage

Parties mécaniques

  • Poulies GT2-20
    • Nombre de dents : 20
    • Longueur de pas : 2 mm
  • Courroies GT2
    • Longueur de pas : 2 mm

:: Simple application avec Dancer2 ::

Présentation

Dans cet exemple, on va créer une simple application web avec Dancer2.

Pour le déploiement, on se basera sur starman pour la gestion de l'application avec Nginx en frontal.

Installation de Dancer2

Préparation de l'environnement

Afin de sécuriser l'application, on fait tourner Starman (notre serveur d'application) sous une identité propre que nous appelerons starman. La seule manière d'y accéder sera via l'utilisateur root.

# adduser --gecos "" --disabled-password starman

Brewing Perl

Afin de séparer la distribution Perl installée sur le système (system perl) de celle que l'on souhaite utiliser pour lancer notre application, nous utiliserons PerlBrew, un outil de gestion des versions de Perl.

Pour installer PerlBrew, cf.Gestion des versions de Perl avec Perlbrew

  • Liste des versions Perl disponibles à l'installation :

    # su - starman
    $ perlbrew available
      perl-5.23.3
      perl-5.22.0
      perl-5.20.3
      perl-5.18.4
      perl-5.16.3
      perl-5.14.4
      perl-5.12.5
      perl-5.10.1
      perl-5.8.9
      perl-5.6.2
      perl5.005_04
      perl5.004_05
      perl5.003_07
  • Installation de la dernière version stable (nombre pair) :

    $ perlbrew install perl-5.22.0
  • Vérification de la version installée (deux méthodes) :

    1. Lister les versions installées :

      $ perlbrew list
        perl-5.22.0
    2. Lister les versions disponibles (remarquez le "i" devant la version installée) :

      $ perlbrew available
        perl-5.23.3
      i perl-5.22.0
        perl-5.20.3
        perl-5.18.4
        perl-5.16.3
        perl-5.14.4
        perl-5.12.5
        perl-5.10.1
        perl-5.8.9
        perl-5.6.2
        perl5.005_04
        perl5.004_05
        perl5.003_07

Installation des modules CPAN

Avant tout, on installe un client cpan. Pour cela, on utilise la commande PerlBrew permettant d'installer cpanminus.

$ perlbrew install-cpanm

Puis on installe les modules :

$ cpanm Dancer2 Starman Daemon::Control

Création de l'application

La méthode la plus rapide pour créer son application est d'utiliser la commande dancer2 qui met en place l'arborescence des répertoires et fichiers à partir d'un squelette standard :

$ dancer2 -a Xzz::Blog

Cette commande crée le répertoire Xzz-Blog ainsi qu'un ensemble de sous-répertoires et fichiers.

Notez le double : dans le nom qui demande à dancer2 de créer le module "Blog" dans la sous-arborescence "Xzz", ce qui permet de cloisonner différentes parties de l'application en ajoutant simplement d'autres modules (ex: Xzz::Admin, Xzz::Galerie, etc.)

Pour lancer l'application, exécuter la commande suivante :

$ plackup -R lib bin/app.psgi 
Watching lib bin/lib bin/app.psgi for file updates.
HTTP::Server::PSGI: Accepting connections at http://0:5000/

L'application (vide) est dorénavant disponible à l'adresse http://AdresseServeur:5000. (Ctrl+C pour stopper)

Mise en place du service systemd Starman

Pour lancer automatiquement notre application, on crée le fichier /etc/systemd/system/starman.service avec le contenu ci-dessous :

$ sudo vi /etc/systemd/system/starman.service

[Unit]
Description=Starman
After=syslog.target

[Service]
Type=forking
ExecStart=/home/starman/perl5/perlbrew/perls/perl-5.18.4/bin/starman --listen 127.0.0.1:5001 --env development --daemonize /home/starman/apps/Xzz-Blog/bin/app.psgi
Restart=always

[Install]
WantedBy=multi-user.target

Lancement et activation du service au démarrage :

$ sudo systemctl start starman.service
$ sudo systemctl enable starman.service

Installation et configuration de Nginx

$ sudo aptitude install nginx

--- A SUIVRE ---


:: IPTV Simple Client ::

Cet addon XBMC permet de récupérer de nombreuses chaînes TV françaises directement accessibles via le menu Direct TV.

Compilation sur Raspberry Pi

Note : La distribution utilisée est la dernière Raspbmc disponible à ce jour. Cette dernière contient XBMC en version Gotham 13.2-beta1.

Installation des pré-requis

$ sudo apt-get update 
$ sudo apt-get install git build-essential libtool automake ca-certificates zip unzip

Compilation à partir des sources

$ cd ~
$ git clone https://github.com/afedchin/xbmc-addon-iptvsimple.git
$ cd xbmc-addon-iptvsimple
$ sh autogen.sh
$ ./configure
$ make dist-zip

Pour ma part, j'ai compilé la version 1.9.3, disponible ici

Installation et configuration de l'addon dans XBMC

Installation de l'addon

Aller dans le menu Système > Extensions > Installer depuis un fichier zip et naviguer jusqu'à l'emplacement du fichier pvr.iptvsimple.1.x.x.zip précédemment compilé.

Note : si vous avez exécuté les commandes tel qu'indiqué ci-dessus, le chemin de l'addon est /home/pi/xbmc-addon-iptvsimple/pvr.iptvsimple.1.x.x.zip, où 1.x.x correspond à la version compilée.

Configuration de l'addon

Aller dans Extensions activées > Client enregistreur vidéo > PVR IPTV Simple Client.

Note : l'extension peut être dans Extensions désactivées.

Cliquer sur Configurer :

  • Dans l'onglet Général, au niveau du champ intitulé URL de la playlist M3U, renseigner l'URL suivante : http://tv-fr.lescigales.org/Liste%20TV%20Fr.xml
  • Dans l'onglet Paramètres EPG, au niveau du champ intitulé URL du fichier XMLTV, renseigner l'URL suivante : http://tv-fr.lescigales.org/tvguide.xml
  • Dans l'onglet Logos des chaînes, au niveau du champ intitulé Channels Logos Base URL, renseigner l'URL suivante : http://tv-fr.meximas.com/Logos/

Activer le menu Direct TV dans XBMC

Si le menu Direct TV n'apparaît pas sur la page d'accueil de XBMC, il faut l'activer.
Pour cela, naviguer dans le menu Système > TV Direct et cocher la case Activé.
Si tout se passe bien des notifications de mises à jour s'affichent dans XBMC (liste des chaînes, guide TV, etc.).

Une fois ces mises à jour terminées, vous devriez trouver votre bonheur : environ 200 chaînes francophones dont certaines disponibles en HD ! :-)


:: Machines à commandes numériques (CNC) ::

Références

Machines CNC

Magasins en ligne

Logiciels

  • SketchChair : Outil open-source de design et de conception.

Designs

Matériaux

Présentation de l'OX CNC Router

L'OX CNC Machine est une machine-outil à commande numérique permettant la découpe de différentes matières : bois, plexi, autres.
Elle possède une structure solide et reste relativement facile à construire soi-même. Qui plus est, elle est facilement dimensionnable pour convenir à la plupart des besoins.

En l'occurence les besoins de référence sont la découpe de panneaux de bois de tailles standards.

Modèle XL

Dimensions de la machine
(mm)
Espace de travail
(mm)
X 2500 2320
Y 1500 1270
Z 250 75

Note : Ce modèle nécessite de raccorder 2 V-Slot 20x80 bout à bout (1500mm + 750mm)

Modèle L

Dimensions de la machine
(mm)
Espace de travail
(mm)
X 1500 1320
Y 1000 770
Z 230 75

Exemple de modèles de deux tailles différentes

OX CNC Machine

Liste des composants

Elément Quantité Description Source Commentaires Prix unitaire Coût total
Nema 17 1 Nema 17 Stepper Motor http://openbuildspartstore.com/nema-17-stepper-motor/
http://reprap.me/hardware/nema17.html
http://www.omc-stepperonline.com/3d-printer-nema-17-stepper-motor-59ncm84ozin-2a-17hs192004s-p-18.html
Moteur pas-à-pas pour l'axe Z 15.40€ 15.40€
Nema_23 3 Nema 23 Stepper Motors http://openbuildspartstore.com/nema-23-stepper-motor/
http://www.omc-stepperonline.com/nema-23-cnc-stepper-motor-28a-126nm1785ozin-23hs222804s-p-108.html
Moteurs pas-à-pas pour les axes X et Y 21.56€ 64.68€
V-Slot_20x40 1 V-Slot 20x40mm (1500) http://openbuildspartstore.com/v-slot-linear-rail/ Support central de la table (710mm) Back Brace (500) Z axis (180) 17.16€ 17.16€
V-Slot_20x60 1 V-Slot 20x60mm (1000) http://openbuildspartstore.com/v-slot-linear-rail/ Couper en 2 parties de 500mm pour l'axe X (collées l'une à l'autre) 13.64€ 13.64€
V-Slot_20x80 1 V-Slot 20x80mm (1500) http://openbuildspartstore.com/v-slot-linear-rail/ Couper en 2 parties de 750mmm 26.40€ 26.40€
Xtreme_Solid_V_Wheel 28 Xtreme Solid V Wheel Kits http://openbuildspartstore.com/openbuilds-xtreme-solid-v-wheel-kit/ 5.24€ 146.72€
Eccentric_Spacers 13 Eccentric Spacers http://openbuildspartstore.com/eccentric-spacers/ 1.76€ 22.88€
90_Degree_Corner_Bracket 8 Cast - 90 Degree Corner Bracket http://openbuildspartstore.com/cast-90-degree-corner-bracket/ Utilisés pour fixer les 2 V-Slot (20x60) de l'axe X sur les plaques OX servant elles-mêmes à fixer l'ensemble sur les axes Y 1.32€ 10.56€
5_Hole_90_Degree_Joining_Plate 4 5 Hole 90 Degree Joining Plate http://openbuildspartstore.com/5-hole-90-degree-joining-plate/ Assemblage des 4 coins de la machine 4.22€ 16.88€
Universal_L_Brackets_Double 4 Universal L Brackets (Double) http://openbuildspartstore.com/universal-l-brackets/ Utilisés pour la fixation des supports de table (V-Slot 20x40) 1.10€ 4.40€
Aluminium_Spacers_1-1_2inch 3 Aluminum Spacers (1-1/2 inch) http://openbuildspartstore.com/aluminum-spacers/ Entretoises dédiées au moteur Nema 17 de l'axe Z 0.66€ 1.98€
5mm_washer_shim 40 Precision Shim - 10x5x1mm http://openbuildspartstore.com/precision-shim-10x5x1mm/ Pour toutes les roues, ainsi que pour l'axe X 0.22€ 8.80€
Threaded_Rod_Plate 2 Threaded Rod Plate http://openbuildspartstore.com/threaded-rod-plate/ Plaque de fixation du moteur de l'axe Z 7.00€ 14.00€
Coupling_Flex_5mm_x_8mm 1 5mm x 8mm Flexible Coupling http://openbuildspartstore.com/5mm-8mm-flexible-coupling/ Coupleur pour le moteur et la tige filetée de l'axe Z
8mm_Metric_Lead_Screw 1 8mm Threaded Rod http://openbuildspartstore.com/8mm-metric-lead-screw/ Tige filetée de l'axe Z
Lock_Collar 2 Lock Collar (8mm) http://openbuildspartstore.com/lock-collar/
688Z_Ball_Bearing_8x16x5 2 Bearing ID 8mm http://openbuildspartstore.com/688z-ball-bearing-8x16x5/ Roulements à billes pour l'axe Z
GT3_Timing_Belt 7 GT3 Timing Belt - a.k.a. GT2 (3mm) http://openbuildspartstore.com/gt2-3mm-timing-belt-by-the-foot/ Courroie dentée pour les axes X et Y
Attention à bien estimer la longueur (prévoir une marge)
Socket_Head_Cap_Screw_M5 4 Socket Head Cap Screw M5 - 65mm http://www.mcmaster.com/#91290a270/=qdro90 Fixation des roues du chariot de l'axe X
Acme_Nut_Block_8mm 1 Acme Nut Block 8mm http://openbuildspartstore.com/8mm-acme-nut-block/ Pour l'axe Z
GT3_Aluminum_Timing_Pulley_20 3 GT3 Timing Pulley - 20 tooth - 1/4 Inch Bore http://openbuildspartstore.com/gt3-aluminum-timing-pulley-20/ Poulies à dents pour les moteurs Nema 23 des axes X et Y
CNC_xPro_Controller_Stepper_Driver 1 3 Axis Driver Board http://openbuildspartstore.com/cnc-xpro-controller-stepper-driver/ Vérifier le fil de discussion pour lister les matériels compatibles.
5mm_x_8mm_low_profile_screw 2 Low Profile Screws - M5x8mm / 25 Pcs http://openbuildspartstore.com/low-profile-screws-m5/
5mm_x_8mm_low_profile_screw 2 Low Profile Screws - M5x15mm / 25 Pcs http://openbuildspartstore.com/low-profile-screws-m5/
5mm_x_8mm_low_profile_screw 1 Low Profile Screws - M5x20mm / 25 Pcs http://openbuildspartstore.com/low-profile-screws-m5/
5mm_x_8mm_low_profile_screw 2 Low Profile Screws - M5x30mm / 10 Pcs http://openbuildspartstore.com/low-profile-screws-m5/ En remplacement des boulons fournis avec le kit de roues
5mm_x_8mm_low_profile_screw 1 Low Profile Screws - M5x45mm / 10 Pcs http://openbuildspartstore.com/low-profile-screws-m5/
M3_Cap_Head_Screws 4 M3 Cap Head Screws - M3x45mm http://openbuildspartstore.com/m3-cap-head-screws/ Ecrous de fixation du moteur de l'axe Z
5mm_locknut 12 Nylon Insert Hex Locknut 5mm http://openbuildspartstore.com/nylon-insert-hex-locknut-5mm/
Tee_Nuts 2 Tee Nuts - 25 Pcs http://openbuildspartstore.com/tee-nuts-25-pack/
Aluminum_Spacers 12 Aluminum Spacers - 1/8th inch http://openbuildspartstore.com/aluminum-spacers/ Entretoises pour espacer les moteurs des plaques de fixation
Power_supply_12V_30A 1 12V/30A Power Supply http://openbuildspartstore.com/12v-30a-power-supply/ Vérifier le type d'alimentation supportée par la carte de pilotage (12/24V)
terminal_block 1 Wire Block http://www.mcmaster.com/#7618k613/=qdrzki Pour paralléliser le traitement des 2 moteurs de l'axe Y
Fan_40x40mm 1 40x40mm x 10 12v Cooling fan http://amzn.com/B000LB0M8S Ventilateur de refroidissement de la carte de pilotage
AC_Power_Cable_with_Bare_End 1 AC Power Cable with Bare End http://openbuildspartstore.com/ac-power-cable-with-bare-end/
Power_Cable 5 Power cable http://openbuildspartstore.com/16-2-project-wire/ Cable possédant au moins 2 fils conducteurs supportant du 16A.
Attention à bien évaluer la longueur nécessaire.
Spacer_Block 2 Spacer Block (V-Slot) http://openbuildspartstore.com/spacer-block-v-slot/ Utilisé pour espacer les roues de l'axe Z
4 OX Plates http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/#openbuilds_files Vérifier l'onglet 'Fichiers' pour les fichiers DXF des éléments à découper

lundi 04 juin 2018

:: Shell - Trucs et astuces ::

Lister des fichiers et répertoires - ls

Lister avec chemin complet

  • Pour les répertoires

    $ ls -d -1 $PWD/**
  • Pour les fichiers

    $ ls -d -1 $PWD/*.*
  • Pour tous

    $ ls -d -1 $PWD/**/*

mardi 08 mai 2018

:: Procédure de mise à jour Debian ::

Debian 7 Wheezy vers Debian 8 Jessie

Mise à jour du système en dernière version mineure.

$ sudo apt-get update && sudo apt-get upgrade -y

Vérification de l'état des paquets

  • Liste des paquets "Half-installed" ou "Failed-Config"

    $ sudo dpkg --audit
  • Liste des paquets bloqués ("On hold")

    $ sudo dpkg --get-selections | grep 'hold$'

Note : Il est préférable de résoudre les problèmes avec ces paquets avant de procéder à la mise à niveau du système, sous peine de risquer quelques surprises.

Modification des sources de paquets

  • Modifier le fichier /etc/apt/sources.list

    $ sudo cp /etc/apt/sources.list /etc/apt/sources.list.save
    $ sudo sed -i 's/wheezy/jessie/' /etc/apt/sources.list
  • Et pour chaques fichiers présents dans /etc/apt/sources.list.d/ :

    $ sudo sed -i 's/wheezy/jessie/' /etc/apt/sources.list.d/<fichier>

Mise à niveau du système

  • Facultatif : vérification de l'espace disque avant d'effectuer la mise à niveau

    $ sudo apt-get update && sudo apt-get -o APT::Get::Trivial-Only=true dist-upgrade
    [...]
    543 mis à jour, 305 nouvellement installés, 10 à enlever et 0 non mis à jour.
    Il est nécessaire de prendre 382 Mo dans les archives.
    Après cette opération, 503 Mo d'espace disque supplémentaires seront utilisés.

    Si il y a un problème d'espace disque, la commande retourne un avertissement :

    E: Vous n'avez pas assez d'espace disponible dans /var/cache/apt/archives/.
  • Mise à niveau

    $ sudo apt-get update && sudo apt-get dist-upgrade
    $ sudo apt-get upgrade
    $ sudo shutdown -r now

Debian 8 Jessie vers Debian 9 Stretch

Préparation

Mise à jour du système en dernière version mineure.

$ sudo apt-get update && sudo apt-get upgrade -y

Suppression des paquets installés automatiquement et qui ne sont plus nécessaires

$ sudo apt-get autoremove

Suppression des fichiers de configuration obsolètes

$ sudo rm -f /etc/*.dpkg-{new,old} 

Vérification de l'état des paquets

  • Liste des paquets "Half-installed" ou "Failed-Config"

    $ sudo dpkg --audit
  • Liste des paquets bloqués par apt-get

    $ sudo dpkg --get-selections | grep 'hold$'
  • Liste des paquets bloqués par aptitude

    $ aptitude search "~ahold"

Modification des sources de paquets

  • Modifier le fichier /etc/apt/sources.list

    $ sudo cp /etc/apt/sources.list /etc/apt/sources.list.save
    $ sudo sed -i 's/jessie/stretch/' /etc/apt/sources.list
  • Et pour chaques fichiers présents dans /etc/apt/sources.list.d/ :

    $ sudo sed -i 's/jessie/stretch/' /etc/apt/sources.list.d/<fichier>

Références


dimanche 06 mai 2018

:: Git ::

Introduction

Fichiers de configuration

Git utilise une série de fichiers de configuration pour déterminer son comportement. Les emplacements sont lus dans un ordre précis et les valeurs lues en dernier écrasent les précédentes ("C'est le dernier qui parle qui a raison"). Vous pouvez positionner ces valeurs manuellement en éditant ces fichiers, mais je vous recommande d'utiliser la commande git config, ne serait-ce que pour éviter des erreurs de syntaxe.

/etc/gitconfig

Contient des valeurs pour tous les utilisateurs du système et tous leurs dépôts. Pour lire et modifier ce fichier, utiliser l'option --system avec git config.

$ git config --system [...]

~/.gitconfig

Spécifique à chaque utilisateur. Pour lire et modifier ce fichier, utiliser l'option --global.

$ git config --global [...]

.git/config

Le dernier emplacement lu par git est le fichier de configuration du dépôt en cours d'utilisation. Ces valeurs sont spécifiques à un unique dépôt. Pour lire et modifier ce fichier, utiliser l'option --local.

$ git config --local [...]

git-config

Pour modifier le comportement de git, il est nécessaire de spécifier certains paramètres de configuration à l'aide de la commande git-config.

Synopsis

$ git config [<file-option>] [type] [--show-origin] [-z|--null] name [value [value_regex]]
$ git config [<file-option>] [type] --add name value
$ git config [<file-option>] [type] --replace-all name value [value_regex]
$ git config [<file-option>] [type] [--show-origin] [-z|--null] --get name [value_regex]
$ git config [<file-option>] [type] [--show-origin] [-z|--null] --get-all name [value_regex]
$ git config [<file-option>] [type] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
$ git config [<file-option>] [type] [-z|--null] --get-urlmatch name URL
$ git config [<file-option>] --unset name [value_regex]
$ git config [<file-option>] --unset-all name [value_regex]
$ git config [<file-option>] --rename-section old_name new_name
$ git config [<file-option>] --remove-section name
$ git config [<file-option>] [--show-origin] [-z|--null] [--name-only] -l | --list
$ git config [<file-option>] --get-color name [default]
$ git config [<file-option>] --get-colorbool name [stdout-is-tty]
$ git config [<file-option>] -e | --edit

Paramètres de configuration

Identité

Note importante : ces informations sont utilisées par Git de manière indélébile (on ne peut changer l'auteur d'un commit après-coup, ni son adresse email).

$ git config --global user.name "Xzz"
$ git config --global user.email "xzz@carnetderoot.net"

Editeur de texte

A ne pas oublier, mon éditeur de texte préféré (parce que nano par défaut, hein, sérieux...) :

$ git config --global core.editor vi

Colorisation de la sortie de git

Pour faire simple on peut activer la colorisation de plusieurs paramètres en une seule commande :

$ git config --global color.ui auto

Si on préfère agir de manière spécifique, on peut modifier les paramètres un par un

$ git config --global color.branch auto
$ git config --global color.diff auto
$ git config --global color.interactive auto
$ git config --global color.status auto

Pour plus de détails sur les paramètres disponibles et leurs effets, je vous invite à consulter la documentation de référence git-config

Vérification des paramètres

$ git config --list
user.name=Xzz
user.email=xzz@carnetderoot.net
color.ui=auto
core.editor=vi

Utilisation de Git

Utilisation courante

Initialisation d'un projet

$ cd projet
$ git init
Dépôt Git vide initialisé dans /path/to/projet/.git/

Ajout des fichiers au projet

$ git add .

Supprimer des fichiers de l'index (ne plus les suivre)

$ git rm --cached fichier_a_ne_plus_suivre.pm

Attention à ne pas oublier l'option --cached ! Si vous omettez ce commutateur, la commande supprimera aussi le fichier du système de fichier :-)

Commit initial

$ git commit -m "Mon premier commit"
[master (commit racine) 6337a68] Commit initial
 89 files changed, 61074 insertions(+)
 create mode 100644 MANIFEST
 create mode 100644 MANIFEST.SKIP
 ...

Retirer des éléments de la synchronisation

Certains fichiers n'ayant pas besoin d'être synchronisés (fichiers temporaires, fichiers de swap, répertoire de sessions, etc.), on crée un fichier .gitignore contenant la liste des fichiers et répertoires à ignorer.

$ vi .gitignore

Contenu de .gitignore :

# Commentaire
# Ignorer les fichiers journaux
logs/
# Ignorer les fichiers temporaires
tmp/
# Ignorer les fichiers en cours d'edition
*.swp
...

Ajout du fichier au repository

$ git add .gitignore
$ git commit -m "Ajout du fichier .gitignore"
[master 8896d55] Ajout du fichier .gitignore
 1 file changed, 6 insertions(+)
 create mode 100644 .gitignore

Ignorer des fichiers déjà commités

Dans le cas où on ne veut plus synchroniser des fichiers déjà commités, ni avoir un retour lors d'un git status, il est préférable de réindexer l'ensemble des fichiers à synchroniser.

Pour cela, le moyen radical est de supprimer l'index existant, rajouter les fichiers puis faire un commit.

Attention : penser à commiter les dernieres modifications de code avant de lancer les commandes ci-dessous

$ git rm -r --cached
$ git add .
$ git commit -m "Suppression de tous les fichiers de l'index puis re-ajout pour bonne prise en compte du fichier .gitignore"

Vérification

$ git status
Sur la branche master
rien à valider, la copie de travail est propre

Historique des commits

$ git log

Création d'un dépôt distant

Sur le serveur distant

$ cd /opt/git
$ mkdir projet.git
$ cd projet.git/
$ git --bare init
Dépôt Git vide initialisé dans /opt/git/projet.git/

Sur le poste hébergeant le dépôt local

$ cd projet
$ git init
$ git add .
$ git commit -m "Mon premier commit"
$ git remote add nom_depot user@serveur:/opt/git/projet.git
$ git push nom_depot master

Clonage du dépôt sur un autre poste

$ git clone user@serveur:/opt/git/projet.git

Pousser ses modifications

$ git push nom_depot master

Gestion des dépôts

Afficher les dépôts enregistrés

$ git remote
$ git remote -v

Ajouter un dépôt

$ git remote add nom_depot url

Modifier un dépôt

$ git remote set-url nom_depot url

Supprimer un dépôt

$ git remote rm nom_depot

Références


dimanche 01 avril 2018

:: Gestion des versions de Perl avec Perlbrew ::

Installation

$ curl -kL http://install.perlbrew.pl | bash

Ou, si vous préférez utiliser wget :

$ wget --no-check-certificate -O - https://install.perlbrew.pl | bash

Configuration

Editer le fichier .bashrc

$ vi ~/.bashrc

Et ajouter la ligne suivante à la fin du fichier :

# Perlbrew
source ~/perl5/perlbrew/etc/bashrc

Puis charger le nouvel environnement :

$ . ~/.bashrc

Gestion des versions de Perl

Versions disponibles

$ perlbrew available
perl-5.21.6
perl-5.20.1
perl-5.18.4
perl-5.16.3
perl-5.14.4
perl-5.12.5
perl-5.10.1
perl-5.8.9
perl-5.6.2
perl5.005_04
perl5.004_05
perl5.003_07

Versions installées

$ perlbrew list
perl-5.21.6
perl-5.20.1

Installation d'une version particulière

$ perlbrew install perl-5.16.3

Mise à jour vers la dernière version mineure (ici 5.22.0 vers 5.22.4)

Script upgrade-perl

$ perlbrew upgrade-perl
Upgrading perl-5.22.0 to 5.22.4
Fetching perl 5.22.4 as /home/starman/perl5/perlbrew/dists/perl-5.22.4.tar.bz2
Download http://www.cpan.org/src/5.0/perl-5.22.4.tar.bz2 to /home/starman/perl5/perlbrew/dists/perl-5.22.4.tar.bz2
Installing /home/starman/perl5/perlbrew/build/perl-5.22.4 into ~/perl5/perlbrew/perls/perl-5.22.0

This could take a while. You can run the following command on another shell to track the status:

  tail -f ~/perl5/perlbrew/build.perl-5.22.4.log

Vérification de la mise à jour

$ perlbrew list
* perl-5.22.0 (5.22.4)

Utilisation d'une version particulière

De manière permanente

$ perlbrew switch perl-5.16.3

Uniquement dans le shell courant

$ perlbrew use perl-5.16.3

Tester un script sur toutes les versions de perl disponibles

$ perlbrew exec perl monscript.pl

Accéder à l'aide

$ perlbrew help

Utilisation dans un script bash

Pour utiliser perlbrew dans un script, il faut definir PERLBREW_ROOT et PERLBREW_HOME avant de charger l'environnement bashrc.

#!/bin/bash

## Variables d'environnement requises
export PERLBREW_ROOT=/opt/perlbrew
export PERLBREW_HOME=/tmp/.perlbrew
source ${PERLBREW_ROOT}/etc/bashrc

## Utilisation de la version 5.14.1
perlbrew use 5.14.1
perl /app/mon-application

## Utilisation de la version 5.12.3
perlbrew use 5.12.3
perl /app/mon-application

Gestion des modules CPAN

Installation d'un client CPAN

Pour installer des modules CPAN additionnels, on utilisera cpanm, une alternative à cpan offrant une meilleure compatibilité avec perlbrew.

La méthode habituelle d'installation (cpan -i App::cpanminus) installe bien cpanm, mais uniquement dans l'environnement perlbrew utilisé. Dans ce cas, si on en change, plus de cpanm ('cpanm is not found'...).

Afin d'éviter ce désagrément, Perlbrew fournit un script pour installer cpanm sous ~/perl5/perlbrew/bin, il sera ainsi disponible quelque soit la version de Perl utilisée.

$ perlbrew install-cpanm

Installation du module List::Util

$ cpanm List::Util

Lister les modules installés

$ perlbrew list-modules

Mettre à jour les modules installés

$ perlbrew list-modules | perlbrew exec cpanm

Migrer les modules installés dans la version courante vers une autre (ici 5.16.3).

$ perlbrew list-modules | perlbrew exec --with perl-5.16.3 cpanm

Références


dimanche 18 mars 2018

:: Installer Sailfish X sur Sony Xperia X Compact (F5321) ::

Sony Xperia X Compact

Infos générales

  • Modèle F5321
  • Android 7.1.1
  • Numéro de build 34.3.A.0.252

Combinaisons utiles

Flash Volume down
Fastboot Volume up
Recovery mode Volume down + Power key

Introduction

Afin de pouvoir flasher une rom alternative, il est nécessaire de déverrouiller le chargeur d'amorçage du périphérique.

Le processus est supporté par Sony dans le cadre de son programme Open Devices.

Dans le cas où votre téléphone ne serait pas "rootable" ou que vous ayez le moindre doute, les instructions pour vérifier votre modèle se trouvent sur le site Sony Developer World.

Android 7 Nougat

L'installation de Sailfish est supportée sur une image d'Android 6 ou 7, à partir du moment où le numéro de build est supérieur ou égal à 34.3.A.0.228. Par contre, à la date d'écriture de ces lignes, elle n'est pas encore supportée sur Android 8, on va donc mettre à jour le système en dernière version d'Android Nougat 7 disponible.

Mise à jour du système Android existant

Le plus simple est d'utiliser le procédé OTA (On The Air) du système Android fourni par Sony. Attention à ne pas mettre à jour le système en Android 8, restez sur la dernière version 7 disponible en noyau 3.10 (7.1.1).

Important : Vérifier que le numéro de build est au moins égal à 34.3.A.0.228 (dans Settings | About phone | Build number) avant de déverrouiller le chargeur d'amorçage

Déverrouiller le chargeur d'amorçage

Obtenir le code de déverrouillage

Installer les outils Android

Sous Linux, pas besoin de drivers additionnels mais des outils Android contenant la commande fastboot.

Méthode 1 (conseillée) : Télécharger le SDK Android

Télécharger et décompresser le fichier Platform Tools

Méthode 2 (déconseillée, uniquement si méthode 1 ne fonctionne pas) : Installer les paquets fournis par votre distribution

Attention : l'utilitaire fastboot fourni avec votre distribution peut se révéler partiellement ou totalement incompatible

  • Archlinux : pacman -S android-tools Note : fastboot partiellement incompatible, tester la version AUR
  • Debian/Ubuntu/.deb : apt-get install android-tools-fastboot
  • Fedora : yum install android-tools
  • OS X : brew install android-sdk

Déverrouiller le chargeur d'amorçage

Important : Vérifier que le langage du système est bien configuré sur "English" avant de continuer

  1. Eteindre le téléphone
  2. Connecter le téléphone à votre ordinateur avec le câble USB
  3. Démarrer le téléphone en mode fastboot (Volume Up), la led doit s'afficher en bleu et l'écran rester inactif
  4. Ouvrir une ligne de commande et aller dans le sous-répertoire platform-tools du répertoire SDK Android
  5. Vérifier que le périphérique fastboot est bien détecté :

    # fastboot devices
    XXXXXXXXXX  fastboot
  6. Déverrouiller le chargeur d'amorçage :

    # fastboot -i 0x0fce oem unlock 0x<code de déverrouillage>
    ...
    OKAY [  0.678s]
    finished. total time: 0.678s

Flasher AOSP

Si vous avez déjà votre système Android en version 8 ou tournant sur une rom alternative basée sur de l'Android < 6 ou sur un noyau > 3.10, ou tout simplement si vous voulez partir d'un "fresh install", il est nécessaire de reflasher le périphérique.

  1. Préparation des fichers

  2. Flasher le téléphone

    • Eteindre le téléphone
    • Connecter le téléphone à votre ordinateur avec le câble USB
    • Démarrer le téléphone en mode fastboot (Volume Up), la led doit s'afficher en bleu et l'écran rester inactif
    • Ouvrir une ligne de commande en root dans le répertoire et taper les commandes suivantes :

      # ./fastboot -S 256M flash boot boot.img
      # ./fastboot -S 256M flash recovery recovery.img
      # ./fastboot -S 256M flash system system.img
      # ./fastboot -S 256M flash userdata userdata.img
    • Redémarrer le téléphone

      # ./fastboot reboot
  3. Préparer le système à l'installation de Sailfish

    • Langue système : English (UK)
    • Activer le mode développeur
    • Dans les options Développeur, activer le debug USB et la modification du bootloader

Flasher Sailfish X

  1. Préparation des fichiers
  2. Redémarrer le téléphone en mode fastboot (Volume Up)
  3. Ouvrir une ligne de commande en root dans le répertoire et lancer la commande ./flash.sh

    # ./flash.sh 
    Detected Linux
    Searching device to flash..
    Found device with vendor id '0fce': [...] Sony Ericsson Mobile Communications AB Xperia Mini Pro Bootloader
    Fastboot command: fastboot -i 0x0fce 
    Flashing boot partition..
    target reported max download size of 536870912 bytes
    sending 'boot' (10812 KB)...
    [...]
    finished. total time: 0.742s
    target reported max download size of 536870912 bytes
    erasing 'system'...
    [...]
    finished. total time: 63.648s
    target reported max download size of 536870912 bytes
    erasing 'userdata'...
    [...]
    finished. total time: 126.309s
    Flashing oem partition..
    target reported max download size of 536870912 bytes
    sending 'oem' (221669 KB)...
    [...]
    finished. total time: 15.600s
    
    
    Flashing completed.
  4. Redémarrer le téléphone et configurer votre Sailfish :-)

Configurer Sailfish

Activer le mode Développeur et la connexion distante

  • Aller dans Réglages > Outils de développeur
  • Activer le Mode Développeur et la Connexion Distante
  • Définir un mot de passe et noter l'adresse ip
  • Se connecter en ssh à partir d'un ordinateur distant avec l'utilisateur 'nemo' et le mot de passe défini précédemment

Installation des mce-tools

$ devel-su    ---> Entrer le mot de passe défini précédemment
# pkcon refresh
# pkcon install mce-tools
# exit

Pour la suite, se référer à un précédent article : Nokia MCE Tools sur Sailfish OS

Installation d'Alien Davlik

Si vous avez les rpms :

# pkcon install-local aliendalvik.armv7hl.rpm apkd-android-settings.jolla.armv7hl.rpm

Références


dimanche 18 février 2018

:: Installation de Raspbian sur Raspberry Pi ::

Matériel

Raspberry Pi 3 Model B 1.2

  • 1.2 GHz 64 bit quad core ARM Cortex A53
  • Broadcom BCM2837
  • 1 Go SDRAM

Carte SD 16Go

PC sous Linux

Préparation de la carte SD

$ sudo dd if=/home/pi/raspian.img of=/dev/sdb bs=512M

Configuration Raspbian

Au 1er démarrage, l'installation se fait automatiquement avec les paramètres par défaut. Pour changer la configuration :

$ sudo raspi-config

WiFi en ligne de commande

Récupération du nom de l'interface wifi

$ ifconfig

Infos réseau

$ iwlist -i wlan0 scan

Configuration wpa_supplicant

  • en root (sudo -i préalable nécessaire)

    # wpa_passphrase "ssid" "password" >> /etc/wpa_supplicant/wpa_supplicant.conf
  • en mode utilisateur

    $ wpa_passphrase "ssid" "password" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf > /dev/null
  • à partir d'un fichier contenant la clé (/home/pi/psk.txt)

    # wpa_passphrase "ssid" `cat /home/pi/psk.txt` >> /etc/wpa_supplicant/wpa_supplicant.conf
    $ wpa_passphrase "ssid" `cat /home/pi/psk.txt` | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf > /dev/null

Références


dimanche 04 février 2018

:: Rundeck ::

Rappel

Aller dans le répertoire "rundeck"

PS C:\> cd D:\rundeck

rd-queue

Synopsis

rd-queue [*action*] [-h] [-e id] [-p project]

Actions

  • list (default) : liste les exécutions en cours
  • follow : suit le retour de l'exécution spécifiée par son id
  • kill : tue l'exécution en cours spécifié par son id

Options

Option Description Actions
-h, --help Affiche l'aide
-p Nom du projet list
-e, --eid Id d'exécution follow, kill
-q, --quiet Mode silencieux follow
-r, --progress Affiche la progression de l'exécution follow
-t, --restart Affiche la log depuis le début follow

Lister exécutions en cours

> .\tools\bin\rd-queue list -p MyProject
Queue: x items
[id] NomJob <http://lien_vers_details_du_job>
...

Suivre exécution d'un job

Avec affichage de la sortie

> .\tools\bin\rd-queue follow -e 183
[...]
[183] execution status: success

Avec l'indicateur de progression

> .\tools\bin\rd-queue follow -e 183 --progress
################
[183] execution status: success

rd-jobs

[ à suivre ]


:: MultiMarkdown ::

Basics

What Syntax
Italic *Italic* or _Italic_
*Bold * **Bold** or __Italic__
Both ***Both*** or ___Both___
Block Quote > Block Quote (like email)
List *, + or -
Ordered 1. on first item,
Header ### Header
HRule --- or *** on empty line

Links

What Syntax
Basic [CNN](http://cnn.com)
Reference [link][linkid] for [link][linkid] then [linkid]: http://cnn.com "title" on its own line elsewhere.
Def Link [linkid]: http://cnn.com "title" on its own line elsewhere.
Short <http://cnn.com> <pierce@twinforces.com>
Internal [Links][] (any header name)
Footnote1 [^footnote] def footnote later
Def Footnote [^footnote]: text
Image ![Image Name](URL "title") for an image
![Image Ref] then later def
![Caption][Image Ref] then later def
Image Def ```[Image Ref]: URL "Title" width="45px" height="45px"

Tables

Table caption, also works as a reference
First Header Second Header Third Header
First row Bold Very long data entry
Second row Cell that spans across two columns

| First Header | Second Header | Third Header | | :------------ | :-----------: | -------------------: |
| : Left align | : centered : | Right align : | | First row | **Bold** | Very long data entry | | Second row | Cell that spans across two columns ||
[Table caption, also works as a reference][section-mmd-tables-table1]

Critic

What Syntax
{--a delete. --} a delete. {-- remove --}
{++an add. ++} {++ add++}
swap {~~from~>to~~} {\~\~\from\~>to\~\~}
{==a highlight==} {\=\=highlight\=\=}
Comment, which you can't see{>>What is it a test of?<<}. {>>Comment?\<\<}

  1. This is the footnote ↩