6.5 KiB
image_path | slug | title | date | description | project_link | draft | tags | ||
---|---|---|---|---|---|---|---|---|---|
https://postmarketos.org/logo.svg | pmbootstrap_own_package | Compiler sa propre version d'un package Postmarket OS | 2024-02-18T00:00:00Z | Installation de pmbootstrap et compilation de sa propre version d'un package Postmarket OS | none | true |
|
À propos de Postmarket OS
Postmarket OS est une distribution basé sur Alpine conçu pour fonctionner sur les téléphones, tablette
ou sur Raspberry PI.
La communauté autour du projet propose un ensemble d'outils comme pmbootstrap
qui permet de configurer et d'installer Postmarket OS sur son téléphone.
On peut aussi l'utiliser pour compiler son propre package et l'installer sur son téléphone facilement.
Configuration de notre environnement de travail
Avant de pouvoir l'utiliser, il faut d'abord l'installer depuis ce lien.
Une fois installé et configuré, il faut d'abord executer les commandes suivantes:
Met à jour le repository pmaports.git cloné en local.
Le repo pmaports.git stocke tous les packages Alpine avec le fichier fichier
APKBUILD
utilisé par le serveur de compilation.Le fonctionnement est similaire à
PKGBUILD
pour les utilisateurs de ArchlinuxCe fichier contient toute la procédure pour prepare les sources, compiler le package depuis les sources, le numéro de version ainsi que la procédure pour vérifier si le package fonctionne correctement. Généralement on utilise les tests du projet comme les tests unitaires ou les tests fonctionnels.
pmbootstrap pull
Met à jour le cache de la commande APK depuis l'environnement de travail
L'environnement de travail ce situe par défaut dans le dossier
$HOME/.local/var/pmbootstrap/
pmbootstrap update
Supprime le dossier de la commande chroot
La commande chroot permet de changer la racine Linux. Par exemple, on peut faire
chroot $HOME/mon_dossier
et à partir de ce moment là,/
pointera vers$HOME/mon_dossier
dans notre shell actuel.C'est très utilisé par pmbootstrap pour configurer le système Alpine. Ça évite de devoir faire une VM ou un container Linux juste pour changer quelque fichier.
Dans notre cas, il correspont au système pour le téléphone utilisé pour le configuré avant de l'installer ou de le tester sur notre téléphone.
Par défaut, il se situe dans le dossier
$HOME/.local/var/pmbootstrap/cache_git/pmaports/
pmbootstrap zap
[Optionnel] Changer la branche du repo pmaports.git
$workdir
par défaut se situe dans le dossier$HOME/.local/var/pmbootstrap/cache_git/pmaports/
Example de branche utile :kde-nightly
git -C $workdir checkout [branch]
Compilation de notre package Alpine
Pour compiler le package, on utilise la commande pmbootstrap build [package_name]
.
Example de commande
pmbootstrap \
-mp https://nightly.postmarketos.org/plasma-mobile/packages/ \
-mp http://mirror.postmarketos.org/postmarketos/ \
--details-to-stdout \
-j 32 \
-t 3600 -v \
build plasma-mobile \
--src $home/plasma-mobile/ \
--arch aarch64 \
-i \
-n
Dans cette example, j'ai utilisé les arguments suivants:
-mp
: Permet de définir un repository Alpine pour installer les packages.
Dans l'example, j'utilise deux repos
https://nightly.postmarketos.org/plasma-mobile/packages/
: Contient la version en cours de développement de KDE Plasma Mobile
http://mirror.postmarketos.org/postmarketos/
: Le mirroir officiel de Postmarket OS
--details-to-stdout
: Affiche les logs stocké dans le fichier dans la console-j N
: Défini le nombre core utilisé pour la compilation
Dans mon cas, 32 core sur mon CPU.
-t [En seconde]
: Le nombre de secondes sans nouveau log dans le fichier avant d'abandonner la compilation
Changé à 3600 secondes car plasma-mobile est assez long à compilé et il ne génère aucun log.
-v
: Mode verbeux pour les logs dans le fichier--src
: Change les sources du package. Par défaut ce sont les sources défini dans le fichierAPKBUILD
Pour ma part, je souhaite utiliser mon propre code pour tester
--arch [arch]
: L'architecture CPU du téléphone
Pour ma part, mon téléphone est en arm64v8 donc
aarch64
-n
: Permet d'éviter de compiler les dépendances du package.
En général, c'est pas recommandé par Alpine mais dans mon cas, je souhaite utilisé les dépendances depuis le repo mirroir officiel de Postmarket OS.
-i
: Permet de dire de compiler uniquement les dépendances du package défini dans le fichierAPKBUILD
Dans mon cas, il vient en complément de l'option
-n
, ça me permet de m'assurer de ne rien build. Sans cette option, il risque de compiler les sous-dépendances du package comme le noyau Linux.
Pour plus d'informations, il suffit de taper la commande
pmbootstrap build --help
Et pour avoir les arguments générals
pmbootstrap --help
Envoie du package sur le téléphone
Une fois le package compilé, il suffit de demandé à pmbootstrap
de l'envoyé sur notre téléphon via la connexion SSH.
Avec pmbootstrap
, on utilise la commande sideload
comme dans l'example ci-dessous.
pmbootstrap sideload plasma-mobile \
--host [SSH HOST] \
--port [SSH PORT] \
--user [SSH USER] \
--arch [ARCH] \
--install-key
On a les arguments suivants:
--host [SSH HOST]
(Ex: 192.168.1.1)--port [SSH PORT]
(Ex: 22)--user [SSH USER]
(Ex: 192.168.1.1)--arch [ARCH]
: Permet de modifier la valeur défini pour le téléphone (Ex: aarch64)--install-key
: Permet d'installer la clef utilisé pour la vérification des packages de la machine actuelle.
Tout gestionnaire de paquet comme APK, vérifie si le paquet est valide par rapport à la signature électronique du mainteneur du paquet. Dans notre cas, la signature ne sera pas valide car le paquet n'est pas compilé par le mainteneur original donc ont rajoute notre signature.
Pour revenir en arrière, il suffit de taper la commande ci-dessous depuis le téléphone ou depuis la connexion SSH
APK va réinstaller les paquets depuis les repos officiels.
sudo apk upgrade -a
En cas de problème liée à des conflits de fichier, on peut utiliser cette commande
Cette commande va forcer APK à écraser les fichiers en conflit.
sudo apk fix --force