<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Postmarket OS on Florian RICHER</title><link>https://mrdev023.fr/tags/postmarket-os/</link><description>Recent content in Postmarket OS on Florian RICHER</description><generator>Hugo -- gohugo.io</generator><language>fr</language><lastBuildDate>Sun, 06 Oct 2024 00:03:38 +0200</lastBuildDate><atom:link href="https://mrdev023.fr/tags/postmarket-os/index.xml" rel="self" type="application/rss+xml"/><item><title>Compiler un paquet Postmarket OS</title><link>https://mrdev023.fr/p/pmbootstrap-own-paquet/</link><pubDate>Sun, 18 Feb 2024 00:00:00 +0000</pubDate><guid>https://mrdev023.fr/p/pmbootstrap-own-paquet/</guid><description>&lt;h2 id="à-propos-de-postmarket-os"&gt;À propos de Postmarket OS
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://postmarketos.org/" target="_blank" rel="noopener"
&gt;Postmarket OS&lt;/a&gt; est une distribution basée sur &lt;a class="link" href="https://www.alpinelinux.org/" target="_blank" rel="noopener"
&gt;Alpine&lt;/a&gt; conçut pour fonctionner sur téléphone, tablette
ou sur Raspberry PI.
La communauté autour du projet propose un ensemble d&amp;rsquo;outils comme &lt;code&gt;pmbootstrap&lt;/code&gt; qui permet de configurer et d&amp;rsquo;installer Postmarket OS sur son téléphone.
On peut aussi l&amp;rsquo;utiliser pour compiler son propre paquet et l&amp;rsquo;installer sur son téléphone facilement.&lt;/p&gt;
&lt;h2 id="configuration-de-notre-environnement-de-travail"&gt;Configuration de notre environnement de travail
&lt;/h2&gt;&lt;p&gt;Avant de pouvoir l&amp;rsquo;utiliser, il faut d&amp;rsquo;abord l&amp;rsquo;installer depuis ce &lt;a class="link" href="https://wiki.postmarketos.org/wiki/Pmbootstrap" target="_blank" rel="noopener"
&gt;lien&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Une fois installé et configuré, il faut d&amp;rsquo;abord préparer son environnement de travail.
Il est parfois nécessaire de mettre à jour le repository pmaports en local.
On peut le faire assez facilement avec la commande :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap pull
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;em&gt;Met à jour le repository &lt;a class="link" href="https://wiki.postmarketos.org/wiki/Pmaports.git" target="_blank" rel="noopener"
&gt;pmaports.git&lt;/a&gt; cloné en local.&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Le repo pmaports.git stocke tous les paquets Alpine avec le fichier &lt;code&gt;APKBUILD&lt;/code&gt; utilisé par le serveur de compilation.&lt;/p&gt;
&lt;p&gt;Le fonctionnement est similaire à &lt;code&gt;PKGBUILD&lt;/code&gt; pour les utilisateurs de &lt;a class="link" href="https://archlinux.org/" target="_blank" rel="noopener"
&gt;Archlinux&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ce fichier contient toute la procédure pour préparer les sources, compiler le paquet depuis les sources, le numéro de version
ainsi que la procédure pour vérifier si le paquet fonctionne correctement.
Généralement on utilise les tests du projet comme les tests unitaires ou les tests fonctionnels.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On peut également mettre à jour le cache de la commande &lt;code&gt;apk&lt;/code&gt; même si c&amp;rsquo;est pas forcément obligatoire.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;em&gt;Met à jour le cache de la commande APK depuis l&amp;rsquo;environnement de travail&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;L&amp;rsquo;environnement de travail se situe par défaut dans le dossier &lt;code&gt;$HOME/.local/var/pmbootstrap/&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si on a déjà un environnement de travail en cours et qu&amp;rsquo;il contient du cache ou un travail en cours, on peut le réinitialiser assez facilement avec la commande :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap zap
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;em&gt;Supprime le dossier de la commande chroot pour repartir de 0&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La commande chroot permet de changer la racine Linux.
Par exemple, on peut faire &lt;code&gt;chroot $HOME/mon_dossier&lt;/code&gt; et à partir de ce moment-là, &lt;code&gt;/&lt;/code&gt; pointera vers &lt;code&gt;$HOME/mon_dossier&lt;/code&gt; dans notre shell actuel.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est très utilisé par pmbootstrap pour configurer le système Alpine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour ceux qui veulent utiliser une autre branche, on peut également changer la branche disponible sur le repository.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git -C &lt;span class="nv"&gt;$workdir&lt;/span&gt; checkout &lt;span class="o"&gt;[&lt;/span&gt;branch&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;$workdir&lt;/code&gt; par défaut se situe dans le dossier &lt;code&gt;$HOME/.local/var/pmbootstrap/cache_git/pmaports/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Exemple de branche utile : &lt;code&gt;kde-nightly&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="compilation-de-notre-paquet-alpine"&gt;Compilation de notre paquet Alpine
&lt;/h2&gt;&lt;p&gt;Maintenant, on va pouvoir compiler n&amp;rsquo;importe quel paquet avec la commande.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap build &lt;span class="o"&gt;[&lt;/span&gt;nom_du_paquet&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Par exemple, on peut compiler plasma-mobile (Attention le paquet est long à compiler)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap build plasma-mobile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Par défaut, pmbootstrap va recompiler l&amp;rsquo;intégralité des dépendances du projet pour s&amp;rsquo;assurer que notre test sera reproductible.
Cependant, lorsque l&amp;rsquo;on souhaite juste tester un truc, ça peut-être ultra long.&lt;/p&gt;
&lt;p&gt;On peut donc utiliser deux options pour nous aider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-i&lt;/code&gt; Permet de dire de compiler uniquement les dépendances du paquet défini dans le fichier &lt;code&gt;APKBUILD&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-n&lt;/code&gt; Permet d&amp;rsquo;éviter de compiler les dépendances du paquet défini dans le fichier &lt;code&gt;APKBUILD&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Avec le combot des deux options, ça nous évite de tout recompiler.&lt;/p&gt;
&lt;p&gt;On a aussi l&amp;rsquo;option &lt;code&gt;-mp&lt;/code&gt; qui peut-être pratique pour changer de mirroir si le téléchargement est lent ou si l&amp;rsquo;on souhaite télécharger des paquets nightly.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Un mirroir est un serveur utilisé pour télécharger les dépendances&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On utilise cette option de cette manière:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -mp https://nightly.postmarketos.org/plasma-mobile/packages/ &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -mp http://mirror.postmarketos.org/postmarketos/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;On a aussi d&amp;rsquo;autres options comme:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--details-to-stdout&lt;/code&gt; : Affiche le fichier de log dans la console&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-j N&lt;/code&gt; : Défini le nombre de core CPU utilisé pour la compilation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-t [En seconde]&lt;/code&gt; : Le nombre de secondes sans nouveau log dans le fichier avant d&amp;rsquo;abandonner la compilation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--src&lt;/code&gt; : Change les sources du paquet. Par défaut ce sont les sources définies dans le fichier &lt;code&gt;APKBUILD&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--arch [arch]&lt;/code&gt; : L&amp;rsquo;architecture CPU du téléphone&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un exemple concret d&amp;rsquo;une commande que j&amp;rsquo;ai utilisé pour recompiler ma version de plasma-mobile avec mes changements.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -mp https://nightly.postmarketos.org/plasma-mobile/packages/ &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -mp http://mirror.postmarketos.org/postmarketos/ &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --details-to-stdout &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -j &lt;span class="m"&gt;32&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;&lt;span class="c1"&gt;# Pour utiliser toute la puissance de mon CPU&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -t &lt;span class="m"&gt;3600&lt;/span&gt; -v &lt;span class="se"&gt;\ &lt;/span&gt;&lt;span class="c1"&gt;# La compilation est ultra longue donc pmbootstrap abandonne la build avant la fin de la compilation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; build plasma-mobile &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --src &lt;span class="nv"&gt;$home&lt;/span&gt;/plasma-mobile/ &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --arch aarch64 &lt;span class="se"&gt;\ &lt;/span&gt;&lt;span class="c1"&gt;# Mon téléphone utilise l&amp;#39;architecture aarch64 (ARM64)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -i &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -n
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Avant de compiler depuis le repository Nightly, il faut d&amp;rsquo;abord rajouter la clef de signature&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://nightly.postmarketos.org/plasma-mobile/pmos@local-662fcd2f.rsa.pub
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mv pmos@local-662fcd2f.rsa.pub &lt;span class="k"&gt;$(&lt;/span&gt;pmbootstrap config work&lt;span class="k"&gt;)&lt;/span&gt;/config_apk_keys/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Source : &lt;a class="link" href="https://wiki.postmarketos.org/wiki/Nightly" target="_blank" rel="noopener"
&gt;https://wiki.postmarketos.org/wiki/Nightly&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si vous souhaitez avoir plus d&amp;rsquo;informations, il suffit de taper la commande&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap build --help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Et pour avoir les arguments généraux&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap --help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="envoie-du-paquet-compilé-sur-le-téléphone"&gt;Envoie du paquet compilé sur le téléphone
&lt;/h2&gt;&lt;p&gt;Une fois le paquet compilé, il suffit de demander à &lt;code&gt;pmbootstrap&lt;/code&gt; de l&amp;rsquo;envoyer sur notre téléphone via la connexion SSH.
Avec &lt;code&gt;pmbootstrap&lt;/code&gt;, on utilise la commande &lt;code&gt;sideload&lt;/code&gt; comme dans l&amp;rsquo;exemple ci-dessous.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap sideload plasma-mobile &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --host &lt;span class="o"&gt;[&lt;/span&gt;SSH HOST&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --port &lt;span class="o"&gt;[&lt;/span&gt;SSH PORT&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --user &lt;span class="o"&gt;[&lt;/span&gt;SSH USER&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --arch &lt;span class="o"&gt;[&lt;/span&gt;ARCH&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --install-key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;On a les arguments suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--host [SSH HOST]&lt;/code&gt; (Ex: 192.168.1.1)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--port [SSH PORT]&lt;/code&gt; (Ex: 22)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--user [SSH USER]&lt;/code&gt; (Ex: 192.168.1.1)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--arch [ARCH]&lt;/code&gt; : Permet de modifier la valeur définie pour le téléphone (Ex : aarch64)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--install-key&lt;/code&gt; : Permet d&amp;rsquo;installer la clef utilisée pour la vérification des paquets de la machine actuelle.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;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&amp;rsquo;est pas compilé par le mainteneur original donc il suffit de rajouter notre signature.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour revenir en arrière, il suffit de taper la commande ci-dessous depuis le téléphone ou depuis la connexion SSH&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apk upgrade -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;APK va réinstaller les paquets depuis les repos officiels.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En cas de problème liée à des conflits de fichier, on peut utiliser cette commande&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apk fix --force
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Cette commande va forcer APK à écraser les fichiers en conflit.&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>