<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aqaqland</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aqaqland"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Aqaqland"/>
	<updated>2026-05-01T17:28:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.23.0&amp;diff=31585</id>
		<title>Release Notes for Alpine 3.23.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.23.0&amp;diff=31585"/>
		<updated>2025-12-02T02:40:55Z</updated>

		<summary type="html">&lt;p&gt;Aqaqland: remove ircservices&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As always, make sure to read [[Upgrading Alpine to a new major release]] when upgrading to a new release.&lt;br /&gt;
&lt;br /&gt;
If you experience any issues with the upgrade, please let us know and file an issue in our repositories.&lt;br /&gt;
&lt;br /&gt;
== Important changes ==&lt;br /&gt;
&lt;br /&gt;
=== {{pkg|apk-tools}} v3 ===&lt;br /&gt;
&lt;br /&gt;
After 5 years of development in the &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; branch of apk-tools, apk v3 is now ready for Alpine v3.23.0. This should be a safe and seamless upgrade from apk v2, but might has some breaking changes if you use &amp;lt;code&amp;gt;libapk&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note that we will only transition the package manager to v3, but will keep the v2 index and package format. We plan to move to the v3 index and package format after Alpine v3.23.&lt;br /&gt;
&lt;br /&gt;
For more information, take a look at the release notes of apk v3: TODO&lt;br /&gt;
&lt;br /&gt;
=== /usr merge ===&lt;br /&gt;
&lt;br /&gt;
New installations can opt-in to being /usr-merged, by setting the &amp;lt;code&amp;gt;BOOTSTRAP_USR_MERGED&amp;lt;/code&amp;gt; environment variable to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; before running &amp;lt;code&amp;gt;setup-disk&amp;lt;/code&amp;gt;. Manual migration is also possible by installing the &amp;lt;code&amp;gt;merge-usr&amp;lt;/code&amp;gt; package and running its binary as root. For more details see the [https://alpinelinux.org/posts/2025-10-01-usr-merge.html official announcement].&lt;br /&gt;
&lt;br /&gt;
=== {{Pkg|linux-stable}} replaces {{Pkg|linux-edge}} ===&lt;br /&gt;
&lt;br /&gt;
For years, {{Pkg|linux-lts}} and {{Pkg|linux-edge}} grew apart and developed their own kernel configs, different architectures, etc.&lt;br /&gt;
&lt;br /&gt;
Now {{Pkg|linux-edge}} gets replaced with {{Pkg|linux-stable}} which has the identical configuration as {{Pkg|linux-lts}}, but follows the stable releases instead of the long-term releases (see https://kernel.org/).&lt;br /&gt;
&lt;br /&gt;
If you had {{Pkg|linux-edge}} installed, apk automatically installs {{Pkg|linux-stable}} as a replacement. There is a reasonably amount of kernel config differences, if you need a config option that existed previously in {{Pkg|linux-edge}}, please open a issue to add the required option to {{Pkg|linux-lts}}. Also this change might involve manual boot loader configuration, as the kernel has been renamed and follows {{Pkg|linux-lts}}&#039; packaging recipe.&lt;br /&gt;
&lt;br /&gt;
== Significant changes ==&lt;br /&gt;
&lt;br /&gt;
=== Static binaries are built as PIE ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: https://gitlab.alpinelinux.org/alpine/aports/-/issues/17294#note_524739}}&lt;br /&gt;
&lt;br /&gt;
=== LLVM metapackage ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
=== nftrules ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/67137}}&lt;br /&gt;
&lt;br /&gt;
=== curl HTTP/3 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/89382}}&lt;br /&gt;
&lt;br /&gt;
== Note-worthy updates ==&lt;br /&gt;
&lt;br /&gt;
As always, many packages were upgraded. Make sure to read the individual release notes of the projects you use.&lt;br /&gt;
&lt;br /&gt;
* BIRD 3.1.4&lt;br /&gt;
* busybox 1.37.0&lt;br /&gt;
* Deno 2.3.1&lt;br /&gt;
* ffmpeg 8&lt;br /&gt;
* GCC 15.2.0&lt;br /&gt;
* GNOME 49&lt;br /&gt;
* Go 1.25&lt;br /&gt;
* ISC BIND 9.20.16&lt;br /&gt;
* ISC Kea 3.0.3&lt;br /&gt;
* KDE Plasma 6.5.2&lt;br /&gt;
* Linux 6.18&lt;br /&gt;
* LLVM 21.1.2&lt;br /&gt;
* LXQt 2.30&lt;br /&gt;
* .NET 10&lt;br /&gt;
* nginx 1.28&lt;br /&gt;
* NodeJS 24.11.1 (LTS)&lt;br /&gt;
* PHP 8.5.0&lt;br /&gt;
* Qt 6.10&lt;br /&gt;
* Ruby 3.4.7&lt;br /&gt;
* Rust 1.91.1&lt;br /&gt;
* wlroots 0.19&lt;br /&gt;
* zigbee2mqtt 2.6.3&lt;br /&gt;
&lt;br /&gt;
=== GCC 15 ===&lt;br /&gt;
&lt;br /&gt;
=== LLVM 21 ===&lt;br /&gt;
&lt;br /&gt;
=== ifupdown-ng 0.13 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
=== GNOME 49 ===&lt;br /&gt;
&lt;br /&gt;
https://release.gnome.org/49/&lt;br /&gt;
&lt;br /&gt;
* We kept gnome-session (and gdm) at 48 because of the [https://release.gnome.org/49/developers/index.html#stronger-systemd-dependencies stricter systemd dependency] ({{Issue|17514}})&lt;br /&gt;
* Our gdk-pixbuf didn&#039;t enable the glycin sandboxing library yet ({{Issue|17550}})&lt;br /&gt;
&lt;br /&gt;
=== ffmpeg 8 ===&lt;br /&gt;
&lt;br /&gt;
The {{Pkg|ffmpeg}} package got upgraded from version 6 to 8.&lt;br /&gt;
&lt;br /&gt;
Most consumers of ffmpeg are now built against ffmpeg 8, but some packages might still use ffmpeg 6 or 7, depending on its API compatability. Therefore the {{Pkg|ffmpeg6}} and {{Pkg|ffmpeg7}} packages are also still available.&lt;br /&gt;
&lt;br /&gt;
Also note that {{Pkg|ffmpeg4}} got removed and all consumers were migrated to at least ffmpeg 6.&lt;br /&gt;
&lt;br /&gt;
=== ifstate 2 ===&lt;br /&gt;
&lt;br /&gt;
The declarative network configuration tool {{Pkg|ifstate}} has been upgraded from version 1.x to version 2. It is not possible to use the old configuration file of ifstate 1.x with ifstate 2.x! The configuration file &#039;&#039;&#039;must&#039;&#039;&#039; be adapted to the new schema and file name to prevent breaking the host&#039;s network the next time it is booted! More information about the required config changes can be found in the [https://ifstate.net/2.2/docs/upgrades/#ifstate-20 ifstate documentation].&lt;br /&gt;
&lt;br /&gt;
== Significant removals ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== {{Pkg|binutils-gold}} removed ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: not done yet and maybe not in 3.23}}&lt;br /&gt;
&lt;br /&gt;
The gold linker got deprecated by upstream on February 2025 and in Alpine v3.23 we removed it from our repositories.&lt;br /&gt;
&lt;br /&gt;
Previously this has been hold because of Go&#039;s use of the gold linker for ARM architectures, but these days the default ld linker works as expected.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== More Qt5 removals ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
=== ffmpeg4 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
=== LLVM 17 ===&lt;br /&gt;
&lt;br /&gt;
=== rssh ===&lt;br /&gt;
&lt;br /&gt;
rssh package has been removed due to the dead upstream.&lt;br /&gt;
&lt;br /&gt;
=== ircservices ===&lt;br /&gt;
&lt;br /&gt;
unmaintained upstream for years&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;[[Release Notes for Alpine 3.22.0|← Previous page: Release Notes for Alpine 3.22.0]]&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aqaqland</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.23.0&amp;diff=30617</id>
		<title>Release Notes for Alpine 3.23.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.23.0&amp;diff=30617"/>
		<updated>2025-07-29T12:57:51Z</updated>

		<summary type="html">&lt;p&gt;Aqaqland: /* Significant removals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As always, make sure to read [[Upgrading Alpine to a new major release]] when upgrading to a new release.&lt;br /&gt;
&lt;br /&gt;
If you experience any issues with the upgrade, please let us know and file an issue in our repositories.&lt;br /&gt;
&lt;br /&gt;
{{Note|We&#039;re beginning to work on the roadmap for Alpine Linux v3.23. To view the upcoming changes, see {{Issue|17294}}.}}&lt;br /&gt;
&lt;br /&gt;
== Important changes ==&lt;br /&gt;
&lt;br /&gt;
=== {{pkg|apk-tools}} v3 ===&lt;br /&gt;
&lt;br /&gt;
After 5 years of development in the &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; branch of apk-tools, apk v3 is now ready for Alpine v3.23.0. This should be a safe and seamless upgrade from apk v2, but might has some breaking changes if you use &amp;lt;code&amp;gt;libapk&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note that we will only transition the package manager to v3, but will keep the v2 index and package format. We plan to move to the v3 index and package format after Alpine v3.23.&lt;br /&gt;
&lt;br /&gt;
For more information, take a look at the release notes of apk v3: TODO&lt;br /&gt;
&lt;br /&gt;
=== /usr merge ===&lt;br /&gt;
&lt;br /&gt;
New installations are now /usr-merged, and people are encouraged to merge their systems after upgrade. See the [https://alpinelinux.org/posts/2025-09-01-usr-merge.html| official announcement] for more details&lt;br /&gt;
&lt;br /&gt;
=== {{Pkg|linux-stable}} replaces {{Pkg|linux-edge}} ===&lt;br /&gt;
&lt;br /&gt;
For years, {{Pkg|linux-lts}} and {{Pkg|linux-edge}} grew apart and developed their own kernel configs, different architectures, etc.&lt;br /&gt;
&lt;br /&gt;
Now {{Pkg|linux-edge}} gets replaced with {{Pkg|linux-stable}} which has the identical configuration as {{Pkg|linux-lts}}, but follows the stable releases instead of the long-term releases (see https://kernel.org/).&lt;br /&gt;
&lt;br /&gt;
If you had {{Pkg|linux-edge}} installed, apk automatically installs {{Pkg|linux-stable}} as a replacement. There is a reasonably amount of kernel config differences, if you need a config option that existed previously in {{Pkg|linux-edge}}, please open a issue to add the required option to {{Pkg|linux-lts}}. Also this change might involve manual boot loader configuration, as the kernel has been renamed and follows {{Pkg|linux-lts}}&#039; packaging recipe.&lt;br /&gt;
&lt;br /&gt;
== Significant changes ==&lt;br /&gt;
&lt;br /&gt;
=== Static binaries are built as PIE ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: https://gitlab.alpinelinux.org/alpine/aports/-/issues/17294#note_524739}}&lt;br /&gt;
&lt;br /&gt;
=== LLVM metapackage ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO}}&lt;br /&gt;
&lt;br /&gt;
== Note-worthy updates ==&lt;br /&gt;
&lt;br /&gt;
As always, many packages were upgraded. Make sure to read the individual release notes of the projects you use.&lt;br /&gt;
&lt;br /&gt;
* BIRD TODO&lt;br /&gt;
* busybox TODO&lt;br /&gt;
* Deno TODO&lt;br /&gt;
* GCC TODO&lt;br /&gt;
* GNOME TODO&lt;br /&gt;
* Go TODO&lt;br /&gt;
* ISC BIND TODO&lt;br /&gt;
* KDE Plasma TODO&lt;br /&gt;
* Linux TODO&lt;br /&gt;
* LLVM TODO&lt;br /&gt;
* LXQt TODO&lt;br /&gt;
* nginx TODO&lt;br /&gt;
* NodeJS TODO (LTS)&lt;br /&gt;
* PHP TODO&lt;br /&gt;
* Qt TODO&lt;br /&gt;
* Ruby TODO&lt;br /&gt;
* Rust TODO&lt;br /&gt;
* wlroots TODO&lt;br /&gt;
* zigbee2mqtt TODO&lt;br /&gt;
&lt;br /&gt;
== Significant removals ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== {{Pkg|binutils-gold}} removed ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: not done yet and maybe not in 3.23}}&lt;br /&gt;
&lt;br /&gt;
The gold linker got deprecated by upstream on February 2025 and in Alpine v3.23 we removed it from our repositories.&lt;br /&gt;
&lt;br /&gt;
Previously this has been hold because of Go&#039;s use of the gold linker for ARM architectures, but these days the default ld linker works as expected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&amp;lt;center&amp;gt;[[Release Notes for Alpine 3.22.0|← Previous page: Release Notes for Alpine 3.22.0]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rssh ===&lt;br /&gt;
&lt;br /&gt;
rssh package has been removed due to the dead upstream.&lt;/div&gt;</summary>
		<author><name>Aqaqland</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.22.0&amp;diff=29876</id>
		<title>Release Notes for Alpine 3.22.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.22.0&amp;diff=29876"/>
		<updated>2025-05-20T13:17:05Z</updated>

		<summary type="html">&lt;p&gt;Aqaqland: remove meilisearch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As always, make sure to read [[Upgrading Alpine to a new major release]] when upgrading to a new release.&lt;br /&gt;
&lt;br /&gt;
If you experience any issues with the upgrade, please let us know and file an issue in our repositories.&lt;br /&gt;
&lt;br /&gt;
== Important changes ==&lt;br /&gt;
&lt;br /&gt;
== Significant changes ==&lt;br /&gt;
&lt;br /&gt;
=== apk-tools ===&lt;br /&gt;
&lt;br /&gt;
This release is the last release using apk-tools v2.14. The next Alpine v3.23 will include apk-tools v3. The packages and index format are still using the legacy v2 format.&lt;br /&gt;
&lt;br /&gt;
There are a number of new changes in the new apk-tools release. To test apk-tools v3, [https://wiki.alpinelinux.org/wiki/Upgrading_Alpine_Linux_to_a_new_release_branch#Upgrading_to_Edge upgrade to Alpine edge, enable the testing repository] and install {{pkg|apk-tools3}}.&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: if edge upgrades to apk-tools 3, remove the testing repo and apk-tools3 package mention}}&lt;br /&gt;
&lt;br /&gt;
=== KDE Plasma ===&lt;br /&gt;
&lt;br /&gt;
The X11 session for KDE Plasma has been removed. If you had {{pkg|plasma-workspace-x11|branch=v3.21|arch=}} installed make sure to remove it from {{path|/etc/apk/world}}. Wayland is the only available option now.&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|sdl3}} and {{pkg|sdl2-compat}} were moved to the community repository and are now the default SDL provider. To force the installation of {{pkg|sdl2}}, use &amp;lt;code&amp;gt;apk add sdl2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Adwaita Fonts ===&lt;br /&gt;
&lt;br /&gt;
As a result of [https://release.gnome.org/48/#new-fonts GNOME&#039;s switch] to {{pkg|adwaita-fonts}}, the default font for GTK-based applications (e.g. {{pkg|vte3}} or {{pkg|libadwaita}} Applications) was changed. If you want to revert or override the fonts, you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ apk add font-cantarell font-adobe-source-code-pro&lt;br /&gt;
$ gsettings set org.gnome.desktop.interface font-name &#039;Cantarell 11&#039;&lt;br /&gt;
$ gsettings set org.gnome.desktop.interface monospace-font-name &#039;Source Code Pro 11&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{pkg|adwaita-fonts}} is pulled in as a dependency of some packages since it broke the default behaviour for various applications.&lt;br /&gt;
&lt;br /&gt;
=== GeoClue ===&lt;br /&gt;
&lt;br /&gt;
Since Mozilla Location Services (MLS), which were used as the geolocation service in geoclue, [https://discourse.mozilla.org/t/retiring-the-mozilla-location-service/128693 has been retired by Mozilla], Alpine switched to [https://beacondb.net/ beaconDB] as the default geolocation provider. {{MR|76764}}&lt;br /&gt;
&lt;br /&gt;
=== BIRD Routing Daemon ===&lt;br /&gt;
&lt;br /&gt;
The {{pkg|bird|repo=community}} routing daemon package has been upgrade to version 3 which introduces a new multi-threaded architecture. A side effect of this change is [https://trubka.network.cz/pipermail/bird-users/2024-December/017973.html significantly increased memory consumption] of the daemon. This update is configuration-compatible with BIRD v2 but there are some behavioral backwards incompatibilities. Users should read the [https://gitlab.nic.cz/labs/bird/-/blob/stable-v3.0/doc/migration-bird3.md migration guide]. Notably the format of &amp;lt;tt&amp;gt;show route all&amp;lt;/tt&amp;gt; has changed as has the format of the logs, which may impact scripts and automation that consume those outputs. Users who require BIRD v2 should install the {{pkg|bird2|repo=community}} package instead.&lt;br /&gt;
&lt;br /&gt;
== Note-worthy updates ==&lt;br /&gt;
&lt;br /&gt;
As always, many packages were upgraded. Make sure to read the individual release notes of the projects you use.&lt;br /&gt;
&lt;br /&gt;
* Linux TODO&lt;br /&gt;
* busybox TODO&lt;br /&gt;
* GCC TODO&lt;br /&gt;
* LLVM TODO&lt;br /&gt;
* Go TODO&lt;br /&gt;
* Rust TODO&lt;br /&gt;
* PHP TODO&lt;br /&gt;
* GNOME TODO&lt;br /&gt;
* KDE Plasma TODO&lt;br /&gt;
* LXQt TODO&lt;br /&gt;
* Qt TODO&lt;br /&gt;
* wlroots TODO&lt;br /&gt;
* ISC BIND 9.20.TODO&lt;br /&gt;
* BIRD 3.1.TODO&lt;br /&gt;
&lt;br /&gt;
=== LLVM ===&lt;br /&gt;
&lt;br /&gt;
LLVM 20 is available as {{pkg|llvm}}/{{pkg|clang}} (or {{pkg|llvm20}}/{{pkg|clang20}} explictly) additionally to LLVM 19, 18, 17, 16 and 15. ({{MR|80901}}, {{MR|82502}})&lt;br /&gt;
&lt;br /&gt;
LLD is now also splitted per version and is available as {{pkg|lld20}} (default for {{pkg|lld}}), {{pkg|lld19}} and {{pkg|lld18}}. ({{MR|81774}})&lt;br /&gt;
&lt;br /&gt;
== Significant removals ==&lt;br /&gt;
&lt;br /&gt;
=== LXD ===&lt;br /&gt;
&lt;br /&gt;
LXD was moved to the testing repository and is therefore not available on Alpine Linux 3.22. It was deprecated in favor of {{pkg|incus}} and {{pkg|incus-feature}} (feature branch).&lt;br /&gt;
&lt;br /&gt;
Take a look at the [https://linuxcontainers.org/incus/docs/main/howto/server_migrate_lxd/ Migration Guide] on how to migrate from LXD to Incus using the {{pkg|incus-conversion}} or {{pkg|incus-feature-conversion}} package.&lt;br /&gt;
&lt;br /&gt;
=== Qt 5 ===&lt;br /&gt;
&lt;br /&gt;
On 26th of May 2025, Qt 5 will be unmaintained upstream. Therefore we&#039;re removing unused libraries from our repositories and are migrating the remaining packages to Qt 6.&lt;br /&gt;
&lt;br /&gt;
Applications that still use Qt 5 libraries won&#039;t be removed, but libraries without consumers in our repository will.&lt;br /&gt;
&lt;br /&gt;
For more information, see Issue {{Issue|17114}}.&lt;br /&gt;
&lt;br /&gt;
=== Meilisearch ===&lt;br /&gt;
&lt;br /&gt;
Meilisearch in aports has not been maintained for a long time.&lt;/div&gt;</summary>
		<author><name>Aqaqland</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_make_a_cross_architecture_chroot&amp;diff=28933</id>
		<title>How to make a cross architecture chroot</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_make_a_cross_architecture_chroot&amp;diff=28933"/>
		<updated>2025-02-06T06:43:13Z</updated>

		<summary type="html">&lt;p&gt;Aqaqland: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you have an ARM computer, you will find that some software is only available for x86_64. One possible solution is to have a full x86_64 virtual machine, but that has quite a lot of overhead from having to emulate the entire system. Fortunately, there is [https://qemu-project.gitlab.io/qemu/user/main.html QEMU User space emulation] which still uses the host kernel, so there is less overhead. This guide will show you how to make a chroot and enable transparent x86_64 binary execution using qemu and binfmt_misc.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
You should be familiar with the Linux command line.&lt;br /&gt;
&lt;br /&gt;
This guide is written assuming you have Alpine as the main install as well as putting Alpine in the chroot.&lt;br /&gt;
&lt;br /&gt;
Also, the commands shown assume you have &#039;&#039;&#039;root&#039;&#039;&#039; privileges. Either use &amp;lt;code&amp;gt;sudo/doas&amp;lt;/code&amp;gt; as needed (or &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; first).&lt;br /&gt;
&lt;br /&gt;
== Installing necessary software ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Repositories#Managing_repositories| Enable the Community Repository]]&#039;&#039;&#039; and install the &#039;&#039;&#039;qemu&#039;&#039;&#039; user mode binaries for the architectures you want to use, in this case x86_64 and i386:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|qemu-x86_64}} {{Pkg|qemu-i386}} {{Pkg|qemu-openrc}}}}&lt;br /&gt;
&lt;br /&gt;
Please note there are the &amp;lt;code&amp;gt;qemu-system-*&amp;lt;/code&amp;gt; packages, you don&#039;t want those since they are used for full virtual machine emulation.&lt;br /&gt;
&lt;br /&gt;
== Enable the &amp;lt;code&amp;gt;qemu-binfmt&amp;lt;/code&amp;gt; service and start it ==&lt;br /&gt;
&lt;br /&gt;
The qemu-binfmt script is an OpenRC init script that registers the binfmt_misc handlers when the service starts and unregisters them when the service stops. Add the service to the default runlevel and start it immediately:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add qemu-binfmt default&lt;br /&gt;
&amp;amp;#35; rc-service qemu-binfmt start}}&lt;br /&gt;
&lt;br /&gt;
== Make the chroot folder ==&lt;br /&gt;
&lt;br /&gt;
To keep it simple, we&#039;re just going to use the apk repositories specified on the host system. This guide assumes the &amp;lt;code&amp;gt;$CHROOT&amp;lt;/code&amp;gt; environment variable holds the directory where you want to make the chroot. Make the chroot directory and the &amp;lt;code&amp;gt;etc/apk&amp;lt;/code&amp;gt; subdirectory (which we&#039;ll copy the apk repositories file to):&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mkdir -p $CHROOT/etc/apk/}}&lt;br /&gt;
&lt;br /&gt;
Now copy the host&#039;s apk repositories into the chroot folder:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# cp /etc/apk/repositories $CHROOT/etc/apk/}}&lt;br /&gt;
&lt;br /&gt;
You&#039;ll also need to copy the &amp;lt;code&amp;gt;resolv.conf&amp;lt;/code&amp;gt; file into the chroot so it can have internet access:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# cp /etc/resolv.conf $CHROOT/etc/}}&lt;br /&gt;
&lt;br /&gt;
== Install &amp;lt;code&amp;gt;alpine-base&amp;lt;/code&amp;gt; into the chroot folder ==&lt;br /&gt;
&lt;br /&gt;
The {{Pkg|alpine-base}} meta package is all that&#039;s needed to have a fully working alpine system. The apk invocation used here has a few more options than what you might be used to:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add -p $CHROOT --initdb -U --arch x86_64 --allow-untrusted alpine-base}}&lt;br /&gt;
&lt;br /&gt;
Here&#039;s what all the options do:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;-p $CHROOT&amp;lt;/code&amp;gt;: Sets the root of the install to &amp;lt;code&amp;gt;$CHROOT&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;--initdb&amp;lt;/code&amp;gt;: Initialize a new package database.&lt;br /&gt;
*&amp;lt;code&amp;gt;-U&amp;lt;/code&amp;gt;: Alias for &amp;lt;code&amp;gt;--cache-max-age 1&amp;lt;/code&amp;gt;. Basically means don&#039;t install from cache.&lt;br /&gt;
*&amp;lt;code&amp;gt;--arch x86_64&amp;lt;/code&amp;gt;: Install x86_64 packages instead of native packages. Replace this with whichever architecture you want to emulate instead (e.g. &amp;lt;code&amp;gt;--arch x86&amp;lt;/code&amp;gt;).&lt;br /&gt;
*&amp;lt;code&amp;gt;--allow-untrusted&amp;lt;/code&amp;gt;: Install packages with untrusted signature or no signature. (This is needed since the keys for different architectures are different than what will be on your host. If you have the correct keys, you can copy them into the &amp;lt;code&amp;gt;$CHROOT/etc/apk/keys/&amp;lt;/code&amp;gt; directory and remove this flag).&lt;br /&gt;
&lt;br /&gt;
== Mount the virtual file systems into the chroot ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mount -t proc proc $CHROOT/proc/&lt;br /&gt;
&amp;amp;#35; mount -t sysfs sys $CHROOT/sys/&lt;br /&gt;
&amp;amp;#35; mount -o bind /dev/ $CHROOT/dev/&lt;br /&gt;
&amp;amp;#35; mount -o bind /dev/pts/ $CHROOT/dev/pts/&lt;br /&gt;
&amp;amp;#35; mount -o bind /run $CHROOT/run/}}&lt;br /&gt;
&lt;br /&gt;
==The exciting part: Enter the chroot==&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve followed all the steps, this part should be uneventful. The &amp;lt;code&amp;gt;chroot&amp;lt;/code&amp;gt; invocation uses the special command of &amp;lt;code&amp;gt;ash -l&amp;lt;/code&amp;gt; to run as a login shell and source &amp;lt;code&amp;gt;/etc/profile&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# chroot $CHROOT/ ash -l}}&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
If you get a &amp;lt;code&amp;gt;ERROR: ${package_name}.post-install: script exited with error 127&amp;lt;/code&amp;gt; while trying to add the alpine-base, that normally means that qemu binfmt_misc hasn&#039;t been setup properly. Check if the &amp;lt;code&amp;gt;qemu-$arch&amp;lt;/code&amp;gt; package has been installed and see if the binfmt_misc service is running. Remember to restart the service after adding a new architecture.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service qemu-binfmt restart}}&lt;br /&gt;
&lt;br /&gt;
You can also see if there is a &amp;lt;code&amp;gt;qemu-$arch&amp;lt;/code&amp;gt; entry in &amp;lt;code&amp;gt;/proc/sys/fs/binfmt_misc/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Programs that use [https://en.wikipedia.org/wiki/Netlink Netlink] (e.g. &amp;lt;code&amp;gt;ip addr&amp;lt;/code&amp;gt;) don&#039;t seem to work properly since qemu doesn&#039;t emulate the Netlink protocol properly.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
* [https://archive.is/ldO0C Transparently running binaries from any architecture in Linux with QEMU and binfmt_misc] (see the section titled &amp;lt;code&amp;gt;Emulating full ARM rootfs&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
[[Category:System Administration]]&lt;/div&gt;</summary>
		<author><name>Aqaqland</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.21.0&amp;diff=27417</id>
		<title>Release Notes for Alpine 3.21.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.21.0&amp;diff=27417"/>
		<updated>2024-09-27T10:19:39Z</updated>

		<summary type="html">&lt;p&gt;Aqaqland: bats changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Highlights ==&lt;br /&gt;
&lt;br /&gt;
* Rust 1.81&lt;br /&gt;
* GNOME 47&lt;br /&gt;
* KDE Plasma 6.1.5&lt;br /&gt;
&lt;br /&gt;
== GNOME 47 ==&lt;br /&gt;
&lt;br /&gt;
GNOME 47 made it into Alpine 3.21. Everything should work as expected. Make sure you read the GNOME 47 release notes: https://release.gnome.org/47/&lt;br /&gt;
&lt;br /&gt;
== Jellyfin ==&lt;br /&gt;
&lt;br /&gt;
Jellyfin now uses the recommended fork of ffmpeg called `jellyfin-ffmpeg` by default. If you want to change that, take a look at the `ffmpegpath` variable in `/etc/conf.d/jellyfin`. (!69924)&lt;br /&gt;
&lt;br /&gt;
== Bats ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;main/bats&amp;quot; was renamed to &amp;quot;main/bats-core&amp;quot;. Now there is a meta package &amp;quot;community/bats&amp;quot; which contains:&lt;br /&gt;
&lt;br /&gt;
* bats-core&lt;br /&gt;
* bats-file&lt;br /&gt;
* bats-support&lt;br /&gt;
* bats-assert&lt;/div&gt;</summary>
		<author><name>Aqaqland</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Sircbot&amp;diff=26595</id>
		<title>Sircbot</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Sircbot&amp;diff=26595"/>
		<updated>2024-03-08T02:29:15Z</updated>

		<summary type="html">&lt;p&gt;Aqaqland: Add sending message with lua library&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sircbot is a Minimalistic IRC bot based in Lua script.&lt;br /&gt;
&lt;br /&gt;
== Install sircbot ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|sircbot}} {{Pkg|lua-sircbot}}}}&lt;br /&gt;
&lt;br /&gt;
== Configure sircbot daemon ==&lt;br /&gt;
&lt;br /&gt;
Edit the configuration file located at {{Path|/etc/conf.d/sircbot}} and change the name, server, and channel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/conf.d/sircbot|...&lt;br /&gt;
sircbot_opts{{=}}&amp;quot;-n NICK -s SERVER&amp;quot;&lt;br /&gt;
sircbot_channels{{=}}&amp;quot;#channel&amp;quot;&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
It is the same to run sirbot directly.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ sircbot -s SERVER -n NICK &#039;#channel&#039;}}&lt;br /&gt;
&lt;br /&gt;
Sircbot would act as &amp;quot;daemon&amp;quot; joining server and channels thus do the following response.&lt;br /&gt;
&lt;br /&gt;
== Sending messages ==&lt;br /&gt;
&lt;br /&gt;
There are two ways to send messages, channel need be specified first in sirbot daemon.&lt;br /&gt;
&lt;br /&gt;
=== sircbot-send ===&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;$ echo &amp;quot;$MESSAGE&amp;quot; | sircbot-send &#039;#channel&#039;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== sircbot lua library ===&lt;br /&gt;
&lt;br /&gt;
{{Cat|lua_script|&amp;lt;nowiki&amp;gt;local sircbot = require(&#039;sircbot&#039;)&lt;br /&gt;
local client = sircbot.connect(&#039;#channel&#039;)&lt;br /&gt;
&lt;br /&gt;
client:send(&amp;quot;hello&amp;quot;)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Create sircbot scripts folders and files ==&lt;br /&gt;
&lt;br /&gt;
Sircbot will use an folder for the channel where is logged in. The folder path is: {{Path|/etc/sircbot.d/#channel}}&lt;br /&gt;
&lt;br /&gt;
For every message that goes to the channel, sircbot will run all scripts in /etc/sircbot.d/#channel/ with sender, message and channel name as arguments.[https://git-old.alpinelinux.org/hosted/sircbot/about/]&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Lets see an example:&lt;br /&gt;
&lt;br /&gt;
Our bot will be named &#039;&#039;kumquat&#039;&#039; and we will join at the #test channel in the irc.ddd.ddd server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/conf.d/sircbot|sircbot_opts{{=}}&amp;quot;-n kumquat -s irc.ddd.ddd&amp;quot;&lt;br /&gt;
sircbot_channels{{=}}&amp;quot;#test&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
Create folder bot. &lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mkdir /etc/sircbot.d/#test -p}}&lt;br /&gt;
&lt;br /&gt;
Create the Lua script file for our bot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/sircbot.d/#test/commands|&amp;lt;nowiki&amp;gt;#!/usr/bin/lua&lt;br /&gt;
&lt;br /&gt;
-- Scripts for kumquat in Lua&lt;br /&gt;
&lt;br /&gt;
args={...}&lt;br /&gt;
&lt;br /&gt;
sender=args[1]   	-- is the nickname of running the command on IRC&lt;br /&gt;
message=args[2] 	-- is the message or command typed&lt;br /&gt;
channel=args[3] 	-- is the channel name&lt;br /&gt;
&lt;br /&gt;
os.execute(&amp;quot;sleep &amp;quot; .. tonumber(1))&lt;br /&gt;
&lt;br /&gt;
-- This command will show: What can i do for you &amp;quot;nickname&amp;quot;?&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;kumquat&amp;quot;) &lt;br /&gt;
  if kumquatresult ~= nil then&lt;br /&gt;
  command=&amp;quot;echo &#039;What can i do for you &#039;&amp;quot;..sender..&amp;quot;&#039;?&#039; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;&lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This command will show: Hello there, amigo &amp;quot;nickname&amp;quot;&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;hi&amp;quot;)&lt;br /&gt;
  if kumquatresult ~= nil then&lt;br /&gt;
  command=&amp;quot;echo &#039;Hello there, amigo &#039;&amp;quot;..sender..&amp;quot;&#039;&#039; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;&lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This command will show the current UTC date and time&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;date&amp;quot;)&lt;br /&gt;
  if kumquatresult ~= nil then&lt;br /&gt;
  command=&amp;quot;date -u | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;&lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This command will do a search for a alpine linux package&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;apk search:[^%d]&amp;quot;)&lt;br /&gt;
if kumquatresult ~= nil then&lt;br /&gt;
  local strng = (string.sub(message, 12))&lt;br /&gt;
  command=&amp;quot;apk search&amp;quot;..strng..&amp;quot; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;    &lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
-- This command will resolve a host name and ip&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;host:[^%d]&amp;quot;)&lt;br /&gt;
if kumquatresult ~= nil then&lt;br /&gt;
  local strng = (string.sub(message, 6))&lt;br /&gt;
  command=&amp;quot;host &amp;quot;..strng..&amp;quot; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;    &lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This command will do a 3 times ping to a server or ip address&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;ping:[^%d]&amp;quot;)&lt;br /&gt;
if kumquatresult ~= nil then&lt;br /&gt;
  local strng = (string.sub(message, 6))&lt;br /&gt;
  command=&amp;quot;ping -c 3 &amp;quot;..strng..&amp;quot; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;    &lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Make the script to be executable&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# chmod +x /etc/sircbot.d/#test/commands}}&lt;br /&gt;
&lt;br /&gt;
== Giving life to the bot ==&lt;br /&gt;
&lt;br /&gt;
Starting sircbot daemon and adding service to boot.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service sircbot start &amp;amp;&amp;amp; rc-update add sircbot default}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If your bot is not responding as expected, an easy way to troubleshoot is to manually execute the script in /etc/sircbot.d/&amp;lt;#channelname&amp;gt;/&amp;lt;scriptname&amp;gt; with the three agruments.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ /etc/sircbot.d/&amp;lt;#channelname&amp;gt;/&amp;lt;scriptname&amp;gt; username hi &#039;&amp;lt;#channelname&amp;gt;&#039;}}&lt;br /&gt;
&lt;br /&gt;
If your bot responds as expected, then you know that your script works.  The problem is that sircbot is not executing the script.  Here are two likely causes:&lt;br /&gt;
&lt;br /&gt;
# Sircbot is case-sensitive when looking for the channel directory for a script to execute.  For example, if you have a channel named &amp;quot;#Alpine&amp;quot;, sircbot will look for /etc/sircbot.d/#Alpine/*.  If that pathway isn&#039;t exactly right, then sircbot will skip that folder.  In our example, if you have /etc/sircbot.d/#alpine/script, sircbot will not execute anything in that folder.  To fix, simply rename the folder to /etc/sircbot.d/#Alpine/&lt;br /&gt;
# Sircbot doesn&#039;t execute scripts that have a &#039;.&#039; in the name.  For example a script named &#039;listen.lua&#039; will not be executed.  Simply rename the script to &#039;listen&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Aqaqland</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Sircbot&amp;diff=26594</id>
		<title>Sircbot</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Sircbot&amp;diff=26594"/>
		<updated>2024-03-07T12:36:52Z</updated>

		<summary type="html">&lt;p&gt;Aqaqland: /* Create sircbot scripts folders and files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sircbot is a Minimalistic IRC bot based in Lua script.&lt;br /&gt;
&lt;br /&gt;
== Install sircbot ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|sircbot}} {{Pkg|lua-sircbot}}}}&lt;br /&gt;
&lt;br /&gt;
== Configure sircbot ==&lt;br /&gt;
&lt;br /&gt;
Edit the configuration file located at {{Path|/etc/conf.d/sircbot}} and change the name, server, and channel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/conf.d/sircbot|...&lt;br /&gt;
sircbot_opts{{=}}&amp;quot;-n name -s server&amp;quot;&lt;br /&gt;
sircbot_channels{{=}}&amp;quot;#channel&amp;quot;&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
== Create sircbot scripts folders and files ==&lt;br /&gt;
&lt;br /&gt;
Sircbot will use an folder for the channel where is logged in. Lets say we will use it at the &amp;quot;test&amp;quot; channel.&lt;br /&gt;
The folder path is: {{Path|/etc/sircbot.d/#&amp;lt;channel&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Lets see an example:&lt;br /&gt;
&lt;br /&gt;
Our bot will be named &#039;&#039;kumquat&#039;&#039; and we will join at the #test channel in the irc.ddd.ddd server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/conf.d/sircbot|sircbot_opts{{=}}&amp;quot;-n kumquat -s irc.ddd.ddd&amp;quot;&lt;br /&gt;
sircbot_channels{{=}}&amp;quot;#test&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
Create folder bot. &lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mkdir /etc/sircbot.d/#test -p}}&lt;br /&gt;
&lt;br /&gt;
Create the Lua script file for our bot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/sircbot.d/#test/commands|&amp;lt;nowiki&amp;gt;#!/usr/bin/lua&lt;br /&gt;
&lt;br /&gt;
-- Scripts for kumquat in Lua&lt;br /&gt;
&lt;br /&gt;
args={...}&lt;br /&gt;
&lt;br /&gt;
sender=args[1]   	-- is the nickname of running the command on IRC&lt;br /&gt;
message=args[2] 	-- is the message or command typed&lt;br /&gt;
channel=args[3] 	-- is the channel name&lt;br /&gt;
&lt;br /&gt;
os.execute(&amp;quot;sleep &amp;quot; .. tonumber(1))&lt;br /&gt;
&lt;br /&gt;
-- This command will show: What can i do for you &amp;quot;nickname&amp;quot;?&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;kumquat&amp;quot;) &lt;br /&gt;
  if kumquatresult ~= nil then&lt;br /&gt;
  command=&amp;quot;echo &#039;What can i do for you &#039;&amp;quot;..sender..&amp;quot;&#039;?&#039; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;&lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This command will show: Hello there, amigo &amp;quot;nickname&amp;quot;&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;hi&amp;quot;)&lt;br /&gt;
  if kumquatresult ~= nil then&lt;br /&gt;
  command=&amp;quot;echo &#039;Hello there, amigo &#039;&amp;quot;..sender..&amp;quot;&#039;&#039; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;&lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This command will show the current UTC date and time&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;date&amp;quot;)&lt;br /&gt;
  if kumquatresult ~= nil then&lt;br /&gt;
  command=&amp;quot;date -u | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;&lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This command will do a search for a alpine linux package&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;apk search:[^%d]&amp;quot;)&lt;br /&gt;
if kumquatresult ~= nil then&lt;br /&gt;
  local strng = (string.sub(message, 12))&lt;br /&gt;
  command=&amp;quot;apk search&amp;quot;..strng..&amp;quot; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;    &lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
-- This command will resolve a host name and ip&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;host:[^%d]&amp;quot;)&lt;br /&gt;
if kumquatresult ~= nil then&lt;br /&gt;
  local strng = (string.sub(message, 6))&lt;br /&gt;
  command=&amp;quot;host &amp;quot;..strng..&amp;quot; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;    &lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This command will do a 3 times ping to a server or ip address&lt;br /&gt;
local kumquatresult = string.find(message, &amp;quot;ping:[^%d]&amp;quot;)&lt;br /&gt;
if kumquatresult ~= nil then&lt;br /&gt;
  local strng = (string.sub(message, 6))&lt;br /&gt;
  command=&amp;quot;ping -c 3 &amp;quot;..strng..&amp;quot; | sircbot-send &#039;&amp;quot;..channel..&amp;quot;&#039;&amp;quot;    &lt;br /&gt;
  io.popen(command)&lt;br /&gt;
end&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Make the script to be executable&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# chmod +x /etc/sircbot.d/#test/commands}}&lt;br /&gt;
&lt;br /&gt;
== Giving life to the bot ==&lt;br /&gt;
&lt;br /&gt;
Starting bot service and adding to boot.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service sircbot start &amp;amp;&amp;amp; rc-update add sircbot default}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If your bot is not responding as expected, an easy way to troubleshoot is to manually execute the script in /etc/sircbot.d/&amp;lt;#channelname&amp;gt;/&amp;lt;scriptname&amp;gt; with the three agruments.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ /etc/sircbot.d/&amp;lt;#channelname&amp;gt;/&amp;lt;scriptname&amp;gt; username hi &#039;&amp;lt;#channelname&amp;gt;&#039;}}&lt;br /&gt;
&lt;br /&gt;
If your bot responds as expected, then you know that your script works.  The problem is that sircbot is not executing the script.  Here are two likely causes:&lt;br /&gt;
&lt;br /&gt;
# Sircbot is case-sensitive when looking for the channel directory for a script to execute.  For example, if you have a channel named &amp;quot;#Alpine&amp;quot;, sircbot will look for /etc/sircbot.d/#Alpine/*.  If that pathway isn&#039;t exactly right, then sircbot will skip that folder.  In our example, if you have /etc/sircbot.d/#alpine/script, sircbot will not execute anything in that folder.  To fix, simply rename the folder to /etc/sircbot.d/#Alpine/&lt;br /&gt;
# Sircbot doesn&#039;t execute scripts that have a &#039;.&#039; in the name.  For example a script named &#039;listen.lua&#039; will not be executed.  Simply rename the script to &#039;listen&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Aqaqland</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Include:AbuildRootBld&amp;diff=26241</id>
		<title>Include:AbuildRootBld</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Include:AbuildRootBld&amp;diff=26241"/>
		<updated>2024-01-12T16:06:16Z</updated>

		<summary type="html">&lt;p&gt;Aqaqland: abuild rootbld tips&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Install package &amp;lt;code&amp;gt;abuild-rootbld&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add abuild-rootbld}}&lt;br /&gt;
&lt;br /&gt;
You may now build your packages from source in an unprivileged sandbox based on [https://github.com/containers/bubblewrap bubblewrap] with the command: {{Cmd|abuild rootbld}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rootbld&amp;lt;/code&amp;gt; assumes your APKBUILD file is in the &amp;lt;code&amp;gt;~/aports&amp;lt;/code&amp;gt; whose structure like [https://gitlab.alpinelinux.org/alpine/aports aports] or you need to set environment variable &amp;lt;code&amp;gt;APORTSDIR&amp;lt;/code&amp;gt; to current directory. &lt;br /&gt;
If the build process needs network access there has to bet set the &#039;&#039;&#039;net&#039;&#039;&#039; option in [[APKBUILD_Reference#options|APKBUILD]].&lt;br /&gt;
&lt;br /&gt;
Note that using &amp;lt;code&amp;gt;rootbld&amp;lt;/code&amp;gt; inside a docker container requires [[Build_with_abuild_rootbld_in_Docker_container|additional configuration]].&lt;br /&gt;
&lt;br /&gt;
[[category: Package Manager]]&lt;/div&gt;</summary>
		<author><name>Aqaqland</name></author>
	</entry>
</feed>