apk-tools issueshttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues2022-12-21T19:45:24Zhttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10724Confusion about APKBUILD "replaces"2022-12-21T19:45:24ZOliver SmithConfusion about APKBUILD "replaces"I find [APKBUILD Reference#replaces](https://wiki.alpinelinux.org/wiki/APKBUILD_Reference#replaces) confusing. If I read the history right, that's what @ncopa added in 2010:
> **replaces**
>
> Package(s) that this package replaces. This ...I find [APKBUILD Reference#replaces](https://wiki.alpinelinux.org/wiki/APKBUILD_Reference#replaces) confusing. If I read the history right, that's what @ncopa added in 2010:
> **replaces**
>
> Package(s) that this package replaces. This package will "take over" files owned by packages listed in the replaces variable. This is useful when files move from one package to another, or when a package gets renamed.
#### It's for overriding files, not packages
I used to think that it works similar to [replaces in PKGBUILD](https://wiki.archlinux.org/index.php/PKGBUILD#replaces), where it means a whole package will be replaced by another one. However, recently I found that in APKBUILD, it's more like the replacing package overrides **files** of the replaced package. Both packages can be installed at the same time, and if they provide the same file, apk will just install the version of the replacing package. When the replaced package gets upgraded and would provide a new version of the replaced file, apk will still use the version of the replaced package.
(This is very useful btw, we'll use this in the future to properly override config files in postmarketOS.)
With the newly acquired knowledge, I added the following sentences:
> The replaced package and the replacing package can be installed at the same time. A use case for this is replacing config files in "policy packages" [7].
#### Confusing part
This part throws me off:
> This is useful when files move from one package to another, or when a package gets renamed.
I did an experiment and found that `replaces` is not needed in order to rename a package, one only needs `provides="oldpkg=$pkgver-r$pkgrel"` and a higher version (pkgver/pkgrel).
<details>
First package:
```sh
pkgname="replace-pkg-test"
pkgver=1
pkgrel=0
pkgdesc="reproducer"
url="https://postmarketos.org"
license="MIT"
arch="all"
package() {
mkdir -p "$pkgdir/etc"
echo "$pkgname" > "$pkgdir/etc/test"
}
```
Second package:
```sh
pkgname="replace-pkg-test-new"
pkgver=1
pkgrel=1
pkgdesc="reproducer"
url="https://postmarketos.org"
license="MIT"
arch="all"
provides="replace-pkg-test=$pkgver-r$pkgrel"
package() {
mkdir -p "$pkgdir/etc"
echo "$pkgname" > "$pkgdir/etc/test"
}
```
apk output:
```
# apk add replace-pkg-test
(1/1) Installing replace-pkg-test (1-r0)
```
Build the second package and remove the first one from APKINDEX.
```
# apk upgrade
(1/2) Purging replace-pkg-test (1-r0)
(2/2) Installing replace-pkg-test-new (1-r1)
```
https://gitlab.com/ollieparanoid/reproducers/-/tree/master/apk-replace-pkg
</details>
So I'm wondering:
* Why is it useful when a package gets renamed?
* Why is it useful when moving files from one package to another?https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10725apk fails to select cmd:binary2020-11-19T10:38:21ZNatanael Copaapk fails to select cmd:binary```
ncopa-edge-x86_64:~/aports/community/megapixels$ doas apk add cmd:dcraw_emu
ERROR: unable to select packages:
cmd:dcraw_emu (virtual):
provided by: libraw-tools
required by: world[cmd:dcraw_emu]
ncopa-edge-x86_64:~/aports/c...```
ncopa-edge-x86_64:~/aports/community/megapixels$ doas apk add cmd:dcraw_emu
ERROR: unable to select packages:
cmd:dcraw_emu (virtual):
provided by: libraw-tools
required by: world[cmd:dcraw_emu]
ncopa-edge-x86_64:~/aports/community/megapixels$ apk info --provides libraw-tool
s
libraw-tools-0.19.5-r1 provides:
cmd:4channels
cmd:dcraw_emu
cmd:dcraw_half
cmd:half_mt
cmd:mem_image
cmd:multirender_test
cmd:postprocessing_benchmark
cmd:raw-identify
cmd:simple_dcraw
cmd:unprocessed_raw
libraw-tools-0.20.2-r0 provides:
cmd:4channels
cmd:dcraw_emu
cmd:dcraw_half
cmd:half_mt
cmd:mem_image
cmd:multirender_test
cmd:postprocessing_benchmark
cmd:raw-identify
cmd:rawtextdump
cmd:simple_dcraw
cmd:unprocessed_raw
ncopa-edge-x86_64:~/aports/community/megapixels$ doas apk add libraw-tools
(1/2) Installing libraw (0.20.2-r0)
(2/2) Installing libraw-tools (0.20.2-r0)
Executing busybox-1.32.0-r3.trigger
OK: 450 MiB in 145 packages
```
I wonder why it failed to install the provided `cmd:dcraw_emu`? was it because the provides was unversioned and there were two different versions of it available?https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10726`apk update/upgrade --no-cache` exits with exitstatus 0, where it uses 2 with...2022-12-28T12:59:45ZDaniel Hahler`apk update/upgrade --no-cache` exits with exitstatus 0, where it uses 2 without `--no-cache``apk update` exits with status 2 if it fails to download files, but when using `--no-cache` it does not.
This might be ok given that the cache is not updated, but also affects `apk upgrade`, where it certainly should be a failure from w...`apk update` exits with status 2 if it fails to download files, but when using `--no-cache` it does not.
This might be ok given that the cache is not updated, but also affects `apk upgrade`, where it certainly should be a failure from what I can see.
```
% docker run -it --rm alpine
/ # apk update; echo $?
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/community: temporary error (try again later)
WARNING: Ignoring APKINDEX.40a3604f.tar.gz: No such file or directory
2 errors; 14 distinct packages available
2
/ # apk update --no-cache; echo $?
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz: temporary error (try again later)
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz: temporary error (try again later)
OK: 14 distinct packages available
0
/ # apk --version
apk-tools 2.10.5, compiled for x86_64.
/ # cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.12.1
PRETTY_NAME="Alpine Linux v3.12"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://bugs.alpinelinux.org/"
```
Using `alpine:latest` Docker image (d6e46aa2470d).v3.0https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10727Error message on install2020-11-30T15:24:24ZgamersiError message on installWhen i try to execute the command apk this message comes(iSh on ipad):
/sbin/apk: line 1: can't create �E�@v-@@����8r�8r������7--�����9: Illegal byte sequence
/sbin/apk: line 1: ELF����: not found
/sbin/apk: line 2: 9: not found
/sbin/ap...When i try to execute the command apk this message comes(iSh on ipad):
/sbin/apk: line 1: can't create �E�@v-@@����8r�8r������7--�����9: Illegal byte sequence
/sbin/apk: line 1: ELF����: not found
/sbin/apk: line 2: 9: not found
/sbin/apk: line 3: syntax error: unexpected ")"https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10728Add log feature to apk2021-04-06T01:40:05ZMogens JensenAdd log feature to apkIt would be nice if apk had a log file in /var/log/ to record when a package is installed, upgraded, downgraded or removed. A log line could be something like this:
`<date> <time> <action> <package>:<version> <new version>`It would be nice if apk had a log file in /var/log/ to record when a package is installed, upgraded, downgraded or removed. A log line could be something like this:
`<date> <time> <action> <package>:<version> <new version>`Timo TeräsTimo Teräshttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10729Failed to create lib/libc.musl-armhf.so.1: Operation not permitted2020-12-16T02:34:42ZBrandon RosFailed to create lib/libc.musl-armhf.so.1: Operation not permittedNo idea why I am getting Operation not permitted errors as root?
Trying to set up chroot on a Raspberry Pi Zero while already SSH'd into Alpine.
```
pi:/home/brandon# uname -a
Linux pi 5.4.82-0-rpi #1-Alpine Thu Dec 10 08:59:43 UTC 202...No idea why I am getting Operation not permitted errors as root?
Trying to set up chroot on a Raspberry Pi Zero while already SSH'd into Alpine.
```
pi:/home/brandon# uname -a
Linux pi 5.4.82-0-rpi #1-Alpine Thu Dec 10 08:59:43 UTC 2020 armv6l Linux
pi:/home/brandon# mkdir /media/mmcblk0p1/chroot
pi:/home/brandon# tar -xzf apk-tools-static-2.10.5-r1.apk -C /media/mmcblk0p1/chroot/
pi:/home/brandon# /media/mmcblk0p1/chroot/sbin/apk.static -X https://dl-cdn.alpinelinux.org/alpine/latest-stable/main -U --allow-untrusted -p /media/mmcblk0p1/chroot --i
nitdb add alpine-base
fetch https://dl-cdn.alpinelinux.org/alpine/latest-stable/main/armhf/APKINDEX.tar.gz
(1/19) Installing musl (1.1.24-r10)
ERROR: Failed to create lib/libc.musl-armhf.so.1: Operation not permitted
ERROR: musl-1.1.24-r10: failed to rename lib/.apk.9515002d69a704922ec64ed91637d14737d574e2b42faa53 to lib/libc.musl-armhf.so.1.
(2/19) Installing busybox (1.31.1-r19)
ERROR: Failed to create bin/sh: Operation not permitted
ERROR: busybox-1.31.1-r19: failed to rename bin/.apk.81e31612de5fd2307f03c3d021cdb29bb974271bb8e0add1 to bin/sh.
Executing busybox-1.31.1-r19.post-install
ERROR: busybox-1.31.1-r19.post-install: script exited with error 127
(3/19) Installing alpine-baselayout (3.2.0-r7)
Executing alpine-baselayout-3.2.0-r7.pre-install
ERROR: alpine-baselayout-3.2.0-r7.pre-install: script exited with error 127
ERROR: Failed to create etc/mtab: Operation not permitted
ERROR: Failed to set ownership on etc/.apk.495842ab4ef6caf39f00c713de8d1dd1d55acca658b1ee28: Operation not permitted
ERROR: Failed to create var/run: Operation not permitted
ERROR: Failed to create var/spool/cron/crontabs: Operation not permitted
ERROR: Failed to create var/spool/mail: Operation not permitted
ERROR: alpine-baselayout-3.2.0-r7: failed to rename etc/.apk.fcd3ed8165e7d73b895fca4b744c49c2f4fa0886059a748b to etc/mtab.
ERROR: alpine-baselayout-3.2.0-r7: failed to rename var/.apk.f752bb51c942c7b3b4e0cf24875e21be9cdcd4595d8db384 to var/run.
ERROR: alpine-baselayout-3.2.0-r7: failed to rename var/spool/.apk.1330e212b7b42701c34c05275c3aba9bcde6d872c51306ee to var/spool/mail.
ERROR: alpine-baselayout-3.2.0-r7: failed to rename var/spool/cron/.apk.925c57471bbb2fc6aef2916a28302c3e14e4a58f119af7e6 to var/spool/cron/crontabs.
Executing alpine-baselayout-3.2.0-r7.post-install
ERROR: alpine-baselayout-3.2.0-r7.post-install: script exited with error 127
(4/19) Installing openrc (0.42.1-r11)
ERROR: Failed to create etc/init.d/functions.sh: Operation not permitted
ERROR: Failed to create sbin/rc-sstat: Operation not permitted
ERROR: Failed to create sbin/service: Operation not permitted
ERROR: openrc-0.42.1-r11: failed to rename etc/init.d/.apk.dc9f86b14bc619d31f26a5f80c4b68d189a245a2e272ef3c to etc/init.d/functions.sh.
ERROR: openrc-0.42.1-r11: failed to rename sbin/.apk.a3de5874b1eca8c83fa4a02bb835cd057a1f027325416c36 to sbin/rc-sstat.
ERROR: openrc-0.42.1-r11: failed to rename sbin/.apk.93045393f9e37e6cceb04553fabdc123c9ea8221f31ee5e7 to sbin/service.
Executing openrc-0.42.1-r11.post-install
ERROR: openrc-0.42.1-r11.post-install: script exited with error 127
(5/19) Installing alpine-conf (3.9.0-r1)
ERROR: Failed to create sbin/lbu_commit: Operation not permitted
ERROR: Failed to create sbin/lbu_exclude: Operation not permitted
ERROR: Failed to create sbin/lbu_include: Operation not permitted
ERROR: Failed to create sbin/lbu_status: Operation not permitted
ERROR: Failed to create sbin/lbu_update: Operation not permitted
ERROR: alpine-conf-3.9.0-r1: failed to rename sbin/.apk.32a7a3deb8963534924612eb6559e02c1bfe84d6566779b8 to sbin/lbu_commit.
ERROR: alpine-conf-3.9.0-r1: failed to rename sbin/.apk.e27894b5836cdf8d1e41197f74404cf78b8358b0c60f60e1 to sbin/lbu_exclude.
ERROR: alpine-conf-3.9.0-r1: failed to rename sbin/.apk.1950f3333b2a356cde52995aff02e35021c0eb9d51657f7b to sbin/lbu_include.
ERROR: alpine-conf-3.9.0-r1: failed to rename sbin/.apk.61644974a42d911185188faaec02bed101ba81570300b812 to sbin/lbu_status.
ERROR: alpine-conf-3.9.0-r1: failed to rename sbin/.apk.175d8accf16ecc20922e25777701fa07a35394f268204ab1 to sbin/lbu_update.
(6/19) Installing libcrypto1.1 (1.1.1i-r0)
ERROR: Failed to create etc/ssl/misc/tsget: Operation not permitted
ERROR: Failed to create usr/lib/libcrypto.so.1.1: Operation not permitted
ERROR: libcrypto1.1-1.1.1i-r0: failed to rename etc/ssl/misc/.apk.c6053a1e71934a4124bd9d0a1c37c9b26eb21572466de7fd to etc/ssl/misc/tsget.
ERROR: libcrypto1.1-1.1.1i-r0: failed to rename usr/lib/.apk.e6399721458ef4d59829888e8c40b687dd1d3eb03d366f53 to usr/lib/libcrypto.so.1.1.
(7/19) Installing libssl1.1 (1.1.1i-r0)
ERROR: Failed to create usr/lib/libssl.so.1.1: Operation not permitted
ERROR: libssl1.1-1.1.1i-r0: failed to rename usr/lib/.apk.bce9754a08a2d094c12a507745afba96edd648ecd622e0eb to usr/lib/libssl.so.1.1.
(8/19) Installing ca-certificates-bundle (20191127-r4)
ERROR: Failed to create etc/ssl/cert.pem: Operation not permitted
ERROR: ca-certificates-bundle-20191127-r4: failed to rename etc/ssl/.apk.9e2754c1d351390138c4dbc6dc67c53949c57f6934547649 to etc/ssl/cert.pem.
(9/19) Installing libtls-standalone (2.9.1-r1)
ERROR: Failed to create usr/lib/libtls-standalone.so.1: Operation not permitted
ERROR: libtls-standalone-2.9.1-r1: failed to rename usr/lib/.apk.90d29c63d78653a770f4de6112d6fb6fa4b260c2bbe0b819 to usr/lib/libtls-standalone.so.1.
(10/19) Installing ssl_client (1.31.1-r19)
(11/19) Installing zlib (1.2.11-r3)
ERROR: Failed to create lib/libz.so.1: Operation not permitted
ERROR: zlib-1.2.11-r3: failed to rename lib/.apk.18f76108508a22199d34ce6cd480f511897ca79ad2b6d4eb to lib/libz.so.1.
(12/19) Installing apk-tools (2.10.5-r1)
(13/19) Installing busybox-suid (1.31.1-r19)
ERROR: Failed to set file permissions on bin/.apk.f02148a9023df4219fcb5a5f42b49c3b465d106d3e9ef45f: Operation not permitted
(14/19) Installing busybox-initscripts (3.2-r2)
Executing busybox-initscripts-3.2-r2.post-install
ERROR: busybox-initscripts-3.2-r2.post-install: script exited with error 127
(15/19) Installing scanelf (1.2.6-r0)
(16/19) Installing musl-utils (1.1.24-r10)
(17/19) Installing libc-utils (0.7.2-r3)
(18/19) Installing alpine-keys (2.2-r0)
ERROR: Failed to create usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub: Operation not permitted
ERROR: Failed to create usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub: Operation not permitted
ERROR: Failed to create usr/share/apk/keys/mips64/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub: Operation not permitted
ERROR: Failed to create usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub: Operation not permitted
ERROR: Failed to create usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub: Operation not permitted
ERROR: Failed to create usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub: Operation not permitted
ERROR: Failed to create usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub: Operation not permitted
ERROR: Failed to create usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub: Operation not permitted
ERROR: Failed to create usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub: Operation not permitted
ERROR: alpine-keys-2.2-r0: failed to rename usr/share/apk/keys/aarch64/.apk.5acace59dced97bbc8cd7e95542fcb2175b8b8e9bb185683 to usr/share/apk/keys/aarch64/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub.
ERROR: alpine-keys-2.2-r0: failed to rename usr/share/apk/keys/armhf/.apk.fd4146477eb502ba84c48be67f680f6001172e692cc7bf59 to usr/share/apk/keys/armhf/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub.
ERROR: alpine-keys-2.2-r0: failed to rename usr/share/apk/keys/mips64/.apk.e9bbaa27fbec2bacaa1921ac1f87aaa158348b380dde0c0e to usr/share/apk/keys/mips64/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub.
ERROR: alpine-keys-2.2-r0: failed to rename usr/share/apk/keys/ppc64le/.apk.71de2281b2411c9847c62b5f7559c425cd8b966d947db268 to usr/share/apk/keys/ppc64le/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub.
ERROR: alpine-keys-2.2-r0: failed to rename usr/share/apk/keys/s390x/.apk.7cac83547c6b8f5940c2ce103d1b96316f96bb1100966322 to usr/share/apk/keys/s390x/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub.
ERROR: alpine-keys-2.2-r0: failed to rename usr/share/apk/keys/x86/.apk.ec803979372371729da8b6c0124f0dda890fe0d3ece65f75 to usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub.
ERROR: alpine-keys-2.2-r0: failed to rename usr/share/apk/keys/x86/.apk.bacdf5bf7c07dac6d41d2245a886dedfad5f8ba9faa56c7a to usr/share/apk/keys/x86/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub.
ERROR: alpine-keys-2.2-r0: failed to rename usr/share/apk/keys/x86_64/.apk.3af2b6045837c9c3af07f3e9e774fc0d6feee7b410f8d939 to usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub.
ERROR: alpine-keys-2.2-r0: failed to rename usr/share/apk/keys/x86_64/.apk.9c3904f53d2b9fdb14f43a833ee6b4084ed922fba8ee7ce4 to usr/share/apk/keys/x86_64/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub.
(19/19) Installing alpine-base (3.12.2-r0)
Executing busybox-1.31.1-r19.trigger
ERROR: busybox-1.31.1-r19.trigger: script exited with error 127
13 errors; 7 MiB in 19 packages
```https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10730installation of octave does not work2020-12-29T12:21:02ZErnst Reißnerinstallation of octave does not workThis is not a bug on apk but seemingly a problem with the package.
Trying
```
apk add octave --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing
```
fails with
```
ERROR: unsatisfiable constraints:
so:libhdf5.so.200 (miss...This is not a bug on apk but seemingly a problem with the package.
Trying
```
apk add octave --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing
```
fails with
```
ERROR: unsatisfiable constraints:
so:libhdf5.so.200 (missing):
required by: octave-6.1.0-r3[so:libhdf5.so.200]
so:libqhull.so.8.0 (missing):
required by: octave-6.1.0-r3[so:libqhull.so.8.0]
```
Shall these packages be in testing also??https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10731Failed to add a package if there is too much dependencies2021-01-25T15:38:52ZThibault FerranteFailed to add a package if there is too much dependenciesWhen a package has too much dependencies (in my example >=755), `apk add` fails with a non explicit error message.
This can be reproduced with docker like this:
- Create an [APKBUILD](/uploads/6a80b53da00bf3d8a098cfe915f716b6/APKBUILD) ...When a package has too much dependencies (in my example >=755), `apk add` fails with a non explicit error message.
This can be reproduced with docker like this:
- Create an [APKBUILD](/uploads/6a80b53da00bf3d8a098cfe915f716b6/APKBUILD) and put it in it dedicated folder (test-f)
- Docker command `docker run --rm -it -v "$(pwd):/workdir" -w /workdir alpine:3.12 /bin/sh`
- Generation and triggering of the bug
```
apk add abuild
abuild-keygen -a -n -q
( cd test-f/ && abuild -Fr )
apk add darkhttpd
darkhttpd /root/packages &
apk info --allow-untrusted -X http://127.0.0.1/workdir/ --repositories-file /dev/null test-f
apk update --allow-untrusted -X http://127.0.0.1/workdir/ --repositories-file /dev/null test-f
apk add --allow-untrusted -X http://127.0.0.1/workdir/ --repositories-file /dev/null test-f
```
This is triggering this message :
```
/workdir/test-f # apk add --allow-untrusted -X http://127.0.0.1/workdir/ --repositories-file /dev/null test-f
ERROR: unsatisfiable constraints:
test (missing):
required by: test-f-1.0-r0[test]
```https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10732apk policy: add feature to hold/pin packages2022-12-21T19:37:22ZJ0WIapk policy: add feature to hold/pin packagesI'd like to prevent apk from installing or upgrading specific packages.
Use cases are preventing apk from overriding custom builds or prevent a specific broken update while others keep updating.I'd like to prevent apk from installing or upgrading specific packages.
Use cases are preventing apk from overriding custom builds or prevent a specific broken update while others keep updating.v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10733apk info does not recognise -I parameter, only the longer --rinstall-if2021-01-17T13:04:33ZGábor ADORJÁNIapk info does not recognise -I parameter, only the longer --rinstall-ifEnvironment: Alpine 3.13, apk-tools-2.12.0-r4
Example, I guess it is self-explanatory:
```
# apk info -I lxc
apk: unrecognized option: I
apk-tools 2.12.0, compiled for x86_64.
usage: apk info [<OPTIONS>...] PACKAGES...
or: apk info...Environment: Alpine 3.13, apk-tools-2.12.0-r4
Example, I guess it is self-explanatory:
```
# apk info -I lxc
apk: unrecognized option: I
apk-tools 2.12.0, compiled for x86_64.
usage: apk info [<OPTIONS>...] PACKAGES...
or: apk info -W FILE
Description:
apk info prints information known about the listed packages. By default, it
prints the description, webpage, and installed size of the package
(equivalent to apk info -dws).
Global options:
-f, --force Enable selected --force-* options (deprecated)
-i, --interactive Ask confirmation before performing certain
operations
-p, --root <ROOT> Manage file system at ROOT
-q, --quiet Print less information
-U, --update-cache Alias for '--cache-max-age 1'
-v, --verbose Print more information (can be specified twice)
-V, --version Print program version and exit
-X, --repository <REPO>
Specify additional package repository
--allow-untrusted Install packages with untrusted signature or no
signature
--arch ARCH Temporarily override architecture, to be combined
with --root
--cache-dir CACHEDIR Temporarily override the cache directory
--cache-max-age AGE Maximum AGE (in minutes) for index in cache before
it's refreshed
--force-binary-stdout
Continue even if binary data will be printed to the
terminal
--force-broken-world Continue even if WORLD cannot be satisfied
--force-non-repository
Continue even if packages may be lost on reboot
--force-old-apk Continue even if packages use unsupported features
--force-overwrite Overwrite files in other packages
--force-refresh Do not use cached files (local or from proxy)
--keys-dir KEYSDIR Override directory of trusted keys
--no-cache Do not use any local cache path
--no-network Do not use the network
--no-progress Disable progress bar even for TTYs
--print-arch Print default arch and exit
--progress Show progress
--progress-fd FD Write progress to the specified file descriptor
--purge Delete modified configuration files on package
removal and uninstalled packages from cache on cache
clean
--repositories-file REPOFILE
Override system repositories, see repositories
--wait TIME Wait for TIME seconds to get an exclusive repository
lock before failing
Info options:
-a, --all List all information known about the package
-d, --description Print the package description
-e, --installed Check package installed status
-L, --contents List files included in the package
-i, --install-if List the package's install_if rule
-I, --rinstall-if List other packages whose install_if rules refer to
this package
-r, --rdepends List reverse dependencies of the package (all other
packages which depend on the package)
-R, --depends List the dependencies of the package
-s, --size Print the package's installed size
-w, --webpage Print the URL for the package's upstream webpage
-W, --who-owns Print the package which owns the specified file
--license Print the package SPDX license identifier
--replaces List the other packages for which this package is
marked as a replacement
--triggers Print active triggers for the package
For more information: man 8 apk-info
# apk info --rinstall-if lxc
lxc-4.0.6-r1 affects auto-installation of:
lxc-lvm-4.0.6-r1
lxc-openrc-4.0.6-r1
lxc-doc-4.0.6-r1
#
```https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10734Alpine 3.13: Segmentation fault on installing cifs-utils2021-04-11T11:27:50Zsga-mevisAlpine 3.13: Segmentation fault on installing cifs-utilsI run the following command in an Alpine 3.13 Docker image:
`apk add --update cifs-utils`
Result:
```
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/comm...I run the following command in an Alpine 3.13 Docker image:
`apk add --update cifs-utils`
Result:
```
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
(1/18) Installing libcap (2.46-r0)
(2/18) Installing keyutils-libs (1.6.3-r0)
(3/18) Installing krb5-conf (1.0-r2)
(4/18) Installing libcom_err (1.45.6-r1)
(5/18) Installing libverto (0.3.1-r1)
(6/18) Installing krb5-libs (1.18.3-r1)
(7/18) Installing talloc (2.3.1-r0)
24% ############################
Segmentation fault
```
I've gone back to Alpine 3.12.3 where this still worked.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10735"No error information" when installing packages built on edge/3.132021-01-24T20:41:21ZRasmus Thomsenoss@cogitri.dev"No error information" when installing packages built on edge/3.13See e.g. https://gitlab.alpinelinux.org/alpine/aports/-/issues/12296#note_137729
Seems to be reproducible on all systems. At least the error message should be better imhoSee e.g. https://gitlab.alpinelinux.org/alpine/aports/-/issues/12296#note_137729
Seems to be reproducible on all systems. At least the error message should be better imhohttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10736Triggers fail to execute when operating in rootless/--no-chown mode2021-04-11T11:27:51ZAkash SatheesanTriggers fail to execute when operating in rootless/--no-chown modeI was experimenting with using Alpine/apk-tools as a basis for an immutable, rootless container engine's rootfs; using a tool like `bwrap` with `bwrap --bind ./alpine-rootfs / --ro-bind /etc/resolv.conf /etc/resolv.conf --dev /dev --proc...I was experimenting with using Alpine/apk-tools as a basis for an immutable, rootless container engine's rootfs; using a tool like `bwrap` with `bwrap --bind ./alpine-rootfs / --ro-bind /etc/resolv.conf /etc/resolv.conf --dev /dev --proc /proc --unshare-pid --unshare-ipc --unshare-uts /bin/ash` for example, one can run a "rootless" Alpine container - goal is to not have any files in the rootfs owned by uid 0/root, because that would mean rootless rootfs cleanup would become difficult.
However, when executing triggers, apk expects to be running as uid 0, and attempts to `chroot` into the target rootfs, irrespective of the fact that the active rootfs is being targeted - see https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/master/src/database.c#L1909.
I'm not sure what would be the ideal way to remove this dependency on chroot - I considered a `snprintf(fd_pathbuf, sizeof(fd_pathbuf), "/proc/self/fd/%d", fd); readlink(fd_pathbuf, fd_path, sizeof(fd_path));` and then `strcmp(fd_path, "/")` but I am not sure if there is a better solution, or an alternate approach worth taking.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10737"ignoring malicious file" error from apk when trying to install ca-certificat...2021-04-11T11:27:51ZOliver Smith"ignoring malicious file" error from apk when trying to install ca-certificates-20191127-r5 for x86 from edge (other arches work)With the just released upgrade to apk-tools
currently it is not possible to install `ca-certificates` for `x86`. It works fine for x86_64, aarch64, armhf, armv7.
```
# apk add ca-certificates
(1/1) Installing ca-certificates (20191127-...With the just released upgrade to apk-tools
currently it is not possible to install `ca-certificates` for `x86`. It works fine for x86_64, aarch64, armhf, armv7.
```
# apk add ca-certificates
(1/1) Installing ca-certificates (20191127-r5)
WARNING: ca-certificates-20191127-r5: ignoring malicious file usr/share/ca-certificates/mozilla/NetLock_Arany_=Class_Gold=_Főtanúsítvány.crt
Executing busybox-1.33.0-r1.trigger
Executing ca-certificates-20191127-r5.trigger
1 error; 9 MiB in 21 packages
```
One way to reproduce: `pmbootstrap -q chroot -bx86 -- apk add ca-certificates`
Files:
* x86: [ca-certificates-20191127-r5_1_.apk](/uploads/6677b71d4cc428a5aa7822712d6d2928/ca-certificates-20191127-r5_1_.apk)
* x86_64: [ca-certificates-20191127-r5.apk](/uploads/06bcccf09e92737f517ebad7c6b412b5/ca-certificates-20191127-r5.apk)
* aarch64: [ca-certificates-20191127-r5_2_.apk](/uploads/ad7c8fa89703b8796e0b7b7a3078c24e/ca-certificates-20191127-r5_2_.apk)
CC: @fabled
Side note: it's a bit confusing that apk says WARNING, then fails with error.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10738apk authenticated proxy issue2021-09-28T18:22:04ZTorben Neufeldtapk authenticated proxy issueHey!
Using apk to install stuff behind a proxy does not work.
It seems that there are no credentials provided to the proxy.
This occurs only when requesting https urls.
The following commands provide a quick way to reproduce this issue....Hey!
Using apk to install stuff behind a proxy does not work.
It seems that there are no credentials provided to the proxy.
This occurs only when requesting https urls.
The following commands provide a quick way to reproduce this issue.
You can use [squid.conf](/uploads/c361a5a4861219f50f509b2eaf2d5305/squid.conf) as squid config.
## How to reproduce?
Terminal 1:
1. `docker run --rm -p 3128:3128 --volume $PWD/squid.conf:/etc/squid/squid.conf --volume $PWD/logs:/var/log/squid/ sameersbn/squid`
Terminal 2:
1. `tail -f logs/access.log`
Terminal 3:
1. `docker run --rm -it alpine`
1. `export http_proxy=http://alpine:xxx@172.17.0.1:3128`
1. `export https_proxy=http://alpine:xxx@172.17.0.1:3128`
1. `apk add --no-cache curl` -> fails
1. `sed -i 's/https/http/g' /etc/apk/repositories`
1. `apk add --no-cache curl` -> works
1. `curl https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz -I`
## Logs
failing request because no authentication to the proxy is provided:
```shell
proxy:
1615899619.390 0 172.17.0.1 TCP_DENIED/407 3981 CONNECT dl-cdn.alpinelinux.org:443 - HIER_NONE/- text/html
alpine:
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/main: Permission denied
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/community: Permission denied
```
working request when using http
```shell
proxy:
1615899677.349 260 172.17.0.1 TCP_MISS/200 631652 GET http://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz alpine HIER_DIRECT/151.101.114.133 application/octet-stream
alpine:
fetch http://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
```
example with curl to demonstrate that the requested url is available via https
```shell
HTTP/1.1 200 Connection established
HTTP/2 200
server: nginx
content-type: application/octet-stream
last-modified: Tue, 16 Mar 2021 10:59:20 GMT
etag: "60508f88-9a0ed"
strict-transport-security: max-age=31536000
x-frame-options: DENY
x-content-type-options: nosniff
via: 1.1 varnish, 1.1 varnish
accept-ranges: bytes
date: Tue, 16 Mar 2021 13:10:25 GMT
age: 3
x-served-by: cache-lga21962-LGA, cache-hhn4059-HHN
x-cache: HIT, HIT
x-cache-hits: 2, 2
x-timer: S1615900225.337001,VS0,VE0
content-length: 631021
```https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10739Split fetch I/O into separate process2022-12-21T19:37:22ZAriadne Conillariadne@ariadne.spaceSplit fetch I/O into separate processIn the beginning, we used to use a separate process for fetches.
I think it would be nice to reimplement this in a way similar to `apt`, where there would be `/lib/apk/methods/http` and so on.
It would also be nice to drop root privile...In the beginning, we used to use a separate process for fetches.
I think it would be nice to reimplement this in a way similar to `apt`, where there would be `/lib/apk/methods/http` and so on.
It would also be nice to drop root privileges when fetching.v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10740adbdump produces invalid YAML2022-12-21T19:37:21ZAriadne Conillariadne@ariadne.spaceadbdump produces invalid YAMLThe YAML generated by `adbdump` applet does not generate YAML which validates when processed with `yq`.
For example, `./src/apk adbdump ./installed.adb | yq e '.packages[0]'` generates a document which fails validation if coreutils is i...The YAML generated by `adbdump` applet does not generate YAML which validates when processed with `yq`.
For example, `./src/apk adbdump ./installed.adb | yq e '.packages[0]'` generates a document which fails validation if coreutils is installed due to `/usr/bin/[`.
This is probably something @fabled is already aware of, but I figure opening a bug about it is better than not.v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10741[CVE-2021-30139] Out-of-bounds read during tar parsing2021-04-14T08:43:50ZSören Tempel[CVE-2021-30139] Out-of-bounds read during tar parsing## Description
apk performs insufficient sanity checks on tar entries. The [GNU Tar format specification](https://www.gnu.org/software/tar/manual/html_node/Standard.html) states the following on fields in tar entries:
> The `name`, `li...## Description
apk performs insufficient sanity checks on tar entries. The [GNU Tar format specification](https://www.gnu.org/software/tar/manual/html_node/Standard.html) states the following on fields in tar entries:
> The `name`, `linkname`, `magic`, `uname`, and `gname` are null-terminated character strings. All other fields are zero-filled octal numbers in ASCII.
The code for parsing tar entries in apk is here:
https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/354713d2f746c197eed6a1feb4c6af3420af6c15/src/io_archive.c#L143
This code just **assumes** that `uname`, etc are null-terminated and uses string function on them without a prior check if null terminators are actually present. For example:
```C
.uid = apk_resolve_uid(idc, buf.uname, GET_OCTAL(buf.uid)),
```
will use `strlen()` internally on `buf.uname`. This will cause an out-of-bounds read. This code is run before the signature is validated.
## Reproducing
This issue can be reproduced using [out-of-bounds-read-apk-tar-uname.apk](/uploads/bbb6de44db177aaeab78099617ccc71f/out-of-bounds-read-apk-tar-uname.apk) and `valgrind`:
```
$ valgrind ./src/apk.static add /tmp/out-of-bounds-read-apk-tar-uname.apk
==31584== Memcheck, a memory error detector
==31584== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==31584== Using Valgrind-3.17.0 and LibVEX; rerun with -h for copyright info
==31584== Command: ./src/apk.static --initdb --root ./root/ add /tmp/out-of-bounds-read-apk-tar-uname.apk
==31584==
==31584== Warning: invalid file descriptor -1 in syscall read()
==31584== Warning: invalid file descriptor -1 in syscall close()
==31584== Warning: invalid file descriptor -1 in syscall read()
==31584== Warning: invalid file descriptor -1 in syscall close()
==31584== Conditional jump or move depends on uninitialised value(s)
==31584== at 0x5C8CA5: strlen (strlen.c:17)
==31584== by 0x432575: APK_BLOB_STR (apk_blob.h:79)
==31584== by 0x4350EB: apk_resolve_uid (io.c:1112)
==31584== by 0x43696C: apk_tar_parse (io_archive.c:152)
==31584== by 0x4271BC: apk_pkg_read (package.c:929)
==31584== by 0x402D75: add_main (app_add.c:163)
==31584== by 0x40D5FF: main (apk-static.c:516)
==31584==
==31584== Conditional jump or move depends on uninitialised value(s)
==31584== at 0x5C8CB0: strlen (strlen.c:20)
==31584== by 0x432575: APK_BLOB_STR (apk_blob.h:79)
==31584== by 0x4350EB: apk_resolve_uid (io.c:1112)
==31584== by 0x43696C: apk_tar_parse (io_archive.c:152)
==31584== by 0x4271BC: apk_pkg_read (package.c:929)
==31584== by 0x402D75: add_main (app_add.c:163)
==31584== by 0x40D5FF: main (apk-static.c:516)
==31584==
==31584== Use of uninitialised value of size 8
==31584== at 0x4313FB: apk_hash_get_hashed (hash.c:61)
==31584== by 0x434F73: resolve_cache_item (io.c:1064)
==31584== by 0x435107: apk_resolve_uid (io.c:1112)
==31584== by 0x43696C: apk_tar_parse (io_archive.c:152)
==31584== by 0x4271BC: apk_pkg_read (package.c:929)
==31584== by 0x402D75: add_main (app_add.c:163)
==31584== by 0x40D5FF: main (apk-static.c:516)
==31584==
==31584== Use of uninitialised value of size 8
==31584== at 0x4310F0: hlist_add_head (apk_defines.h:231)
==31584== by 0x4314F4: apk_hash_insert_hashed (hash.c:78)
==31584== by 0x434FF1: resolve_cache_item (io.c:1074)
==31584== by 0x435107: apk_resolve_uid (io.c:1112)
==31584== by 0x43696C: apk_tar_parse (io_archive.c:152)
==31584== by 0x4271BC: apk_pkg_read (package.c:929)
==31584== by 0x402D75: add_main (app_add.c:163)
==31584== by 0x40D5FF: main (apk-static.c:516)
==31584==
==31584== Use of uninitialised value of size 8
==31584== at 0x431118: hlist_add_head (apk_defines.h:234)
==31584== by 0x4314F4: apk_hash_insert_hashed (hash.c:78)
==31584== by 0x434FF1: resolve_cache_item (io.c:1074)
==31584== by 0x435107: apk_resolve_uid (io.c:1112)
==31584== by 0x43696C: apk_tar_parse (io_archive.c:152)
==31584== by 0x4271BC: apk_pkg_read (package.c:929)
==31584== by 0x402D75: add_main (app_add.c:163)
==31584== by 0x40D5FF: main (apk-static.c:516)
==31584==
==31584== Warning: invalid file descriptor -1 in syscall read()
==31584== Warning: invalid file descriptor -1 in syscall close()
==31584== Conditional jump or move depends on uninitialised value(s)
==31584== at 0x5C8CA5: strlen (strlen.c:17)
==31584== by 0x432575: APK_BLOB_STR (apk_blob.h:79)
==31584== by 0x435207: apk_resolve_gid (io.c:1154)
==31584== by 0x4369A9: apk_tar_parse (io_archive.c:153)
==31584== by 0x4271BC: apk_pkg_read (package.c:929)
==31584== by 0x402D75: add_main (app_add.c:163)
==31584== by 0x40D5FF: main (apk-static.c:516)
==31584==
==31584== Conditional jump or move depends on uninitialised value(s)
==31584== at 0x5C8CB0: strlen (strlen.c:20)
==31584== by 0x432575: APK_BLOB_STR (apk_blob.h:79)
==31584== by 0x435207: apk_resolve_gid (io.c:1154)
==31584== by 0x4369A9: apk_tar_parse (io_archive.c:153)
==31584== by 0x4271BC: apk_pkg_read (package.c:929)
==31584== by 0x402D75: add_main (app_add.c:163)
==31584== by 0x40D5FF: main (apk-static.c:516)
==31584==
==31584== Use of uninitialised value of size 8
==31584== at 0x4313FB: apk_hash_get_hashed (hash.c:61)
==31584== by 0x434F73: resolve_cache_item (io.c:1064)
==31584== by 0x435223: apk_resolve_gid (io.c:1154)
==31584== by 0x4369A9: apk_tar_parse (io_archive.c:153)
==31584== by 0x4271BC: apk_pkg_read (package.c:929)
==31584== by 0x402D75: add_main (app_add.c:163)
==31584== by 0x40D5FF: main (apk-static.c:516)
==31584==
==31584== Use of uninitialised value of size 8
==31584== at 0x4310F0: hlist_add_head (apk_defines.h:231)
==31584== by 0x4314F4: apk_hash_insert_hashed (hash.c:78)
==31584== by 0x434FF1: resolve_cache_item (io.c:1074)
==31584== by 0x435223: apk_resolve_gid (io.c:1154)
==31584== by 0x4369A9: apk_tar_parse (io_archive.c:153)
==31584== by 0x4271BC: apk_pkg_read (package.c:929)
==31584== by 0x402D75: add_main (app_add.c:163)
==31584== by 0x40D5FF: main (apk-static.c:516)
==31584==
==31584== Use of uninitialised value of size 8
==31584== at 0x431118: hlist_add_head (apk_defines.h:234)
==31584== by 0x4314F4: apk_hash_insert_hashed (hash.c:78)
==31584== by 0x434FF1: resolve_cache_item (io.c:1074)
==31584== by 0x435223: apk_resolve_gid (io.c:1154)
==31584== by 0x4369A9: apk_tar_parse (io_archive.c:153)
==31584== by 0x4271BC: apk_pkg_read (package.c:929)
==31584== by 0x402D75: add_main (app_add.c:163)
==31584== by 0x40D5FF: main (apk-static.c:516)
==31584==
==31584== Warning: invalid file descriptor -1 in syscall read()
==31584== Warning: invalid file descriptor -1 in syscall close()
ERROR: /tmp/out-of-bounds-read-apk-tar-uname.apk: BAD archive
==31584==
==31584== HEAP SUMMARY:
==31584== in use at exit: 0 bytes in 0 blocks
==31584== total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==31584==
==31584== All heap blocks were freed -- no leaks are possible
==31584==
==31584== Use --track-origins=yes to see where uninitialised values come from
==31584== For lists of detected and suppressed errors, rerun with: -s
==31584== ERROR SUMMARY: 16 errors from 10 contexts (suppressed: 0 from 0)
```
## Hotfix
```diff
diff --git a/src/io_archive.c b/src/io_archive.c
index de4741e..d68263b 100644
--- a/src/io_archive.c
+++ b/src/io_archive.c
@@ -51,6 +51,7 @@ struct tar_header {
#define GET_OCTAL(s) get_octal(s, sizeof(s))
#define PUT_OCTAL(s,v) put_octal(s, sizeof(s), v)
+#define HAS_NULLTERM(a) memchr(a, '\0', sizeof(a))
static unsigned int get_octal(char *s, size_t l)
{
@@ -147,6 +148,14 @@ int apk_tar_parse(struct apk_istream *is, apk_archive_entry_parser parser,
continue;
}
+ /* Ensure that fields which should be null-terminated
+ * are null-terminated to use string functions on them. */
+ if (!HAS_NULLTERM(buf.uname) || !HAS_NULLTERM(buf.gname) ||
+ !HAS_NULLTERM(buf.linkname) || !HAS_NULLTERM(buf.magic) ||
+ !HAS_NULLTERM(buf.name)) {
+ goto err;
+ }
+
entry = (struct apk_file_info){
.size = GET_OCTAL(buf.size),
.uid = apk_resolve_uid(idc, buf.uname, GET_OCTAL(buf.uid)),
```Timo TeräsTimo Teräshttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10742solver: Highest requirer count over provider_priority2021-07-23T12:23:35ZAlex Denessolver: Highest requirer count over provider_priorityConsidering the higher requirer count over priority causes conflicts where a package has many `provides`.
This has been observed in the case of `pipewire-pulse` replacing `pulseaudio` because it also provides `pulseaudio-alsa`.
- https...Considering the higher requirer count over priority causes conflicts where a package has many `provides`.
This has been observed in the case of `pipewire-pulse` replacing `pulseaudio` because it also provides `pulseaudio-alsa`.
- https://gitlab.alpinelinux.org/alpine/aports/-/blob/df9236a95b5db68764a945b6c38a1a5e5d99d51d/community/pipewire/APKBUILD#L49-50
- https://gitlab.alpinelinux.org/alpine/aports/-/blob/df9236a95b5db68764a945b6c38a1a5e5d99d51d/community/pulseaudio/APKBUILD#L11
Source:
- https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/f7143c1766ae59489ac922e890ffe6d4a61c3b2d/src/solver.c#L600-605
- https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/f7143c1766ae59489ac922e890ffe6d4a61c3b2d/src/solver.c#L646-651
Simply taking the provider priority over requirer count solves this problem.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10743lbu commit fails storing correct permissions on lbu include directories2022-08-02T19:17:39Zmacmpilbu commit fails storing correct permissions on lbu include directoriesI'm running Alpine 3.13 on disk-less setup and installed mpd.\
I need to save/restore some music files within `/var/lib/mpd/music`\
`/var/lib/mpd/music` is created at mpd install with mpd:audio\
If I add a file root:root as `/var/lib/mpd...I'm running Alpine 3.13 on disk-less setup and installed mpd.\
I need to save/restore some music files within `/var/lib/mpd/music`\
`/var/lib/mpd/music` is created at mpd install with mpd:audio\
If I add a file root:root as `/var/lib/mpd/music/test` and then `lbu include /var/lib/mpd/music/test` and `lbu commit -d`, then at reboot `/var/lib/mpd` and `/var/lib/mpd/music` become root:root and original permissions are altered.
Any suggested workaround?
Note: this looks similar to older issue https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/1241https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10744Cryptographic module abstraction2022-12-21T19:37:21ZAriadne Conillariadne@ariadne.spaceCryptographic module abstractionAt present, apk-tools makes direct use of libcrypto to do signature verification, signing, etc.
It would be nice to factor this out so that we can eventually drop the libcrypto dependency with something better.
Similarly, it would be n...At present, apk-tools makes direct use of libcrypto to do signature verification, signing, etc.
It would be nice to factor this out so that we can eventually drop the libcrypto dependency with something better.
Similarly, it would be nice to replace our use of libssl with libtls in our libfetch fork, for the same reason: multiple libtls implementations exist, and we can just use whatever one we want (for now, libtls-standalone, but later perhaps libtls-bearssl instead.)v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10745Allow repository precedence when multiple instances of the same repository ex...2022-12-21T20:01:44ZMorgan HeinAllow repository precedence when multiple instances of the same repository exist in /etc/apk/repositoriesI have the following situation:
- Repository A is a custom compiled set of packages that also exist in
the public repository. This repository has the pkgs compiled with
extra security features and/or some unique flags set.
- ...I have the following situation:
- Repository A is a custom compiled set of packages that also exist in
the public repository. This repository has the pkgs compiled with
extra security features and/or some unique flags set.
- Repository B is a full mirror of the official repository.
What i’d like to happen is list both repositories in the
/etc/apk/repositories file, and have the clients prefer downloading all
pkgs from Repo A. In the case that the file doesn’t exist in Repo A,
then download from Repo B.
This, currently, doesn’t seem possible. After adding both repositories,
clients sometimes download from A, and sometimes download from B,
regardless of what is available in A.
The ability to add multiple repositories, with precedence, would be very
helpful in this situation.
Thanks,
Morgan
*(from redmine: issue id 9409, created on 2018-09-11)*backloghttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10746`apk search` command is not documented2021-07-23T12:13:11ZValentin`apk search` command is not documentedFor example
```
apk search firefox
firefox-esr-78.11.0-r0
firefox-esr-npapi-78.11.0-r0
faenza-icon-theme-firefox-1.3.1-r6
firefox-npapi-89.0-r0
firefox-89.0-r0
```
but `apk --help` does not mention this command.For example
```
apk search firefox
firefox-esr-78.11.0-r0
firefox-esr-npapi-78.11.0-r0
faenza-icon-theme-firefox-1.3.1-r6
firefox-npapi-89.0-r0
firefox-89.0-r0
```
but `apk --help` does not mention this command.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10747When a package stops replacing a file, that file gets uninstalled completely ...2022-12-21T18:50:51ZBart RibbersWhen a package stops replacing a file, that file gets uninstalled completely rather than switching back to the version of the original providing packageIn postmarketOS we are currently overwriting `/etc/sudoers` from sudo in one of our packages but we want to stop doing that in [pmaports!2181](https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2181). However while testing this ch...In postmarketOS we are currently overwriting `/etc/sudoers` from sudo in one of our packages but we want to stop doing that in [pmaports!2181](https://gitlab.com/postmarketOS/pmaports/-/merge_requests/2181). However while testing this change we noticed that rather than the file being either reverted back to what sudo itself provides or just being left there, it would get uninstalled instead.
This seems strange, seeing there is still a package on the system that provides (and needs!) that file, it's just the original providing package again. To "fix" it we need to reinstall sudo to let it put it's own file back again, but of course we can't tell all our users to manually run `apk fix sudo` after a random system upgrade.v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10748apk fails to locate database on read-only root2021-07-23T12:13:11ZAlan Diwixapk fails to locate database on read-only rootThat's completely understandable to refuse to do any system-modifying commands, however ANY command (even such as `apk search` or `apk info`) will fail with:
```
ERROR: Failed to open apk database: No such file or directory
```
contents ...That's completely understandable to refuse to do any system-modifying commands, however ANY command (even such as `apk search` or `apk info`) will fail with:
```
ERROR: Failed to open apk database: No such file or directory
```
contents of `/lib/apk/db`:
```
installed
lock
scripts.tar
triggers
```
If I try the same commands on root mounted as rw - everything works as expected.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10749libfetch information leak or crash2021-08-14T00:34:25ZSamanta Navarrolibfetch information leak or crashDear Alpine Linux team,
I have discovered a potentially security-relevant issue in libfetch.
It is used in apk and I have reported the issue to FreeBSD upstream.
Maybe you want to be informed about this before it is fixed there.
This i...Dear Alpine Linux team,
I have discovered a potentially security-relevant issue in libfetch.
It is used in apk and I have reported the issue to FreeBSD upstream.
Maybe you want to be informed about this before it is fixed there.
This is the mail I have just sent to the FreeBSD security team.
Problem:
The passive mode in FTP communication allows an out of boundary read
while libfetch uses strtol to parse the relevant numbers into address
bytes. It does not check if the line ends prematurely. If it does,
the for-loop condition checks for *p == '\0' one byte too late because
p++ was already performed.
Impact:
The connection buffer size can be controlled by a malicious FTP server
because the size is increased until a newline is encountered (or no more
characters are read). This also allows to move the buffer into more
interesting areas within the address space, potentially parsing
relevant numbers for the attacker.
Since these bytes become available to the server in form of a new
TCP connection to a constructed port number or even part of the IPv6
address this is a potential information leak.
Proof of Concept:
Set up the malicious FTP server like this
```
cat > replies.txt.b64 << EOF
begin-base64 644 replies.txt
MjIwIG9rCjIzMCBvawoyNTcgIi8iCjIwMCBvawoyMDAgb2sKMjEzIDE4NDQ2NzQ0MDczNzA5NTUx
NjE2CjIxMyAwMDAwMDAwMDAwMDAwMAoyMDAgb2sKMjAwIG9rCjIyOCAxCjIyOCAxMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTEx
====
EOF
b64decode -o replies.txt replies.txt.b64
nc -Nl ::1 21 < replies.txt
```
Compile libfetch and fetch with
CFLAGS="-fsanitize=address -fsanitize=undefined" and start client
```
fetch 'ftp://[::1]/poc'
```
Considerations:
Since libfetch is used outside of FreeBSD as well, e.g. in Alpine Linux
package keeper apk, I recommend to issue a CVE for this so these
users are informed about the patch as well.
The information leak is fixed in the second ftp.c patch chunk.
Sincerely,
Samanta
```
Index: fetch.c
===================================================================
--- fetch.c (revision 370066)
+++ fetch.c (working copy)
@@ -421,7 +421,7 @@
/* port */
if (*p == ':') {
for (n = 0, q = ++p; *q && (*q != '/'); q++) {
- if (*q >= '0' && *q <= '9' && n < INT_MAX / 10) {
+ if (*q >= '0' && *q <= '9' && n < IPPORT_MAX) {
n = n * 10 + (*q - '0');
} else {
/* invalid port */
Index: ftp.c
===================================================================
--- ftp.c (revision 370066)
+++ ftp.c (working copy)
@@ -424,8 +424,14 @@
}
for (ln = conn->buf + 4; *ln && isspace((unsigned char)*ln); ln++)
/* nothing */ ;
- for (us->size = 0; *ln && isdigit((unsigned char)*ln); ln++)
+ for (us->size = 0; *ln && isdigit((unsigned char)*ln); ln++) {
+ if (us->size > OFF_MAX / 10 - (*ln - '0')) {
+ ftp_seterr(FTP_PROTOCOL_ERROR);
+ us->size = -1;
+ return (-1);
+ }
us->size = us->size * 10 + *ln - '0';
+ }
if (*ln && !isspace((unsigned char)*ln)) {
ftp_seterr(FTP_PROTOCOL_ERROR);
us->size = -1;
@@ -704,8 +710,11 @@
goto ouch;
}
l = (e == FTP_PASSIVE_MODE ? 6 : 21);
- for (i = 0; *p && i < l; i++, p++)
+ for (i = 0; *p && i < l; i++, p++) {
addr[i] = strtol(p, &p, 10);
+ if (*p == '\0' && i < l - 1)
+ break;
+ }
if (i < l) {
e = FTP_PROTOCOL_ERROR;
goto ouch;
Index: http.c
===================================================================
--- http.c (revision 370066)
+++ http.c (working copy)
@@ -163,11 +163,15 @@
if (!isxdigit((unsigned char)*p))
return (-1);
if (isdigit((unsigned char)*p)) {
+ if (io->chunksize > OFF_MAX / 16 - (*p - '0'))
+ return (-1);
io->chunksize = io->chunksize * 16 +
*p - '0';
} else {
- io->chunksize = io->chunksize * 16 +
- 10 + tolower((unsigned char)*p) - 'a';
+ int digit = 10 + tolower((unsigned char)*p) - 'a';
+ if (io->chunksize > OFF_MAX / 16 - digit)
+ return (-1);
+ io->chunksize = io->chunksize * 16 + digit;
}
}
@@ -908,8 +912,11 @@
{
off_t len;
- for (len = 0; *p && isdigit((unsigned char)*p); ++p)
+ for (len = 0; *p && isdigit((unsigned char)*p); ++p) {
+ if (len > OFF_MAX / 10 - (*p - '0'))
+ return (-1);
len = len * 10 + (*p - '0');
+ }
if (*p)
return (-1);
DEBUGF("content length: [%lld]\n", (long long)len);
@@ -932,17 +939,26 @@
first = last = -1;
++p;
} else {
- for (first = 0; *p && isdigit((unsigned char)*p); ++p)
+ for (first = 0; *p && isdigit((unsigned char)*p); ++p) {
+ if (first > OFF_MAX / 10 - (*p - '0'))
+ return (-1);
first = first * 10 + *p - '0';
+ }
if (*p != '-')
return (-1);
- for (last = 0, ++p; *p && isdigit((unsigned char)*p); ++p)
+ for (last = 0, ++p; *p && isdigit((unsigned char)*p); ++p) {
+ if (last > OFF_MAX / 10 - (*p - '0'))
+ return (-1);
last = last * 10 + *p - '0';
+ }
}
if (first > last || *p != '/')
return (-1);
- for (len = 0, ++p; *p && isdigit((unsigned char)*p); ++p)
+ for (len = 0, ++p; *p && isdigit((unsigned char)*p); ++p) {
+ if (len > OFF_MAX / 10 - (*p - '0'))
+ return (-1);
len = len * 10 + *p - '0';
+ }
if (*p || len < last - first + 1)
return (-1);
if (first == -1) {
```https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10750apk is perceivably slower in an LXC container than in the "global zone" on th...2022-12-21T20:02:35ZGábor ADORJÁNIapk is perceivably slower in an LXC container than in the "global zone" on the same machineHello,
I know this report is quite vague, but the issue is pretty annoying and I'm not sure where to look for further clues. I searched in Gitlab, but could not find any relevant issues.
I run a small home server on a PC Engines APU2C4...Hello,
I know this report is quite vague, but the issue is pretty annoying and I'm not sure where to look for further clues. I searched in Gitlab, but could not find any relevant issues.
I run a small home server on a PC Engines APU2C4 box. The global zone is Alpine x86_64 3.14, and there's also an LXC container with the same OS. The server runs some other workloads, but it's not really heavily loaded.
Both Alpine deployments use the same remote package repository (dl-4) and the same HTTP proxy. There's only one restriction on the LXC container: the memory is capped at 128 MB, otherwise it can use all the available 4 CPU cores (just like the global zone). But there's plenty of free memory, so it should not be a limiting factor.
The GZ uses Ext4, but the container is on ZFS (same mSATA SSD, different partitions). Watching apk with `strace` revealed it does some heavy lifting in `/lib/apk/db`, so to give an edge to the LXC container, I moved it temporarily to ramdisk. It did not help.
After having installed `ltrace`, I measured the library calls, so here are some numbers below. I executed `ltrace -t apk install ltrace` a couple of times on each OS instances, which stresses the package manager, but does not change the system.
Snippet from the output in the global zone:
```
23:42:51 getopt_long(3, 0x7fff1f9630d8, "fhiqX:p:UvVslut:", 0x7fff1f9624b8, nil) = -1
23:42:51 strcmp("add", "add") = 0
23:42:51 apk_db_init(0x5633f983b900, 0x5633f983653a, 0, 4) = 0x7fac08a12790
23:42:52 signal(SIGINT, 0x5633f982ef29) = 0
23:42:52 apk_db_open(0x5633f983b900, 0x7fff1f963010, 0, 0) = 0
23:42:54 apk_array_resize(0x7fac08a12790, 1, 8, 179) = 0x7fac074ed200
23:42:54 apk_array_resize(0, 108, 24, 0) = 0x7fac074a2ab0
23:42:54 getuid() = 0
```
The LXC container, when `/lib/apk/db` is on ZFS (compression=lz4, atime=off):
```
23:42:49 getopt_long(3, 0x7fff74767118, "fhiqX:p:UvVslut:", 0x7fff747664f8, nil) = -1
23:42:49 strcmp("add", "add") = 0
23:42:49 apk_db_init(0x555f33c82900, 0x555f33c7d53a, 0, 4) = 0x7fedae2ce790
23:42:49 signal(SIGINT, 0x555f33c75f29) = 0
23:42:49 apk_db_open(0x555f33c82900, 0x7fff74767050, 0, 0) = 0
23:42:55 apk_array_resize(0x7fedae2ce790, 1, 8, 179) = 0x7fedac65cdd0
23:42:55 apk_array_resize(0, 72, 24, 0) = 0x7fedac798f10
23:42:55 getuid() = 0
```
The LXC container, now `/lib/apk/db` was tmpfs (original files copied over):
```
23:49:50 getopt_long(3, 0x7ffd23e96b48, "fhiqX:p:UvVslut:", 0x7ffd23e95f28, nil) = -1
23:49:50 strcmp("add", "add") = 0
23:49:50 apk_db_init(0x559689884900, 0x55968987f53a, 0, 4) = 0x7f066576e790
23:49:50 signal(SIGINT, 0x559689877f29) = 0
23:49:50 apk_db_open(0x559689884900, 0x7ffd23e96a80, 0, 0) = 0
23:49:55 apk_array_resize(0x7f066576e790, 1, 8, 179) = 0x7f0663afcdd0
23:49:55 apk_array_resize(0, 72, 24, 0) = 0x7f0663c38f10
23:49:55 getuid() = 0
```
As you can see, `apk_db_open()` suffers a massive, 5-6s delay, compared to the instance running in the global zone.
TBH the container has more packages installed, the `/lib/apk/db/installed` file is 1064 kB in the GZ, but 4806 kB in the LXC container (2401 kB on disk because of ZFS compression).
I would not think this difference in the file size causes the delay, or does it?
Any clues would be appreciated, or tips what other tests I should run.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10753Incorrect architecture name prevents gcompat from working2021-07-27T05:26:57ZDull BananasIncorrect architecture name prevents gcompat from workinghttps://git.adelielinux.org/adelie/gcompat/-/issues/343https://git.adelielinux.org/adelie/gcompat/-/issues/343https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10754apk should prune obsolete indices2023-04-10T20:13:17ZAriadne Conillariadne@ariadne.spaceapk should prune obsolete indicesOn my machine:
```
treefort:~$ ls -al /var/cache/apk/APKINDEX.*
-rw-r--r-- 1 root root 656814 Sep 22 2020 /var/cache/apk/APKINDEX.066df28d.tar.gz
-rw-r--r-- 1 root root 634253 Sep 6 2020 /var/cache/apk/APK...On my machine:
```
treefort:~$ ls -al /var/cache/apk/APKINDEX.*
-rw-r--r-- 1 root root 656814 Sep 22 2020 /var/cache/apk/APKINDEX.066df28d.tar.gz
-rw-r--r-- 1 root root 634253 Sep 6 2020 /var/cache/apk/APKINDEX.2c4ac24e.tar.gz
-rw-r--r-- 1 root root 633808 Sep 22 2020 /var/cache/apk/APKINDEX.30e6f5af.tar.gz
-rw-r--r-- 1 root root 1145983 Sep 6 2020 /var/cache/apk/APKINDEX.40a3604f.tar.gz
-rw-r--r-- 1 root root 1566651 Jun 25 13:03 /var/cache/apk/APKINDEX.74fbe57d.tar.gz
-rw-r--r-- 1 root root 642689 Jun 25 13:03 /var/cache/apk/APKINDEX.924f3f67.tar.gz
-rw-r--r-- 1 root root 1226681 Sep 22 2020 /var/cache/apk/APKINDEX.b53994b4.tar.gz
-rw-r--r-- 1 root root 638355 Jun 25 13:03 /var/cache/apk/APKINDEX.e3b89664.tar.gz
```
@mps has also noticed similar. We should garbage collect these obsolete indices.v3.0https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10755replaced files are not restored when uninstalling replacing package2022-12-21T20:28:45ZAlex Xu (Hello71)replaced files are not restored when uninstalling replacing packageexample: install libc6-compat, then install gcompat, then remove gcompat. expected behavior is libc6-compat files are restored, but this doesn't happenexample: install libc6-compat, then install gcompat, then remove gcompat. expected behavior is libc6-compat files are restored, but this doesn't happenv3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10756Document proxy support better2022-12-21T19:39:45ZHadmut DanischDocument proxy support betterThis is rather a documentation than a software issue, but the wiki didn't let me write to the discussion page of the apk management.
When creating virtual images (especially with docker) with alpine (what it is just perfect for), it ta...This is rather a documentation than a software issue, but the wiki didn't let me write to the discussion page of the apk management.
When creating virtual images (especially with docker) with alpine (what it is just perfect for), it takes typically lots of iterations to recreate the image and have lots of apk packages installed from scratch. Since every installation run typically starts with a fresh, clean system without a persistent cache dir, there is no point in using the local cache feature of apk.
Fetching the images again with every run is time consuming, creates network traffic (possibly expensive), and puts load on alpine's servers. So there's good reason to try to have some local mirror/cache. Unfortunately I didn't find any hint in the docs on what's the recommended way. They are just mentioning apk's local cache function.
Other package managers like apt, yum, gem allow to configure external caches/proxies.
My guess (not yet tested) would be hat apk should honor a https_proxy environment variable pointing to an external, HTTPS-intercepting cache after installing it's certificate to /etc/ssl/certs, but I didn't try this yet.
It would therefore be good to have a section in the documentation about how to use apk with some external cache mechanism.backloghttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10758Ignored / phantom packages2022-12-21T19:37:22ZAlan DiwixIgnored / phantom packagesIs there any way to replace a package with "phantom" version of it that neither replaces nor introduces any files, but satisfies the same dependencies as original?
For example xbps' ignorepkg:
https://man.voidlinux.org/xbps.d.5
If not, ...Is there any way to replace a package with "phantom" version of it that neither replaces nor introduces any files, but satisfies the same dependencies as original?
For example xbps' ignorepkg:
https://man.voidlinux.org/xbps.d.5
If not, I guess this would be a feature request.v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10759Typo in apk list --upgradable makes long option fail2021-08-23T08:08:45ZSaribroTypo in apk list --upgradable makes long option failIn apk-tools 2.12.7:
apk list --help shows the long-form option "--upgradable" ( https://git.alpinelinux.org/apk-tools/tree/doc/apk-list.8.scd line 30), however, the code scans for "--upgradeable" ( https://git.alpinelinux.org/apk-tools...In apk-tools 2.12.7:
apk list --help shows the long-form option "--upgradable" ( https://git.alpinelinux.org/apk-tools/tree/doc/apk-list.8.scd line 30), however, the code scans for "--upgradeable" ( https://git.alpinelinux.org/apk-tools/tree/src/app_list.c line 182).
"--upgradable" fails, and prints the help,\
"--upgradeable" works.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10760Parallelize triggers2024-01-10T16:03:46ZAriadne Conillariadne@ariadne.spaceParallelize triggersSome triggers can take multiple seconds (up to minutes) to run, like the `mkinitfs` trigger.
It would be a nice win to run all triggers in parallel.
Another thing to consider might be running triggers in the background.Some triggers can take multiple seconds (up to minutes) to run, like the `mkinitfs` trigger.
It would be a nice win to run all triggers in parallel.
Another thing to consider might be running triggers in the background.v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10761Proposal: Make apk-fetch respect --arch too2024-03-25T11:49:10ZSören TempelProposal: Make apk-fetch respect --arch tooThe `--arch` flag is a global option to `apk(8)`. Unfortunately, it only seems to be respected presently when used in conjunction with `--root`. For this reason, `apk fetch --arch riscv64 linux-edge` will download the `linux-edge` packag...The `--arch` flag is a global option to `apk(8)`. Unfortunately, it only seems to be respected presently when used in conjunction with `--root`. For this reason, `apk fetch --arch riscv64 linux-edge` will download the `linux-edge` package for the host architecture (e.g. `x86_64`, not for `riscv64`). Unfortunately, it also does not emit an error message which is very confusing.
I would propose the following changes:
1. Make `apk-fetch(8)` respect `--arch`, e.g. `apk fetch --arch riscv64 linux-edge` should download the `linux-edge` package for the `riscv64` architecture.
2. Make `apk` subcommands which do not support `--arch` fail. This was a source of confusion in the past, see for example https://gitlab.alpinelinux.org/alpine/aports/-/issues/12905v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10762apk-tools scripts db preventing reproducible docker builds2023-02-23T09:35:23Znvaatstraapk-tools scripts db preventing reproducible docker buildsWhen you pull an Alpine Docker image and add a package, the `/lib/apk/db/scripts.tar` archive is updated with timing based on the current timestamp. Building multiple images using the same Dockerfile hence generates images which are not ...When you pull an Alpine Docker image and add a package, the `/lib/apk/db/scripts.tar` archive is updated with timing based on the current timestamp. Building multiple images using the same Dockerfile hence generates images which are not identical.
Similar to MR apk-tools!63 (io_archive: Use SOURCE_DATE_EPOCH for meta files instead of current time) it would be great to have this timestamp based on SOURCE_DATE_EPOCH.
Suggestion: Perhaps change this behaviour by using the `apk_get_build_time()` introduced based on the above mentioned MR in [src/database.c](src/database.c#L1012) instead of `time_t now = time(NULL)`?https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10763Build breakage in OpenWrt build system2021-08-25T19:11:52ZPaul SpoorenBuild breakage in OpenWrt build systemHi, since OpenWrt wants to change over to APK I've ported it to the build system, which automatically packs copiled packages into packages. The latest APK version doesn't compile crashing with the following message, any ideas?
```
Apply...Hi, since OpenWrt wants to change over to APK I've ported it to the build system, which automatically packs copiled packages into packages. The latest APK version doesn't compile crashing with the following message, any ideas?
```
Applying ./patches/0001-remove-doc-generation.patch using plaintext:
patching file Makefile
Applying ./patches/0002-limits.h.patch using plaintext:
patching file src/tar.c
touch /home/user/src/openwrt/openwrt/build_dir/hostpkg/apk-tools-74361938857d62149a93e992fb8edccc5a322b4a/.preparedfcec5eb5429e8ed8f43a05d61213ed27_6664517399ebbbc92a37c5bb081b5c53
(cd /home/user/src/openwrt/openwrt/build_dir/hostpkg/apk-tools-74361938857d62149a93e992fb8edccc5a322b4a/; if [ -x configure ]; then cp -fpR /home/user/src/openwrt/openwrt/scripts/config.{guess,sub} /home/user/src/openwrt/openwrt/build_dir/hostpkg/apk-tools-74361938857d62149a93e992fb8edccc5a322b4a// && CC="ccache gcc" CFLAGS="-O2 -I/home/user/src/openwrt/openwrt/staging_dir/host/include -I/home/user/src/openwrt/openwrt/staging_dir/hostpkg/include -I/home/user/src/openwrt/openwrt/staging_dir/target-aarch64_cortex-a72_musl/host/include -I/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/" CXX="ccache g++" CPPFLAGS="-I/home/user/src/openwrt/openwrt/staging_dir/host/include -I/home/user/src/openwrt/openwrt/staging_dir/hostpkg/include -I/home/user/src/openwrt/openwrt/staging_dir/target-aarch64_cortex-a72_musl/host/include" LDFLAGS="-L/home/user/src/openwrt/openwrt/staging_dir/host/lib -L/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib -L/home/user/src/openwrt/openwrt/staging_dir/target-aarch64_cortex-a72_musl/host/lib -pthread" CONFIG_SHELL="/usr/bin/env bash" bash ./configure --target=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --program-prefix="" --program-suffix="" --prefix=/home/user/src/openwrt/openwrt/staging_dir/hostpkg --exec-prefix=/home/user/src/openwrt/openwrt/staging_dir/hostpkg --sysconfdir=/home/user/src/openwrt/openwrt/staging_dir/hostpkg/etc --localstatedir=/home/user/src/openwrt/openwrt/staging_dir/hostpkg/var --sbindir=/home/user/src/openwrt/openwrt/staging_dir/hostpkg/bin ; fi )
touch /home/user/src/openwrt/openwrt/build_dir/hostpkg/apk-tools-74361938857d62149a93e992fb8edccc5a322b4a/.configured
CFLAGS="-O2 -I/home/user/src/openwrt/openwrt/staging_dir/host/include -I/home/user/src/openwrt/openwrt/staging_dir/hostpkg/include -I/home/user/src/openwrt/openwrt/staging_dir/target-aarch64_cortex-a72_musl/host/include -I/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/" CPPFLAGS="-I/home/user/src/openwrt/openwrt/staging_dir/host/include -I/home/user/src/openwrt/openwrt/staging_dir/hostpkg/include -I/home/user/src/openwrt/openwrt/staging_dir/target-aarch64_cortex-a72_musl/host/include" CXXFLAGS="" LDFLAGS="-L/home/user/src/openwrt/openwrt/staging_dir/host/lib -L/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib -L/home/user/src/openwrt/openwrt/staging_dir/target-aarch64_cortex-a72_musl/host/lib -pthread" make -j1 -C /home/user/src/openwrt/openwrt/build_dir/hostpkg/apk-tools-74361938857d62149a93e992fb8edccc5a322b4a DESTDIR=/home/user/src/openwrt/openwrt/staging_dir/hostpkg LUA=no
make[3]: Entering directory '/home/user/src/openwrt/openwrt/build_dir/hostpkg/apk-tools-74361938857d62149a93e992fb8edccc5a322b4a'
GENERR libfetch/ftperr.h
GENERR libfetch/httperr.h
CC libfetch/common.o
CC libfetch/fetch.o
CC libfetch/file.o
CC libfetch/ftp.o
CC libfetch/http.o
CC libfetch/openssl-compat.o
AR libfetch/libfetch.a
SED src/apk.pc
GENHELP src/help.h
ln -sf libapk.so.2.99.0 src/libapk.so
CC src/adb.o
CC src/adb_comp.o
CC src/adb_walk_adb.o
CC src/adb_walk_genadb.o
CC src/adb_walk_gentext.o
CC src/adb_walk_text.o
CC src/apk_adb.o
CC src/atom.o
CC src/blob.o
CC src/commit.o
CC src/common.o
CC src/context.o
CC src/crypto_openssl.o
CC src/database.o
CC src/extract.o
CC src/extract_v2.o
CC src/extract_v3.o
CC src/hash.o
CC src/io.o
CC src/io_gunzip.o
CC src/io_url.o
CC src/package.o
CC src/pathbuilder.o
CC src/print.o
CC src/solver.o
CC src/tar.o
CC src/trust.o
CC src/version.o
AR src/libapk.a
LD -shared src/libapk.so.2.99.0
CC src/apk.o
CC src/app_adbdump.o
CC src/app_adbsign.o
CC src/app_add.o
CC src/app_audit.o
CC src/app_cache.o
CC src/app_convdb.o
CC src/app_convndx.o
CC src/app_del.o
CC src/app_dot.o
CC src/app_extract.o
CC src/app_fetch.o
CC src/app_fix.o
CC src/app_index.o
CC src/app_info.o
CC src/app_list.o
CC src/app_manifest.o
CC src/app_mkndx.o
CC src/app_mkpkg.o
CC src/app_policy.o
CC src/app_search.o
CC src/app_stats.o
CC src/app_update.o
CC src/app_upgrade.o
CC src/app_verify.o
CC src/app_version.o
CC src/app_vertest.o
CC src/applet.o
LD src/apk
/usr/bin/ld: /home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/libapk.so: warning: EVP_CipherFinal is often misused, please use EVP_CipherFinal_ex and EVP_CIPHER_CTX_cleanup
/usr/bin/ld: /home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/libapk.so: warning: EVP_DecryptFinal is often misused, please use EVP_DecryptFinal_ex and EVP_CIPHER_CTX_cleanup
/usr/bin/ld: /home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/libapk.so: warning: EVP_EncryptFinal is often misused, please use EVP_EncryptFinal_ex and EVP_CIPHER_CTX_cleanup
/usr/bin/ld: src/app_convndx.o: in function `conv_main':
app_convndx.c:(.text+0x38b): undefined reference to `apk_extract'
/usr/bin/ld: src/app_extract.o: in function `extract_file':
app_extract.c:(.text+0x320): undefined reference to `apk_extract_file'
/usr/bin/ld: src/app_extract.o: in function `extract_main':
app_extract.c:(.text+0x638): undefined reference to `apk_extract'
/usr/bin/ld: src/app_extract.o:(.data.rel.ro+0x8): undefined reference to `apk_extract_v2_meta'
/usr/bin/ld: src/app_manifest.o: in function `process_match':
app_manifest.c:(.text+0x63f): undefined reference to `apk_extract'
/usr/bin/ld: src/app_manifest.o:(.data.rel.ro+0x8): undefined reference to `apk_extract_v2_meta'
/usr/bin/ld: src/app_mkndx.o: in function `mkndx_read_v2_pkginfo':
app_mkndx.c:(.text+0x36a): undefined reference to `apk_extract_v2_control'
/usr/bin/ld: src/app_mkndx.o: in function `mkndx_main':
app_mkndx.c:(.text+0x9ed): undefined reference to `apk_extract'
/usr/bin/ld: src/app_verify.o: in function `verify_main':
app_verify.c:(.text+0xb8): undefined reference to `apk_extract'
collect2: error: ld returned 1 exit status
make[4]: *** [Make.rules:276: src/apk] Error 1
make[3]: *** [Make.rules:337: src/] Error 2
make[3]: Leaving directory '/home/user/src/openwrt/openwrt/build_dir/hostpkg/apk-tools-74361938857d62149a93e992fb8edccc5a322b4a'
make[2]: *** [Makefile:58: /home/user/src/openwrt/openwrt/build_dir/hostpkg/apk-tools-74361938857d62149a93e992fb8edccc5a322b4a/.built] Error 2
make[2]: Leaving directory '/home/user/src/openwrt/openwrt/package/utils/apk'
time: package/utils/apk/host-compile#16.60#1.67#18.24
ERROR: package/utils/apk [host] failed to build.
make[1]: *** [package/Makefile:116: package/utils/apk/host/compile] Error 1
make[1]: Leaving directory '/home/user/src/openwrt/openwrt'
make: *** [/home/user/src/openwrt/openwrt/include/toplevel.mk:230: package/apk/host/compile] Error 2
```https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10764`apk upgrade` sometimes purges packages required by world2022-12-28T12:59:45ZArnav Singh`apk upgrade` sometimes purges packages required by world(This is on a pinephone running pmOS Edge with the Phosh UI, ie `postmarketos-ui-phosh` in world.)
apk-tools-2.12.7-r0
```sh
$ sudo apk upgrade -Uasvv
WARNING: Ignoring http://mirror.postmarketos.org/postmarketos/master: No such file ...(This is on a pinephone running pmOS Edge with the Phosh UI, ie `postmarketos-ui-phosh` in world.)
apk-tools-2.12.7-r0
```sh
$ sudo apk upgrade -Uasvv
WARNING: Ignoring http://mirror.postmarketos.org/postmarketos/master: No such file or directory
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/edge/main: No such file or directory
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/edge/community: No such file or directory
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/edge/testing: No such file or directory
(1/80) Purging ssl_client (1.34.0-r2)
(2/80) Purging dbus-openrc (1.12.20-r2)
(3/80) Purging modemmanager-openrc (9999_git20210819-r0)
(4/80) Purging cyrus-sasl-openrc (2.1.27-r12)
(5/80) Purging gpsd-openrc (3.23-r0)
(6/80) Purging udev-init-scripts-openrc (35-r0)
(7/80) Purging eudev-openrc (3.2.10-r1)
(8/80) Purging cryptsetup-openrc (2.4.0-r1)
(9/80) Purging device-mapper-udev (2.02.187-r1)
(10/80) Purging kmod-openrc (29-r0)
(11/80) Purging multipath-tools-openrc (0.8.6-r0)
(12/80) Purging waked-openrc (0.1.0-r0)
(13/80) Purging git-perl (2.33.0-r0)
(14/80) Purging perl-git (2.33.0-r0)
(15/80) Purging perl-error (0.17029-r1)
(16/80) Purging postmarketos-tweaks-pinephone (0.7.3-r0)
(17/80) Purging bluez-openrc (5.60-r3)
(18/80) Purging iptables-openrc (1.8.7-r1)
(19/80) Purging networkmanager-openrc (1.32.10-r0)
(20/80) Purging elogind-openrc (246.10-r3)
(21/80) Purging device-pine64-pinephone-upower (0.32-r0)
(22/80) Purging openrc-settingsd-openrc (1.1.0-r0)
(23/80) Purging pulseaudio-bluez (15.0-r0)
(24/80) Purging pulseaudio-openrc (15.0-r0)
(25/80) Purging alsa-utils-openrc (1.2.5.1-r2)
(26/80) Purging libcanberra-pulse (0.30-r6)
(27/80) Purging postmarketos-tweaks-phosh (0.7.3-r0)
(28/80) Purging chrony-openrc (4.1-r0)
(29/80) Purging haveged-openrc (1.9.14-r1)
(30/80) Purging postmarketos-config-nftables-networkmanager (0.6-r0)
(31/80) Purging postmarketos-base-nftables (15-r0)
(32/80) Purging postmarketos-config-nftables (0.6-r0)
(33/80) Purging nftables-openrc (1.0.0-r0)
(34/80) Purging util-linux-misc (2.37.2-r1)
(35/80) Purging runuser (2.37.2-r1)
(36/80) Purging hexdump (2.37.2-r1)
(37/80) Purging uuidgen (2.37.2-r1)
(38/80) Purging blkid (2.37.2-r1)
(39/80) Purging sfdisk (2.37.2-r1)
(40/80) Purging mcookie (2.37.2-r1)
(41/80) Purging wipefs (2.37.2-r1)
(42/80) Purging cfdisk (2.37.2-r1)
(43/80) Purging util-linux-openrc (2.37.2-r1)
(44/80) Purging flock (2.37.2-r1)
(45/80) Purging lsblk (2.37.2-r1)
(46/80) Purging setpriv (2.37.2-r1)
(47/80) Purging logger (2.37.2-r1)
(48/80) Purging partx (2.37.2-r1)
(49/80) Purging findmnt (2.37.2-r1)
(50/80) Purging wpa_supplicant-openrc (2.9-r15)
(51/80) Purging ifupdown-ng-wifi (0.11.3-r0)
(52/80) Purging postmarketos-base-ui-networkmanager (4-r1)
(53/80) Purging sleep-inhibitor-openrc (1.11.1-r0)
(54/80) Purging postmarketos-base-ui-elogind (4-r1)
(55/80) Purging sleep-inhibitor (1.11.1-r0)
(56/80) Purging py3-ruamel.yaml (0.16.12-r1)
(57/80) Purging py3-ruamel.yaml.clib (0.2.2-r2)
(58/80) Purging obex-capabilities-bluez-obexd (0.2.1-r0)
(59/80) Purging postmarketos-base-ui-bluez-obexd (4-r1)
(60/80) Purging obex-capabilities (0.2.1-r0)
(61/80) Purging py3-dbus (1.2.18-r0)
(62/80) Purging postmarketos-base-ui-pulseaudio (4-r1)
(63/80) Purging postmarketos-base-ui-tinydm (4-r1)
(64/80) Purging fuse-openrc (3.10.4-r0)
(65/80) Purging device-pine64-pinephone-phosh (0.32-r0)
(66/80) Purging wys-pinephone (0.1.7-r1)
(67/80) Purging pulseaudio-utils (15.0-r0)
(68/80) Purging meson-vim (0.59.1-r0)
(69/80) Purging nftables-vim (0_git20200629-r0)
(70/80) Purging ifupdown-ng-wireguard (0.11.3-r0)
(71/80) Purging iproute2-tc (5.13.0-r0)
(72/80) Purging ifupdown-ng-iproute2 (0.11.3-r0)
(73/80) Purging iproute2-minimal (5.13.0-r0)
(74/80) Purging iproute2-ss (5.13.0-r0)
(75/80) Purging ip6tables-openrc (1.8.7-r1)
(76/80) Purging polkit-openrc (0.119-r5)
(77/80) Purging libretls (3.3.4-r0)
(78/80) Purging libeconf (0.4.1-r0)
(79/80) Purging libfdisk (2.37.2-r1)
(80/80) Purging libsmartcols (2.37.2-r1)
OK: 1600 MiB in 698 packages
```
re: the "No such file or directory", `strace -fe file` says:
```
...
faccessat(AT_FDCWD, "/etc/apk/interactive", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
openat(3, "etc/apk/arch", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 4
openat(3, "etc/apk/protected_paths.d", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 4
openat(4, "ca-certificates.list", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 5
openat(3, "etc/apk/cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 4
openat(3, "etc/apk/keys", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 5
openat(3, "etc/apk/world", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 6
openat(3, "lib/apk/db/installed", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 6
openat(3, "lib/apk/db/triggers", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 6
openat(3, "lib/apk/db/scripts.tar", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 6
openat(3, "etc/passwd", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 7
openat(3, "etc/group", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 7
openat(4, "installed", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(3, "etc/apk/repositories", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 6
openat(4, "APKINDEX.bdd0d494.tar.gz", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
WARNING: Ignoring http://mirror.postmarketos.org/postmarketos/master: No such file or directory
openat(4, "APKINDEX.066df28d.tar.gz", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/edge/main: No such file or directory
openat(4, "APKINDEX.b53994b4.tar.gz", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/edge/community: No such file or directory
openat(4, "APKINDEX.30e6f5af.tar.gz", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/edge/testing: No such file or directory
openat(3, "etc/apk/repositories.d", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(3, "etc/apk/commit_hooks.d", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
(1/80) Purging ssl_client (1.34.0-r2)
...
```
Those files are indeed missing:
```sh
$ ls -la /etc/apk/cache/
total 0
drwxr-xr-x 2 root root 40 Sep 5 13:14 .
drwxr-xr-x 3 root root 60 Sep 4 21:32 ..
```
However, the device has a working internet connection, and `strace -fe network` doesn't show `apk upgrade` trying to fetch those files first. Also, purging those 80 packages should not happen anyway, since those packages are required by world:
```sh
$ sudo apk del -s ssl_client # (1/80)
WARNING: Ignoring http://mirror.postmarketos.org/postmarketos/master: No such file or directory
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/edge/main: No such file or directory
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/edge/community: No such file or directory
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/edge/testing: No such file or directory
World updated, but the following packages are not removed due to:
ssl_client: alpine-base postmarketos-base postmarketos-ui-phosh device-pine64-pinephone portfolio gnome-sound-recorder
postmarketos-tweaks powersupply firefox-esr vvmplayer gnome-contacts calls chatty gnome-calculator eog gnome-clocks
gnome-passwordsafe otpclient pipewire-alsa wireguard-tools-wg-quick curl gst-plugins-bad megapixels git moreutils
gst-plugins-good gst-plugins-ugly chromium osk-sdl font-noto sxmo-dmenu py3-pydbus grim foot mpv polkit-elogind-libs
polkit-elogind tmux py3-requests py3-serial meson vim gdb
```
The same is true of the other 79 packages. I'm not sure what's special about these 80 packages out of the ~700 packages I have installed that `apk upgrade` wants to purge them.
If I run `apk update` before `apk upgrade -Uas`, `apk update` has no problem fetching the repositories and creating the files in the cache, and then `apk upgrade -Uas` also works fine.
I've reproduced this multiple times over the last few days but I'm not sure what the trigger is. I can of course force it to happen with `sudo rm /etc/apk/cache/installed /etc/apk/cache/*.tar.gz`https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10765Add support for variables in /etc/apk/repositories like Yum has2022-12-21T19:39:44ZChristoph ObexerAdd support for variables in /etc/apk/repositories like Yum hasThis would IMO solve #10756 by replacing the repo in /etc/apk/repositories by a caching proxy
An example need of such a feature is documented in the wiki:
https://wiki.alpinelinux.org/wiki/Alpine_newbie_apk_packages#New_users:_installin...This would IMO solve #10756 by replacing the repo in /etc/apk/repositories by a caching proxy
An example need of such a feature is documented in the wiki:
https://wiki.alpinelinux.org/wiki/Alpine_newbie_apk_packages#New_users:_installing_needed_packages
```
# old /etc/apk/repositories from the example above
cat > /etc/apk/repositories << EOF; $(echo)
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/main
EOF
```
would become:
```
# proposed /etc/apk/repositories
cat > /etc/apk/repositories << EOF; $(echo)
http://dl-cdn.alpinelinux.org/alpine/v\$releasever/main
EOF
```
Now that is of little use, BUT we use Artifactory as cache and thus point our Alpine containers to a repo mirror there... but need a separate repo file for every alpine release or synthesize a repo file based on the alpine release... that sounds easy enough but the code that needs to synthesize the repo file needs to be running outside the container and thus has to guess the correct release number from docker tags for various base images (node, go, java, ...)...
We would love to be able to just bind mount `/etc/apk/repositories` with our artifactory repositories (and credentials) without fancy magic and use `$releasever` as a placeholder for the version inside them.backloghttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10766proposal: add logging feature to apk command2022-12-21T19:29:14ZHGpunktTproposal: add logging feature to apk commandSome 8 years ago there has been a discussion concerning logging from apk command
[](https://lists.alpinelinux.org/~alpine/devel/patches/468)
but there is still no option for apk to cause logging the (de)installation of packages.
The comm...Some 8 years ago there has been a discussion concerning logging from apk command
[](https://lists.alpinelinux.org/~alpine/devel/patches/468)
but there is still no option for apk to cause logging the (de)installation of packages.
The commands
`apk add pkgname 2>&1 | while IFS= read -r line
do printf '%s %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$line"; done | tee -a /var/log/apk`
keep record of package installation, but I would appreciate very much to have such a feature integrated in the apk command.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10767apk: HTTPS broken after system update2021-11-10T15:25:45ZMogens Jensenapk: HTTPS broken after system updateAfter updating an Alpine edge x86_64 system, apk no longer works with HTTPS:
```
$ sudo apk update -v
fetch https://ftp.acc.umu.se/mirror/alpinelinux.org/edge/main/x86_64/APKINDEX.tar.gz
480BD0E0A57F0000:error:0A000086:SSL routines:tls_...After updating an Alpine edge x86_64 system, apk no longer works with HTTPS:
```
$ sudo apk update -v
fetch https://ftp.acc.umu.se/mirror/alpinelinux.org/edge/main/x86_64/APKINDEX.tar.gz
480BD0E0A57F0000:error:0A000086:SSL routines:tls_post_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:1882:
ERROR: https://ftp.acc.umu.se/mirror/alpinelinux.org/edge/main: Permission denied
WARNING: Ignoring https://ftp.acc.umu.se/mirror/alpinelinux.org/edge/main: No such file or directory
```
For some reason `ca-certificates` was removed during the system update, so changing the mirror to HTTP and reinstalling it fixes the problem.
Should `apk-tools` depend on `ca-certificates` to avoid this problem in the future?https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10768"apk" give "Illegal instruction" in x86 edge on vortex86 device.2021-09-16T09:21:56ZThorbjørn Ravn Andersen"apk" give "Illegal instruction" in x86 edge on vortex86 device.We need to deploy Alpine Linux on vortex86 devices and since I used edge the last time about a month ago something has happened. I did a v3.14 install to the harddrive, and pointed the repositories to edge and did an `apk upgrade`. Now ...We need to deploy Alpine Linux on vortex86 devices and since I used edge the last time about a month ago something has happened. I did a v3.14 install to the harddrive, and pointed the repositories to edge and did an `apk upgrade`. Now this happens.
```
device-001beb6a7a42:~# gdb /sbin/apk
GNU gdb (GDB) 10.2
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "i586-alpine-linux-musl".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /sbin/apk...
(No debugging symbols found in /sbin/apk)
(gdb) run
Starting program: /sbin/apk
Program received signal SIGILL, Illegal instruction.
0xb7d312d0 in ?? () from /lib/libcrypto.so.3
(gdb)
```
Also
```
device-001beb6a7a42:~# cat /proc/cpuinfo
processor : 0
vendor_id : Vortex86 SoC
cpu family : 5
model : 2
model name : 05/02
stepping : 2
cpu MHz : 800.031
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fdiv_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu tsc cx8 cpuid
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips : 1600.73
clflush size : 32
cache_alignment : 32
address sizes : 32 bits physical, 32 bits virtual
power management:
```
Please advisehttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10769[RFC] rename apk to avoid confusion with Android package format2022-12-21T19:39:44ZPaul Spooren[RFC] rename apk to avoid confusion with Android package formatWhenever looking up issues or code around the `apk` package manage I'll likely find results describing corner cases of the Android package format `.apk`.
I'm wondering if a *better* name could be found in some future. Clearly this is no...Whenever looking up issues or code around the `apk` package manage I'll likely find results describing corner cases of the Android package format `.apk`.
I'm wondering if a *better* name could be found in some future. Clearly this is not a pushing issues but I'm a bit concerned that once `apk` is used for *OpenWrt*, a flood of obscure error messages and confused user appear.backloghttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10771pkgusers/pkggroups + install -o/-g doesn't stick in /var2023-12-12T22:22:03ZDrew DeVaultpkgusers/pkggroups + install -o/-g doesn't stick in /varhttps://git.sr.ht/~sircmpwn/sr.ht-apkbuilds/tree/master/item/sr.ht/sr.ht-uacme/APKBUILD#L43
This does not seem to work; I have to add a post-install to force the desired user/group. The tarball looks right, though, may be an apk-tools i...https://git.sr.ht/~sircmpwn/sr.ht-apkbuilds/tree/master/item/sr.ht/sr.ht-uacme/APKBUILD#L43
This does not seem to work; I have to add a post-install to force the desired user/group. The tarball looks right, though, may be an apk-tools issue?v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10770[Question] From where does apk info source information?2022-12-21T20:20:23ZRyan Parman[Question] From where does apk info source information?Using Alpine support in Artifactory to store internal packages. Trying to track down the source of a bug.
There is one copy of a package stored in Artifactory, but after `apk update`, running `apk info {package}` shows the same package ...Using Alpine support in Artifactory to store internal packages. Trying to track down the source of a bug.
There is one copy of a package stored in Artifactory, but after `apk update`, running `apk info {package}` shows the same package data twice. (This package does not existing in the official, upstream repos provided by the Alpine team.)
When running `apk add {package}`, it won't install because `apk` thinks that it conflicts with… itself.
Before I go back to JFrog and ask for a fix that will take them a year to release, I'd like to understand how `apk` sources its data for `apk info` and `apk add` to figure out if it's my bug, their bug, or an `apk` bug. I've looked through the Alpine wiki and searched the web, but haven't been able to find anything meaningful.
Thanks!https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10772show summary of changes before "apk add"2021-10-14T08:39:10ZDocbrokeshow summary of changes before "apk add"Running apk add starts making changes, which are sometime unexpected.
For example, I was looking at nota
```
[ins]$ apk info -a nota
nota-2.0.0-r1 description:
Nota is a simple and convergent text editor
nota-2.0.0-r1 webpage:
https://i...Running apk add starts making changes, which are sometime unexpected.
For example, I was looking at nota
```
[ins]$ apk info -a nota
nota-2.0.0-r1 description:
Nota is a simple and convergent text editor
nota-2.0.0-r1 webpage:
https://invent.kde.org/maui/nota
nota-2.0.0-r1 installed size:
268 KiB
nota-2.0.0-r1 depends on:
mauikit-texteditor
so:libKF5CoreAddons.so.5
so:libKF5I18n.so.5
so:libMauiKit.so
so:libMauiKitFileBrowsing.so.1
so:libQt5Core.so.5
so:libQt5Gui.so.5
so:libQt5Qml.so.5
so:libQt5Widgets.so.5
so:libc.musl-x86_64.so.1
so:libstdc++.so.6
nota-2.0.0-r1 provides:
cmd:nota
nota-2.0.0-r1 has auto-install rule:
nota-2.0.0-r1 license:
GPL-2.0-or-later
```
Only 268 KiB and few libs, So I decided to try.
```
[ins]$ doas apk add nota
(1/102) Purging gnome-keyring-lang (40.0-r0)
(2/102) Purging gnome-keyring-doc (40.0-r0)
(3/102) Purging gnome-keyring (40.0-r0)
(4/102) Installing kconfig (5.87.0-r0)
(5/102) Installing kconfig-doc (5.87.0-r0)
0%
```
It begin with removing gnome-keyring, and started to install 102 packages.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10773apk bash-completion2022-12-21T19:39:44ZJ0WIapk bash-completionapk should ship it's own completion file. This makes it easier for both experienced and new users of Alpine to deal with software packages.apk should ship it's own completion file. This makes it easier for both experienced and new users of Alpine to deal with software packages.backloghttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10774Version length limits2021-10-25T11:28:21ZInfinoidVersion length limitsWe ran into an issue where `apk add` would choose older versions of a locally built package over newer versions.
The packages were versioned using timestamps with one-second precision, like this: `1.0.0_pre20191002222144-r0`, `1.0.0_pre...We ran into an issue where `apk add` would choose older versions of a locally built package over newer versions.
The packages were versioned using timestamps with one-second precision, like this: `1.0.0_pre20191002222144-r0`, `1.0.0_pre20210530193627-r0`.
`apk add` considers the older version (from 2019) to be the latest one. Explicitly requesting the 2021 version causes `apk add` to claim that the package "will be DOWNGRADED".
The reason for this is that the loop at https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/master/src/version.c#L95 will try to parse the version number numerically, but it puts it in a 32 bit `int` and it does not detect overflow.
* `20191002222144 & 0xffffffff` is `(int)0x1583de40`, which is positive.
* `20210530193627 & 0xffffffff` is `(int)0xa17910db`, which is negative.
And so it chose the 2019 version as being the "newest".
Would it be possible to use `long`, instead of `int`?
Also, if versions have a size limit, it would be great if this limit were checked up front, perhaps when `APKINDEX` is being built. I noticed that `apk version --check` does not report a problem with these versions, even though they both overflow later on:
```
# apk version --check 1.0.0_pre20210530193627-r0 && echo success
success
```https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10775Alpine client is not supporting encoding in the repository URL string2021-12-17T08:17:25ZNana ChorageAlpine client is not supporting encoding in the repository URL stringHi Team,
We are using Jfrog private repositories for pull package.
To fetch packages we need to pass username:token in url for authentication.
This works fine in general scenarios.
====================================
vim /etc/apk/...Hi Team,
We are using Jfrog private repositories for pull package.
To fetch packages we need to pass username:token in url for authentication.
This works fine in general scenarios.
====================================
vim /etc/apk/repositories
https://useranme:mytoken@orgnization.jfrog.io/artifactory/alpine-org/v3.13/main
=====================================
We have one scenarios where , users are using "emails" as the user name.
====================================
vim /etc/apk/repositories
https://useranme@org.com:mytoken@orgnization.jfrog.io/artifactory/alpine-org/v3.13/main
This give error.
fetch https://useranme@org.com:mytoken@orgnization.jfrog.io/artifactory/alpine-org/v3.13/main/x86_64/APKINDEX.tar.gz
ERROR: https://useranme@org.com:mytoken@orgnization.jfrog.io/artifactory/alpine-org/v3.13/main: invalid URL (check your repositories file)
WARNING: Ignoring https://useranme@org.com:mytoken@orgnization.jfrog.io/artifactory/alpine-org/v3.13/main: No such file or directory
We also tried with encoding username.
https://useranme%40org.com:mytoken@orgnization.jfrog.io/artifactory/alpine-org/v3.13/main
This gives error:
fetch https://useranme%40org.com:mytoken@orgnization.jfrog.io/artifactory/alpine-org/v3.13/main/x86_64/APKINDEX.tar.gz
ERROR: https://useranme%40org.com:mytoken@orgnization.jfrog.io/artifactory/alpine-org/v3.13/main/main: Permission denied
WARNING: Ignoring https://useranme%40org.com:mytoken@orgnization.jfrog.io/artifactory/alpine-org/v3.13/main: No such file or directory
We contacted jforg on this and concluded that "Alpine client is not supporting encoding in the repository URL string"
Could you please help on this and advise correct approach on configuring authentication on alpine.
Just FYI , Debain offers to read authentication from conf file https://manpages.debian.org/testing/apt/apt_auth.conf.5.en.html
Do we have anything like this on for alpine ?
Thank you
Nanahttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10776Show warning when http(s) repository returns (permanent) redirect2023-10-12T10:08:44ZKevin DaudtShow warning when http(s) repository returns (permanent) redirectFrom time to time, we need to decommission a mirror. In general, we redirect the DNS record to a different server and return a permanent redirect.
It would be nice if apk could show a warning that the mirror has been redirected so users...From time to time, we need to decommission a mirror. In general, we redirect the DNS record to a different server and return a permanent redirect.
It would be nice if apk could show a warning that the mirror has been redirected so users are aware and can adjust their `/etc/apk/repositories`.v3.0https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10777Searching exact command name excludes matching results2023-10-12T10:08:44ZZach DeCookSearching exact command name excludes matching resultsI want to find a list of packages which provide `cmd:vis`.
If I do `apk search -q cmd:vis`, this provides
```
vis
outils-vis
calligra
sudo
```
Sudo is only shown because it provides `cmd:visudo` (calligra too), so I search with the `-...I want to find a list of packages which provide `cmd:vis`.
If I do `apk search -q cmd:vis`, this provides
```
vis
outils-vis
calligra
sudo
```
Sudo is only shown because it provides `cmd:visudo` (calligra too), so I search with the `--exact` flag.
```
outils-vis
```
`vis` seems to be missing because it provides more than just one cmd?
```sh
$ apk info -a vis
vis-0.7-r0 description:
Modern, legacy free, simple yet efficient vim-like editor
vis-0.7-r0 webpage:
https://github.com/martanne/vis
vis-0.7-r0 installed size:
1504 KiB
vis-0.7-r0 depends on:
!outils-vis
lua5.3-lpeg
so:libacl.so.1
so:libc.musl-aarch64.so.1
so:liblua-5.3.so.0
so:libncursesw.so.6
so:libtermkey.so.1
vis-0.7-r0 provides:
cmd:vis
cmd:vis-clipboard
cmd:vis-complete
cmd:vis-digraph
cmd:vis-menu
cmd:vis-open
vis-0.7-r0 has auto-install rule:
vis-0.7-r0 license:
ISC
```v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10778initdb and usrmerge-style systems2024-03-25T12:13:04ZDaniel Kolesainitdb and usrmerge-style systemsI'm using apk-tools as a downstream in https://chimera-linux.org. It works quite well, I've been able to deal with most aspects of the package manager (not yet sure about apk3 though; going to do the migration as soon as that goes stable...I'm using apk-tools as a downstream in https://chimera-linux.org. It works quite well, I've been able to deal with most aspects of the package manager (not yet sure about apk3 though; going to do the migration as soon as that goes stable). There is just one thing, and that is the `--initdb` option for initializing fresh roots.
Chimera has a usrmerge-style layout, i.e. `/lib` is a symlink to `/usr/lib` and so on. That means if you use `--initdb` and it populates the intial structure, it will create `lib` in the root as a directory (https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/50ab589e/src/database.c#L1341) and once one of the base packages (`base-files`, it is installed first, before everything else) attempts to install the symlink, it all goes wrong.
What I do for now is avoid `--initdb` and populate the structure manually (the package build system does that internally, and for installing systems i have a special root bootstrap script similar to the likes of debootstrap). I'm not completely happy about having to do that though, so I'm looking for potential solutions. Something like a pre-install script that would fix it up would not work since at the point the package is extracted, a script environment is not available yet, and also I would like to avoid having to run any hooks or triggers for all dependencies of the minimal root metapackage (for robustness)https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10779apk3: mkpkg: support explicit ownership of files?2023-12-12T22:15:38ZDaniel Kolesaapk3: mkpkg: support explicit ownership of files?After investigating apk3 for my downstream distro use a bit, I came across one potential blocker. I need to be able to supply a way to set user/group ownership on certain files - currently I have my own generator for the packages, so I c...After investigating apk3 for my downstream distro use a bit, I came across one potential blocker. I need to be able to supply a way to set user/group ownership on certain files - currently I have my own generator for the packages, so I can do that just fine, but if creating packages becomes apk's responsibility, this is no longer going to be possible.
The reason for this is that in my case the builds run unprivileged in a sandbox that uses namespaces. This precludes creation of new users/groups (or rather, I can create them, but trying to use `chown` for any user/group other than the current primary will result in `EINVAL` - this makes sense because as an unprivileged user, the user within the namespace is mapped to your own user, and you can't really touch other uids and gids).
However, I don't really care about ownership of the files within the sandbox per se. All I care about is the ownership within the archive, since that's what will determine what user/group the files will be owned by. Would it be possible to add some kind of option to explicitly override ownerships on certain files, as well as ensure the ownership for everything else goes to root? (since things would be run with an unprivileged user effective uid/gid). Alternatively, maybe you have a better idea how to do this?
Thanksv3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10780support generation of an SBOM file describing the running system2022-12-21T19:37:22ZAriadne Conillariadne@ariadne.spacesupport generation of an SBOM file describing the running systemA frequent request I have gotten lately is that Alpine should support generating an SBOM file. An SBOM file is an emergent standard being pushed forward by the NTIA, which is designed to help auditors check for licensing compliance and ...A frequent request I have gotten lately is that Alpine should support generating an SBOM file. An SBOM file is an emergent standard being pushed forward by the NTIA, which is designed to help auditors check for licensing compliance and remediation compliance.
An SBOM file describes a system as a set of facts about each package (component), such as the package name, the hashes of every file belonging to it, the license and copyright declarations, the supplier (package maintainer), and any upstream contacts for the package. The NTIA have a report of [what they consider to be baseline](https://www.ntia.doc.gov/files/ntia/publications/sbom_minimum_elements_report.pdf).
Excluding the upstream contact information and copyright declarations, which really need to be done anyway for licensing compliance reasons, we already have all of the necessary information to construct a baseline SBOM.
The most common format for SBOMs is the SPDX format, I suggest we would want to implement this format.
The value to Alpine users should be obvious: we already have all the necessary information for them to generate this data, but right now, Alpine users needing to generate SBOMs have to use non-free software to do it.v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10781Incomplete package installation with v3 index2021-11-26T18:05:12ZPaul SpoorenIncomplete package installation with v3 indexI'm trying to use the new v3 index and made some progress. The package is created and index signed. However the `add` function breaks for whatever reason. Using `extract` works fine.
Below an example on how I run it:
```shell
❯ fakeroot...I'm trying to use the new v3 index and made some progress. The package is created and index signed. However the `add` function breaks for whatever reason. Using `extract` works fine.
Below an example on how I run it:
```shell
❯ fakeroot ./staging_dir/hostpkg/bin/apk add --root apk/ --keys-dir etc/apk/keys opkg
(1/1) Installing opkg (2021-06-13-1bf042dd-3)
ERROR: opkg-2021-06-13-1bf042dd-3: failed to commit etc/opkg.conf: No such file or directory
ERROR: opkg-2021-06-13-1bf042dd-3: failed to commit etc//uci-defaults/20_migrate-feeds: No such file or directory
ERROR: opkg-2021-06-13-1bf042dd-3: failed to commit etc/opkg/customfeeds.conf: No such file or directory
1 error; 0 MiB in 1 packages
Strange points are that it works fine for all folders but `/etc/` and `extract` *just works*.
Below is the `tree` output, the temporary files in `/etc/` are not correctly renamed:
```shell
❯ tree -a
.
├── bin
│ └── opkg
├── etc
│ ├── apk
│ │ ├── arch
│ │ ├── commit_hooks.d
│ │ ├── keys
│ │ │ ├── private-key.pem -> /home/user/src/openwrt/openwrt/private-key.pem
│ │ │ └── public-key.pem -> /home/user/src/openwrt/openwrt/public-key.pem
│ │ ├── protected_paths.d
│ │ ├── repositories
│ │ └── world
│ ├── .apk.cb705cfd456d16c88a71cb2590965ed1fa199fbc8853cb84
│ ├── opkg
│ │ └── .apk.434efc784f4314d47075ef9e2856c87d3ae146e1fccf1acc
│ └── uci-defaults
│ └── .apk.e62d9244190ed6ec17b6f6f87334c9180c56b56376254404
├── home -> /home/
├── lib
│ ├── apk
│ │ └── db
│ │ ├── installed
│ │ ├── lock
│ │ ├── scripts.tar
│ │ └── triggers
│ └── upgrade
│ └── keep.d
│ └── opkg
├── proc
├── usr
│ ├── lib
│ │ └── opkg
│ └── sbin
│ └── opkg-key
└── var
├── cache
│ ├── apk
│ │ └── installed
│ └── misc
└── log
└── apk.log
24 directories, 17 files
```
I don't see a difference between the `/usr/` folder and the `/etc/` folder:
```shell
❯ ls -lisah
total 256K
37101668 4.0K drwxr-xr-x 8 user user 4.0K Nov 10 16:13 .
17565826 228K drwxr-xr-x 23 user user 224K Nov 10 14:40 ..
45231690 4.0K drwxr-xr-x 2 user user 4.0K Nov 10 16:13 bin
40118702 4.0K drwxr-xr-x 5 user user 4.0K Nov 10 16:13 etc
37104864 0 lrwxrwxrwx 1 user user 6 Nov 10 09:19 home -> /home/
38544866 4.0K drwxr-xr-x 4 user user 4.0K Nov 10 16:13 lib
45234267 4.0K drwxr-xr-x 2 user user 4.0K Nov 10 14:01 proc
45231692 4.0K drwxr-xr-x 4 user user 4.0K Nov 10 16:13 usr
37104863 4.0K drwxr-xr-x 4 user user 4.0K Nov 10 09:15 var
```
Below is a strace output:
<details>
```
❯ fakeroot strace ./staging_dir/hostpkg/bin/apk add --root apk/ --keys-dir etc/apk/keys opkg
execve("./staging_dir/hostpkg/bin/apk", ["./staging_dir/hostpkg/bin/apk", "add", "--root", "apk/", "--keys-dir", "etc/apk/keys", "opkg"], 0x7ffd0f8d9ca0 /* 58 vars */) = 0
brk(NULL) = 0x556ddd382000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f34b763e000
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/tls/haswell/x86_64/libfakeroot-sysv.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libfakeroot/tls/haswell/x86_64", 0x7ffcf68e7b10) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/tls/haswell/libfakeroot-sysv.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libfakeroot/tls/haswell", 0x7ffcf68e7b10) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/tls/x86_64/libfakeroot-sysv.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libfakeroot/tls/x86_64", 0x7ffcf68e7b10) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/tls/libfakeroot-sysv.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libfakeroot/tls", 0x7ffcf68e7b10) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/haswell/x86_64/libfakeroot-sysv.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libfakeroot/haswell/x86_64", 0x7ffcf68e7b10) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/haswell/libfakeroot-sysv.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libfakeroot/haswell", 0x7ffcf68e7b10) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/x86_64/libfakeroot-sysv.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libfakeroot/x86_64", 0x7ffcf68e7b10) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/libfakeroot-sysv.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20S\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=57424, ...}) = 0
mmap(NULL, 59432, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f34b762f000
mmap(0x7f34b7634000, 20480, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x7f34b7634000
mmap(0x7f34b7639000, 12288, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x7f34b7639000
mmap(0x7f34b763c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7f34b763c000
close(3) = 0
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/libfakeroot/tls/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/libfakeroot/tls/haswell/x86_64", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/libfakeroot/tls/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/libfakeroot/tls/haswell", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/libfakeroot/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/libfakeroot/tls/x86_64", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/libfakeroot/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/libfakeroot/tls", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/libfakeroot/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/libfakeroot/haswell/x86_64", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/libfakeroot/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/libfakeroot/haswell", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/libfakeroot/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/libfakeroot/x86_64", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/libfakeroot/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/libfakeroot", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib32/libfakeroot/tls/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib32/libfakeroot/tls/haswell/x86_64", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib32/libfakeroot/tls/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib32/libfakeroot/tls/haswell", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib32/libfakeroot/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib32/libfakeroot/tls/x86_64", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib32/libfakeroot/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib32/libfakeroot/tls", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib32/libfakeroot/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib32/libfakeroot/haswell/x86_64", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib32/libfakeroot/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib32/libfakeroot/haswell", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib32/libfakeroot/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib32/libfakeroot/x86_64", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib32/libfakeroot/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib32/libfakeroot", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/haswell/x86_64", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/haswell", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/x86_64", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/haswell/x86_64", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/haswell", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/x86_64", 0x7ffcf68e8670) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=105639, ...}) = 0
mmap(NULL, 105639, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f34b7615000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 |\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=149520, ...}) = 0
mmap(NULL, 136304, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f34b75f3000
mmap(0x7f34b75fa000, 65536, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7f34b75fa000
mmap(0x7f34b760a000, 20480, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7f34b760a000
mmap(0x7f34b760f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7f34b760f000
mmap(0x7f34b7611000, 13424, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f34b7611000
close(3) = 0
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/libapk.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/libapk.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\23\t\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=3874288, ...}) = 0
mmap(NULL, 2544136, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f34b7385000
mmap(0x7f34b740b000, 1282048, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x86000) = 0x7f34b740b000
mmap(0x7f34b7544000, 507904, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bf000) = 0x7f34b7544000
mmap(0x7f34b75c0000, 188416, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23a000) = 0x7f34b75c0000
mmap(0x7f34b75ee000, 16904, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f34b75ee000
close(3) = 0
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0203\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=113088, ...}) = 0
mmap(NULL, 115088, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f34b7368000
mprotect(0x7f34b736b000, 98304, PROT_NONE) = 0
mmap(0x7f34b736b000, 69632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f34b736b000
mmap(0x7f34b737c000, 24576, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7f34b737c000
mmap(0x7f34b7383000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7f34b7383000
close(3) = 0
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@n\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1839792, ...}) = 0
mmap(NULL, 1852680, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f34b71a3000
mprotect(0x7f34b71c8000, 1662976, PROT_NONE) = 0
mmap(0x7f34b71c8000, 1355776, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7f34b71c8000
mmap(0x7f34b7313000, 303104, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x170000) = 0x7f34b7313000
mmap(0x7f34b735e000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1ba000) = 0x7f34b735e000
mmap(0x7f34b7364000, 13576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f34b7364000
close(3) = 0
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libfakeroot/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\21\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=18688, ...}) = 0
mmap(NULL, 20752, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f34b719d000
mmap(0x7f34b719e000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7f34b719e000
mmap(0x7f34b71a0000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f34b71a0000
mmap(0x7f34b71a1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f34b71a1000
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f34b719b000
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f34b7198000
arch_prctl(ARCH_SET_FS, 0x7f34b7198740) = 0
mprotect(0x7f34b735e000, 12288, PROT_READ) = 0
mprotect(0x7f34b71a1000, 4096, PROT_READ) = 0
mprotect(0x7f34b7383000, 4096, PROT_READ) = 0
mprotect(0x7f34b760f000, 4096, PROT_READ) = 0
mprotect(0x7f34b75c0000, 135168, PROT_READ) = 0
mprotect(0x7f34b763c000, 4096, PROT_READ) = 0
mprotect(0x556ddcbd6000, 4096, PROT_READ) = 0
mprotect(0x7f34b766a000, 4096, PROT_READ) = 0
munmap(0x7f34b7615000, 105639) = 0
set_tid_address(0x7f34b7198a10) = 962117
set_robust_list(0x7f34b7198a20, 24) = 0
rt_sigaction(SIGRTMIN, {sa_handler=0x7f34b75fa690, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f34b7607140}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0x7f34b75fa730, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f34b7607140}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
brk(NULL) = 0x556ddd382000
brk(0x556ddd3a3000) = 0x556ddd3a3000
umask(000) = 022
rt_sigaction(SIGWINCH, {sa_handler=0x556ddcbc6630, sa_mask=[WINCH], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f34b71ded60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f34b71ded60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
access("/etc/apk/interactive", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 163840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f34b7170000
mmap(NULL, 163840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f34b7148000
mmap(NULL, 1601536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f34b6fc1000
brk(0x556ddd3ca000) = 0x556ddd3ca000
rt_sigaction(SIGINT, {sa_handler=0x556ddcbc6610, sa_mask=[INT], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f34b71ded60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
openat(AT_FDCWD, "apk/", O_RDONLY|O_CLOEXEC) = 3
openat(3, "var/log/apk.log", O_WRONLY|O_CREAT|O_APPEND|O_CLOEXEC, 0644) = 4
fcntl(4, F_GETFL) = 0x8401 (flags O_WRONLY|O_APPEND|O_LARGEFILE)
fstat(4, {st_mode=S_IFREG|0644, st_size=38328, ...}) = 0
openat(AT_FDCWD, "/etc/localtime", O_RDONLY|O_CLOEXEC) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=329, ...}) = 0
fstat(5, {st_mode=S_IFREG|0644, st_size=329, ...}) = 0
read(5, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\6\0\0\0\0"..., 4096) = 329
lseek(5, -182, SEEK_CUR) = 147
read(5, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\6\0\0\0\0"..., 4096) = 182
close(5) = 0
write(4, "\nRunning `./staging_dir/hostpkg/"..., 152) = 152
fstatfs(3, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=235613672, f_bfree=160886748, f_bavail=148899809, f_files=59916288, f_ffree=55765752, f_fsid={val=[1524324086, 3434158162]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_NOATIME}) = 0
openat(3, "etc/apk/arch", O_RDONLY|O_CLOEXEC) = 5
futex(0x7f34b71a20c8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
fstat(5, {st_mode=S_IFREG|0644, st_size=7, ...}) = 0
msgget(0x4ebee361, IPC_CREAT|0600) = 24
msgget(0x4ebee362, IPC_CREAT|0600) = 25
getpid() = 962117
semget(0x4ebee363, 1, IPC_CREAT|0600) = 14
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\1\0\0\0\350\3\0\0\350\3\0\0F,f\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\1\0\0\0\0\0\0\0\0\0\0\0F,f\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
read(5, "x86_64\n", 7) = 7
close(5) = 0
openat(3, "lib/apk/db/lock", O_RDWR|O_CREAT|O_CLOEXEC, 0600) = 5
flock(5, LOCK_EX|LOCK_NB) = 0
statfs("apk//proc", {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=235613672, f_bfree=160886748, f_bavail=148899809, f_files=59916288, f_ffree=55765752, f_fsid={val=[1524324086, 3434158162]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_NOATIME}) = 0
mount("proc", "apk//proc", "proc", 0, NULL) = -1 EPERM (Operation not permitted)
openat(3, "etc/apk/protected_paths.d", O_RDONLY|O_CLOEXEC) = 6
fstat(6, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl(6, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fcntl(6, F_SETFD, FD_CLOEXEC) = 0
lseek(6, 0, SEEK_SET) = 0
getdents64(6, 0x556ddd3aba00 /* 2 entries */, 32768) = 48
getdents64(6, 0x556ddd3aba00 /* 0 entries */, 32768) = 0
close(6) = 0
openat(3, "etc/apk/cache", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(3, "var/cache/apk", O_RDONLY|O_CLOEXEC) = 6
openat(3, "etc/apk/world", O_RDONLY|O_CLOEXEC) = 7
fstat(7, {st_mode=S_IFREG|0644, st_size=1, ...}) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\2\0\0\0\350\3\0\0\350\3\0\0\236\rf\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\2\0\0\0\0\0\0\0\0\0\0\0\236\rf\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
read(7, "\n", 1) = 1
close(7) = 0
openat(3, "lib/apk/db/installed", O_RDONLY|O_CLOEXEC) = 7
mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f34b6fa0000
read(7, "", 131072) = 0
close(7) = 0
munmap(0x7f34b6fa0000, 135168) = 0
openat(3, "lib/apk/db/triggers", O_RDONLY|O_CLOEXEC) = 7
brk(0x556ddd3ec000) = 0x556ddd3ec000
read(7, "", 131072) = 0
close(7) = 0
openat(3, "lib/apk/db/scripts.tar", O_RDONLY|O_CLOEXEC) = 7
read(7, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 131072) = 1024
read(7, "", 131072) = 0
close(7) = 0
openat(6, "installed", O_RDONLY|O_CLOEXEC) = 7
read(7, "", 131072) = 0
close(7) = 0
openat(3, "etc/apk/repositories", O_RDONLY|O_CLOEXEC) = 7
fstat(7, {st_mode=S_IFREG|0644, st_size=126, ...}) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\3\0\0\0\350\3\0\0\350\3\0\0J,f\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\3\0\0\0\0\0\0\0\0\0\0\0J,f\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
read(7, "file:///home/user/src/openwrt/op"..., 126) = 126
close(7) = 0
openat(6, "///home/user/src/openwrt/openwrt/bin/packages/x86_64/base/x86_64/APKINDEX.tar.gz", O_RDONLY|O_CLOEXEC) = 7
read(7, "ADB.indxD/\0\0\0\0\0\0004/\0\340\rbnx2-firmwa"..., 131072) = 12208
openat(3, "etc/apk/keys", O_RDONLY|O_CLOEXEC) = 8
fstat(8, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl(8, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fcntl(8, F_SETFD, FD_CLOEXEC) = 0
lseek(8, 0, SEEK_SET) = 0
getdents64(8, 0x556ddd3cba40 /* 4 entries */, 32768) = 128
openat(8, "public-key.pem", O_RDONLY|O_CLOEXEC) = 9
fcntl(9, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
futex(0x7f34b75f09e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f34b75f09f0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f34b75f09ec, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f34b75ee708, FUTEX_WAKE_PRIVATE, 2147483647) = 0
fstat(9, {st_mode=S_IFREG|0644, st_size=178, ...}) = 0
read(9, "-----BEGIN PUBLIC KEY-----\nMFkwE"..., 4096) = 178
close(9) = 0
openat(8, "private-key.pem", O_RDONLY|O_CLOEXEC) = 9
fcntl(9, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(9, {st_mode=S_IFREG|0644, st_size=227, ...}) = 0
read(9, "-----BEGIN EC PRIVATE KEY-----\nM"..., 4096) = 227
read(9, "", 4096) = 0
lseek(9, 0, SEEK_SET) = 0
read(9, "-----BEGIN EC PRIVATE KEY-----\nM"..., 4096) = 227
close(9) = 0
getdents64(8, 0x556ddd3cba40 /* 0 entries */, 32768) = 0
close(8) = 0
read(7, "", 131072) = 0
close(7) = 0
openat(6, "///home/user/src/openwrt/openwrt/bin/packages/x86_64/luci/x86_64/APKINDEX.tar.gz", O_RDONLY|O_CLOEXEC) = 7
brk(0x556ddd426000) = 0x556ddd426000
read(7, "ADB.indxL\20\0\0\0\0\0\0<\20\0\340\17liblucihttp"..., 131072) = 4280
read(7, "", 131072) = 0
close(7) = 0
openat(3, "etc/apk/repositories.d", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
dup(6) = 7
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fcntl(7, F_SETFD, FD_CLOEXEC) = 0
lseek(7, 0, SEEK_SET) = 0
getdents64(7, 0x556ddd3b4bd0 /* 3 entries */, 32768) = 80
getdents64(7, 0x556ddd3b4bd0 /* 0 entries */, 32768) = 0
close(7) = 0
openat(3, "etc/apk/commit_hooks.d", O_RDONLY|O_CLOEXEC) = 7
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fcntl(7, F_SETFD, FD_CLOEXEC) = 0
lseek(7, 0, SEEK_SET) = 0
getdents64(7, 0x556ddd3b4bf0 /* 2 entries */, 32768) = 48
getdents64(7, 0x556ddd3b4bf0 /* 0 entries */, 32768) = 0
close(7) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0), ...}) = 0
write(1, "(1/1) Installing opkg (2021-06-1"..., 46(1/1) Installing opkg (2021-06-13-1bf042dd-3)
) = 46
write(4, "(1/1) Installing opkg (2021-06-1"..., 46) = 46
ioctl(1, TIOCGWINSZ, {ws_row=27, ws_col=106, ws_xpixel=0, ws_ypixel=0}) = 0
write(1, "\0337 0% "..., 107 0% ) = 107
openat(AT_FDCWD, "///home/user/src/openwrt/openwrt/bin/packages/x86_64/base/x86_64/opkg-2021-06-13-1bf042dd-3.apk", O_RDONLY|O_CLOEXEC) = 7
read(7, "ADBd\354\275y|SE\3648z\323\5\2\5\32\226H\221\305\202e\221\265e\223\312b\3-"..., 131072) = 73384
openat(3, "etc/passwd", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(3, "etc/group", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(3, "bin", 0x7ffcf68e59f0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
umask(022) = 000
umask(000) = 022
mkdirat(3, "bin", 0700) = 0
newfstatat(3, "bin", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0004\177\0\0\3\0\0\0\350\3\0\0\350\3\0\0J.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
newfstatat(3, "bin//.apk.bc7072cae522efeb7faf9def5d32bd3a24d8b12acb320beb", 0x7ffcf68e4890, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
openat(3, "bin//.apk.bc7072cae522efeb7faf9def5d32bd3a24d8b12acb320beb", O_RDWR|O_CREAT|O_EXCL|O_TRUNC|O_CLOEXEC, 0755) = 8
write(8, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\2\0>\0\1\0\0\0\346f@\0\0\0\0\0"..., 129828) = 129828
write(1, "\338\33[0K\0337 73% \342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342"..., 259 73% █████████████████████████████████████████████████████████████████████████ ) = 259
write(8, "collisions=%d\n\tmax_bucket_len=%d"..., 25311) = 25311
close(8) = 0
newfstatat(3, "bin//.apk.bc7072cae522efeb7faf9def5d32bd3a24d8b12acb320beb", {st_mode=S_IFREG|0755, st_size=155139, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0\0\0\0\0\210Z_\267\376\377\0\0\376\377\0\0K.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "bin//.apk.bc7072cae522efeb7faf9def5d32bd3a24d8b12acb320beb", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
utimensat(3, "bin//.apk.bc7072cae522efeb7faf9def5d32bd3a24d8b12acb320beb", [{tv_sec=1636589786, tv_nsec=0} /* 2021-11-10T14:16:26-1000 */, {tv_sec=1636589786, tv_nsec=0} /* 2021-11-10T14:16:26-1000 */], 0) = 0
read(7, "", 131072) = 0
newfstatat(3, "etc", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\4\0\0\0\350\3\0\0\350\3\0\0\256)d\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\4\0\0\0\0\0\0\0\0\0\0\0\256)d\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
newfstatat(3, "etc//.apk.cb705cfd456d16c88a71cb2590965ed1fa199fbc8853cb84", 0x7ffcf68e4890, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
openat(3, "etc//.apk.cb705cfd456d16c88a71cb2590965ed1fa199fbc8853cb84", O_RDWR|O_CREAT|O_EXCL|O_TRUNC|O_CLOEXEC, 0644) = 8
write(1, "\338\33[0K\0337 88% \342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342"..., 289 88% ████████████████████████████████████████████████████████████████████████████████████████ ) = 289
write(8, "dest root /\ndest ram /tmp\nlists_"..., 108) = 108
close(8) = 0
newfstatat(3, "etc//.apk.cb705cfd456d16c88a71cb2590965ed1fa199fbc8853cb84", {st_mode=S_IFREG|0644, st_size=108, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0\0\0\0\0\210Z_\267\376\377\0\0\376\377\0\0\374\16d\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "etc//.apk.cb705cfd456d16c88a71cb2590965ed1fa199fbc8853cb84", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
utimensat(3, "etc//.apk.cb705cfd456d16c88a71cb2590965ed1fa199fbc8853cb84", [{tv_sec=1636589785, tv_nsec=0} /* 2021-11-10T14:16:25-1000 */, {tv_sec=1636589785, tv_nsec=0} /* 2021-11-10T14:16:25-1000 */], 0) = 0
newfstatat(3, "etc//uci-defaults", 0x7ffcf68e59f0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
umask(022) = 000
umask(000) = 022
mkdirat(3, "etc//uci-defaults", 0700) = 0
newfstatat(3, "etc//uci-defaults", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0004\177\0\0\1\0\0\0\350\3\0\0\350\3\0\0\375\16d\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
newfstatat(3, "etc//uci-defaults//.apk.e62d9244190ed6ec17b6f6f87334c9180c56b56376254404", 0x7ffcf68e4890, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
openat(3, "etc//uci-defaults//.apk.e62d9244190ed6ec17b6f6f87334c9180c56b56376254404", O_RDWR|O_CREAT|O_EXCL|O_TRUNC|O_CLOEXEC, 0755) = 8
write(1, "\338\33[0K\0337 90% \342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342"..., 293 90% ██████████████████████████████████████████████████████████████████████████████████████████ ) = 293
write(8, "#!/bin/sh\n\n[ -f /etc/opkg.conf ]"..., 299) = 299
close(8) = 0
newfstatat(3, "etc//uci-defaults//.apk.e62d9244190ed6ec17b6f6f87334c9180c56b56376254404", {st_mode=S_IFREG|0755, st_size=299, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0\0\0\0\0\210Z_\267\376\377\0\0\376\377\0\0\260)d\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "etc//uci-defaults//.apk.e62d9244190ed6ec17b6f6f87334c9180c56b56376254404", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
utimensat(3, "etc//uci-defaults//.apk.e62d9244190ed6ec17b6f6f87334c9180c56b56376254404", [{tv_sec=1636589785, tv_nsec=0} /* 2021-11-10T14:16:25-1000 */, {tv_sec=1636589785, tv_nsec=0} /* 2021-11-10T14:16:25-1000 */], 0) = 0
newfstatat(3, "etc/opkg", 0x7ffcf68e59f0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
umask(022) = 000
umask(000) = 022
mkdirat(3, "etc/opkg", 0700) = 0
newfstatat(3, "etc/opkg", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0004\177\0\0\1\0\0\0\350\3\0\0\350\3\0\0\233\rf\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
newfstatat(3, "etc/opkg//.apk.434efc784f4314d47075ef9e2856c87d3ae146e1fccf1acc", 0x7ffcf68e4890, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
openat(3, "etc/opkg//.apk.434efc784f4314d47075ef9e2856c87d3ae146e1fccf1acc", O_RDWR|O_CREAT|O_EXCL|O_TRUNC|O_CLOEXEC, 0644) = 8
write(1, "\338\33[0K\0337 93% \342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342"..., 299 93% █████████████████████████████████████████████████████████████████████████████████████████████ ) = 299
write(8, "# add your custom package feeds "..., 103) = 103
close(8) = 0
newfstatat(3, "etc/opkg//.apk.434efc784f4314d47075ef9e2856c87d3ae146e1fccf1acc", {st_mode=S_IFREG|0644, st_size=103, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0\0\0\0\0\210Z_\267\376\377\0\0\376\377\0\0\234\rf\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "etc/opkg//.apk.434efc784f4314d47075ef9e2856c87d3ae146e1fccf1acc", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
utimensat(3, "etc/opkg//.apk.434efc784f4314d47075ef9e2856c87d3ae146e1fccf1acc", [{tv_sec=1636589785, tv_nsec=0} /* 2021-11-10T14:16:25-1000 */, {tv_sec=1636589785, tv_nsec=0} /* 2021-11-10T14:16:25-1000 */], 0) = 0
newfstatat(3, "lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\5\0\0\0\350\3\0\0\350\3\0\0\342%L\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\5\0\0\0\0\0\0\0\0\0\0\0\342%L\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
newfstatat(3, "lib/upgrade", 0x7ffcf68e59f0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
umask(022) = 000
umask(000) = 022
mkdirat(3, "lib/upgrade", 0700) = 0
newfstatat(3, "lib/upgrade", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0004\177\0\0\1\0\0\0\350\3\0\0\350\3\0\0\362\36P\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
newfstatat(3, "lib/upgrade/keep.d", 0x7ffcf68e59f0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
umask(022) = 000
umask(000) = 022
mkdirat(3, "lib/upgrade/keep.d", 0700) = 0
newfstatat(3, "lib/upgrade/keep.d", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0004\177\0\0\1\0\0\0\350\3\0\0\350\3\0\0\225\7Z\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
newfstatat(3, "lib/upgrade/keep.d//.apk.dbf0b41d170b0629ab5b83e47dd4dd4a2a5b14f5d12dbb64", 0x7ffcf68e4890, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
openat(3, "lib/upgrade/keep.d//.apk.dbf0b41d170b0629ab5b83e47dd4dd4a2a5b14f5d12dbb64", O_RDWR|O_CREAT|O_EXCL|O_TRUNC|O_CLOEXEC, 0644) = 8
write(1, "\338\33[0K\0337 95% \342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342"..., 303 95% ███████████████████████████████████████████████████████████████████████████████████████████████ ) = 303
write(8, "/etc/opkg/keys/\n", 16) = 16
close(8) = 0
newfstatat(3, "lib/upgrade/keep.d//.apk.dbf0b41d170b0629ab5b83e47dd4dd4a2a5b14f5d12dbb64", {st_mode=S_IFREG|0644, st_size=16, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0\0\0\0\0\210Z_\267\376\377\0\0\376\377\0\0\265\34Z\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "lib/upgrade/keep.d//.apk.dbf0b41d170b0629ab5b83e47dd4dd4a2a5b14f5d12dbb64", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
utimensat(3, "lib/upgrade/keep.d//.apk.dbf0b41d170b0629ab5b83e47dd4dd4a2a5b14f5d12dbb64", [{tv_sec=1636589786, tv_nsec=0} /* 2021-11-10T14:16:26-1000 */, {tv_sec=1636589786, tv_nsec=0} /* 2021-11-10T14:16:26-1000 */], 0) = 0
newfstatat(3, "usr", 0x7ffcf68e59f0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
umask(022) = 000
umask(000) = 022
mkdirat(3, "usr", 0700) = 0
newfstatat(3, "usr", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0004\177\0\0\1\0\0\0\350\3\0\0\350\3\0\0L.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
newfstatat(3, "usr//sbin", 0x7ffcf68e59f0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
umask(022) = 000
umask(000) = 022
mkdirat(3, "usr//sbin", 0700) = 0
newfstatat(3, "usr//sbin", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0004\177\0\0\1\0\0\0\350\3\0\0\350\3\0\0M.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
newfstatat(3, "usr//sbin//.apk.cd118a5c8bd62e7e1015f91c2399903509b71b639018cbe0", 0x7ffcf68e4890, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
openat(3, "usr//sbin//.apk.cd118a5c8bd62e7e1015f91c2399903509b71b639018cbe0", O_RDWR|O_CREAT|O_EXCL|O_TRUNC|O_CLOEXEC, 0755) = 8
write(1, "\338\33[0K\0337 97% \342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342"..., 307 97% █████████████████████████████████████████████████████████████████████████████████████████████████ ) = 307
write(8, "#!/bin/sh\n\nOPKG_KEYS=\"${OPKG_KEY"..., 1079) = 1079
close(8) = 0
newfstatat(3, "usr//sbin//.apk.cd118a5c8bd62e7e1015f91c2399903509b71b639018cbe0", {st_mode=S_IFREG|0755, st_size=1079, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0\0\0\0\0\210Z_\267\376\377\0\0\376\377\0\0N.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "usr//sbin//.apk.cd118a5c8bd62e7e1015f91c2399903509b71b639018cbe0", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
utimensat(3, "usr//sbin//.apk.cd118a5c8bd62e7e1015f91c2399903509b71b639018cbe0", [{tv_sec=1636589785, tv_nsec=0} /* 2021-11-10T14:16:25-1000 */, {tv_sec=1636589785, tv_nsec=0} /* 2021-11-10T14:16:25-1000 */], 0) = 0
close(7) = 0
newfstatat(3, "usr/lib", 0x7ffcf68e5b20, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
umask(022) = 000
umask(000) = 022
mkdirat(3, "usr/lib", 0700) = 0
newfstatat(3, "usr/lib", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0004\177\0\0\0\0\0\0\350\3\0\0\350\3\0\0O.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
newfstatat(3, "usr/lib/opkg", 0x7ffcf68e5b20, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
umask(022) = 000
umask(000) = 022
mkdirat(3, "usr/lib/opkg", 0700) = 0
newfstatat(3, "usr/lib/opkg", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0004\177\0\0\0\0\0\0\350\3\0\0\350\3\0\0P.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
newfstatat(3, "bin/opkg", 0x7ffcf68e5e30, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
renameat(3, "bin/.apk.bc7072cae522efeb7faf9def5d32bd3a24d8b12acb320beb", 3, "bin/opkg") = 0
openat(3, "etc/opkg.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(3, "etc//opkg.conf.apk-new", 0x7ffcf68e5e30, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
renameat(3, "etc//.apk.0075e34273aa10e463c8cf490adffe21f51075bd964b5bea", 3, "etc//opkg.conf.apk-new") = -1 ENOENT (No such file or directory)
write(1, "\338\33[0K", 6 ) = 6
write(2, "ERROR: ", 7ERROR: ) = 7
write(2, "opkg-2021-06-13-1bf042dd-3: fail"..., 85opkg-2021-06-13-1bf042dd-3: failed to commit etc/opkg.conf: No such file or directory) = 85
write(2, "\n", 1
) = 1
write(4, "ERROR: opkg-2021-06-13-1bf042dd-"..., 93) = 93
openat(3, "etc//uci-defaults/20_migrate-feeds", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(3, "etc//uci-defaults//20_migrate-feeds.apk-new", 0x7ffcf68e5e30, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
renameat(3, "etc//uci-defaults//.apk.b82617b252a43ec12a04c291a0afc7760002c264944332fd", 3, "etc//uci-defaults//20_migrate-feeds.apk-new") = -1 ENOENT (No such file or directory)
write(2, "ERROR: ", 7ERROR: ) = 7
write(2, "opkg-2021-06-13-1bf042dd-3: fail"..., 106opkg-2021-06-13-1bf042dd-3: failed to commit etc//uci-defaults/20_migrate-feeds: No such file or directory) = 106
write(2, "\n", 1
) = 1
write(4, "ERROR: opkg-2021-06-13-1bf042dd-"..., 114) = 114
openat(3, "etc/opkg/customfeeds.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(3, "etc/opkg//customfeeds.conf.apk-new", 0x7ffcf68e5e30, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
renameat(3, "etc/opkg//.apk.53680c998c4af63d16afc25c0902821edbb78e5d78b9c0af", 3, "etc/opkg//customfeeds.conf.apk-new") = -1 ENOENT (No such file or directory)
write(2, "ERROR: ", 7ERROR: ) = 7
write(2, "opkg-2021-06-13-1bf042dd-3: fail"..., 97opkg-2021-06-13-1bf042dd-3: failed to commit etc/opkg/customfeeds.conf: No such file or directory) = 97
write(2, "\n", 1
) = 1
write(4, "ERROR: opkg-2021-06-13-1bf042dd-"..., 105) = 105
newfstatat(3, "lib/upgrade/keep.d/opkg", 0x7ffcf68e5e30, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
renameat(3, "lib/upgrade/keep.d/.apk.dbf0b41d170b0629ab5b83e47dd4dd4a2a5b14f5d12dbb64", 3, "lib/upgrade/keep.d/opkg") = 0
newfstatat(3, "usr//sbin/opkg-key", 0x7ffcf68e5e30, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
renameat(3, "usr//sbin/.apk.cd118a5c8bd62e7e1015f91c2399903509b71b639018cbe0", 3, "usr//sbin/opkg-key") = 0
write(1, "\0337100% \342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342\226\210\342"..., 307100% ████████████████████████████████████████████████████████████████████████████████████████████████████) = 307
newfstatat(3, "usr/lib/opkg", {st_mode=S_IFDIR|0700, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\6\0\0\0\350\3\0\0\350\3\0\0P.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\6\0\0\0\0\0\0\0\0\0\0\0P.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
newfstatat(3, "usr/lib/opkg", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0\0\0\0\0\350\356c\267\350\3\0\0\350\3\0\0P.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchmodat(3, "usr/lib/opkg", 0755) = 0
newfstatat(3, "usr/lib/opkg", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0004\177\0\0\1\0\0\0\376\377\0\0\376\377\0\0P.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "usr/lib/opkg", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
newfstatat(3, "lib/upgrade/keep.d", {st_mode=S_IFDIR|0700, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\7\0\0\0\350\3\0\0\350\3\0\0\225\7Z\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\7\0\0\0\0\0\0\0\0\0\0\0\225\7Z\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
newfstatat(3, "lib/upgrade/keep.d", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0P.\262\2\0\0\0\0\350\3\0\0\350\3\0\0\225\7Z\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchmodat(3, "lib/upgrade/keep.d", 0755) = 0
newfstatat(3, "lib/upgrade/keep.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0004\177\0\0\1\0\0\0\376\377\0\0\376\377\0\0\225\7Z\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "lib/upgrade/keep.d", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
newfstatat(3, "usr", {st_mode=S_IFDIR|0700, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\10\0\0\0\350\3\0\0\350\3\0\0L.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\10\0\0\0\0\0\0\0\0\0\0\0L.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
newfstatat(3, "usr", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0\225\7Z\2\0\0\0\0\350\3\0\0\350\3\0\0L.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchmodat(3, "usr", 0755) = 0
newfstatat(3, "usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0004\177\0\0\1\0\0\0\376\377\0\0\376\377\0\0L.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "usr", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
newfstatat(3, "etc/opkg", {st_mode=S_IFDIR|0700, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\t\0\0\0\350\3\0\0\350\3\0\0\233\rf\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\t\0\0\0\0\0\0\0\0\0\0\0\233\rf\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
newfstatat(3, "etc/opkg", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0L.\262\2\0\0\0\0\350\3\0\0\350\3\0\0\233\rf\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchmodat(3, "etc/opkg", 0755) = 0
newfstatat(3, "etc/opkg", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0004\177\0\0\1\0\0\0\376\377\0\0\376\377\0\0\233\rf\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "etc/opkg", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
newfstatat(3, "etc//uci-defaults", {st_mode=S_IFDIR|0700, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\n\0\0\0\350\3\0\0\350\3\0\0\375\16d\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\n\0\0\0\0\0\0\0\0\0\0\0\375\16d\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
newfstatat(3, "etc//uci-defaults", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0\233\rf\2\0\0\0\0\350\3\0\0\350\3\0\0\375\16d\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchmodat(3, "etc//uci-defaults", 0755) = 0
newfstatat(3, "etc//uci-defaults", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0004\177\0\0\1\0\0\0\376\377\0\0\376\377\0\0\375\16d\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "etc//uci-defaults", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
newfstatat(3, "usr//sbin", {st_mode=S_IFDIR|0700, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\v\0\0\0\350\3\0\0\350\3\0\0M.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\v\0\0\0\0\0\0\0\0\0\0\0M.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
newfstatat(3, "usr//sbin", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0\375\16d\2\0\0\0\0\350\3\0\0\350\3\0\0M.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchmodat(3, "usr//sbin", 0755) = 0
newfstatat(3, "usr//sbin", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0004\177\0\0\1\0\0\0\376\377\0\0\376\377\0\0M.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "usr//sbin", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
newfstatat(3, "bin", {st_mode=S_IFDIR|0700, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\f\0\0\0\350\3\0\0\350\3\0\0J.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\f\0\0\0\0\0\0\0\0\0\0\0J.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
newfstatat(3, "bin", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0M.\262\2\0\0\0\0\350\3\0\0\350\3\0\0J.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchmodat(3, "bin", 0755) = 0
newfstatat(3, "bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0004\177\0\0\1\0\0\0\376\377\0\0\376\377\0\0J.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "bin", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
newfstatat(3, "usr/lib", {st_mode=S_IFDIR|0700, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\r\0\0\0\350\3\0\0\350\3\0\0O.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\r\0\0\0\0\0\0\0\0\0\0\0O.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
newfstatat(3, "usr/lib", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0J.\262\2\0\0\0\0\350\3\0\0\350\3\0\0O.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchmodat(3, "usr/lib", 0755) = 0
newfstatat(3, "usr/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0004\177\0\0\1\0\0\0\376\377\0\0\376\377\0\0O.\262\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "usr/lib", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
newfstatat(3, "lib/upgrade", {st_mode=S_IFDIR|0700, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
getpid() = 962117
semtimedop(14, [{0, -1, SEM_UNDO}], 1, NULL) = 0
msgsnd(24, {1, "\3\0\0\0E\256\16\0\16\0\0\0\350\3\0\0\350\3\0\0\362\36P\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
msgrcv(25, {1, "\3\0\0\0E\256\16\0\16\0\0\0\0\0\0\0\0\0\0\0\362\36P\2\0\0\0\0\0\375\0\0"...}, 1088, 0, 0) = 1088
semtimedop(14, [{0, 1, SEM_UNDO}], 1, NULL) = 0
newfstatat(3, "lib/upgrade", {st_mode=S_IFDIR|0700, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\1\0\0\0O.\262\2\0\0\0\0\350\3\0\0\350\3\0\0\362\36P\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchmodat(3, "lib/upgrade", 0755) = 0
newfstatat(3, "lib/upgrade", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
msgsnd(24, {1, "\0\0\0\0004\177\0\0\1\0\0\0\376\377\0\0\376\377\0\0\362\36P\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
fchownat(3, "lib/upgrade", 65534, 65534, 0) = -1 EPERM (Operation not permitted)
openat(3, "etc/apk/world.tmp", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0644) = 7
write(7, "opkg\n", 5) = 5
close(7) = 0
newfstatat(3, "etc/apk/world", {st_mode=S_IFREG|0644, st_size=1, ...}, AT_SYMLINK_NOFOLLOW) = 0
renameat(3, "etc/apk/world.tmp", 3, "etc/apk/world") = 0
msgsnd(24, {1, "\4\0\0\0\0\0\0\0 \200\216\366\350\3\0\0\350\3\0\0\236\rf\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
openat(3, "lib/apk/db/installed.tmp", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0644) = 7
write(7, "C:Q1OY461sLzfrlp+kQz/uOhC+7YJZw="..., 937) = 937
close(7) = 0
newfstatat(3, "lib/apk/db/installed", {st_mode=S_IFREG|0644, st_size=0, ...}, AT_SYMLINK_NOFOLLOW) = 0
renameat(3, "lib/apk/db/installed.tmp", 3, "lib/apk/db/installed") = 0
msgsnd(24, {1, "\4\0\0\0\0\0\0\08\261\31\267\350\3\0\0\350\3\0\0\223\7Z\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
openat(3, "lib/apk/db/scripts.tar.tmp", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0644) = 7
write(7, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = 512
write(7, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = 512
close(7) = 0
newfstatat(3, "lib/apk/db/scripts.tar", {st_mode=S_IFREG|0644, st_size=1024, ...}, AT_SYMLINK_NOFOLLOW) = 0
renameat(3, "lib/apk/db/scripts.tar.tmp", 3, "lib/apk/db/scripts.tar") = 0
msgsnd(24, {1, "\4\0\0\0\377\377\377\377\0\0\0\0\350\3\0\0\350\3\0\0\264\34Z\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
openat(6, "installed.tmp", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0644) = 7
close(7) = 0
newfstatat(6, "installed", {st_mode=S_IFREG|0644, st_size=0, ...}, AT_SYMLINK_NOFOLLOW) = 0
renameat(6, "installed.tmp", 6, "installed") = 0
msgsnd(24, {1, "\4\0\0\0>\nc:\n{\216\366\350\3\0\0\350\3\0\0V\n`\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
openat(3, "lib/apk/db/triggers.tmp", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0644) = 7
close(7) = 0
newfstatat(3, "lib/apk/db/triggers", {st_mode=S_IFREG|0644, st_size=0, ...}, AT_SYMLINK_NOFOLLOW) = 0
renameat(3, "lib/apk/db/triggers.tmp", 3, "lib/apk/db/triggers") = 0
msgsnd(24, {1, "\4\0\0\0\0\0\0\0 \200\216\366\350\3\0\0\350\3\0\0\224\7Z\2\0\0\0\0\0\375\0\0"...}, 1088, 0) = 0
openat(3, "etc/apk/commit_hooks.d", O_RDONLY|O_CLOEXEC) = 7
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fcntl(7, F_SETFD, FD_CLOEXEC) = 0
lseek(7, 0, SEEK_SET) = 0
getdents64(7, 0x556ddd3b4ce0 /* 2 entries */, 32768) = 48
getdents64(7, 0x556ddd3b4ce0 /* 0 entries */, 32768) = 0
close(7) = 0
write(1, "\338\33[0K1 e1 error; 0 MiB in 1 packages
) = 35
write(4, "1 error; 0 MiB in 1 packages\n", 29) = 29
munmap(0x7f34b7170000, 163840) = 0
munmap(0x7f34b6fc1000, 1601536) = 0
munmap(0x7f34b7148000, 163840) = 0
umount2("apk//proc", MNT_DETACH|UMOUNT_NOFOLLOW) = -1 EPERM (Operation not permitted)
close(6) = 0
close(5) = 0
close(4) = 0
exit_group(1) = ?
+++ exited with 1 +++
```
</details>
* [opkg-2021-06-13-1bf042dd-3.apk](/uploads/8a40bce0a69a50ba3701482d2aee96a0/opkg-2021-06-13-1bf042dd-3.apk)
* [public-key.pem](/uploads/9ad0786db025525d9cd82b592e378756/public-key.pem)https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10782Support more architectures2021-11-11T20:46:22ZPaul SpoorenSupport more architecturesUsing APK on OpenWrt would require the support of a few additional architectures:
- [ ] aarch64_cortex-a53
- [ ] aarch64_cortex-a72
- [ ] aarch64_generic
- [ ] arc_arc700
- [ ] arc_archs
- [ ] arm_arm1176jzf-s_vfp
- [ ] arm_arm926ej-s
-...Using APK on OpenWrt would require the support of a few additional architectures:
- [ ] aarch64_cortex-a53
- [ ] aarch64_cortex-a72
- [ ] aarch64_generic
- [ ] arc_arc700
- [ ] arc_archs
- [ ] arm_arm1176jzf-s_vfp
- [ ] arm_arm926ej-s
- [ ] arm_cortex-a15_neon-vfpv4
- [ ] arm_cortex-a5_vfpv4
- [ ] arm_cortex-a7
- [ ] arm_cortex-a7_neon-vfpv4
- [ ] arm_cortex-a8_vfpv3
- [ ] arm_cortex-a9
- [ ] arm_cortex-a9_neon
- [ ] arm_cortex-a9_vfpv3-d16
- [ ] arm_fa526
- [ ] arm_mpcore
- [ ] arm_xscale
- [x] i386_pentium-mmx
- [x] i386_pentium4
- [ ] mips64_octeonplus
- [ ] mips_24kc
- [ ] mips_4kec
- [ ] mips_mips32
- [ ] mipsel_24kc
- [ ] mipsel_24kc_24kf
- [ ] mipsel_74kc
- [ ] mipsel_mips32
- [ ] powerpc_464fp
- [ ] powerpc_8540
- [x] x86_64https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10783Direct package installation with v3 packages2021-11-11T09:44:12ZPaul SpoorenDirect package installation with v3 packagesI'm trying to install a v3 `.apk` package but it fails. First of the [assert in `adb.c`](https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/master/src/adb.c#L469) stops processing, if I remove it APK returns the following message:
`...I'm trying to install a v3 `.apk` package but it fails. First of the [assert in `adb.c`](https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/master/src/adb.c#L469) stops processing, if I remove it APK returns the following message:
```
ERROR: /home/user/src/openwrt/openwrt/bin/targets/x86/64/packages/base-files-1459-r18069-e03c13a623.apk: file format not supported (in this applet)
```
Is `add` for files supposed to work? If using `extract` instead I'm facing the issue that existing folders break further execution.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10784Segfault using `extract` with v3 package2021-11-11T09:27:15ZPaul SpoorenSegfault using `extract` with v3 packageI'm trying to use `apk extrac` with the attached package but I'm seeing a segfault. It works fine with other packages and I'm currently unable to tell why this package causes the segfault.
GDB output
```gdb
(gdb) run --destination /hom...I'm trying to use `apk extrac` with the attached package but I'm seeing a segfault. It works fine with other packages and I'm currently unable to tell why this package causes the segfault.
GDB output
```gdb
(gdb) run --destination /home/user/src/openwrt/openwrt/build_dir/target-x86_64_musl/root-x86 --root /home/user/src/openwrt/openwrt/build_dir/target-x86_64_musl/root-x86 --keys-dir /home/user/src/openwrt/openwrt --no-cache --no-network --force extract --no-chown /home/user/src/openwrt/openwrt/bin/targets/x86/64/packages/dropbear-2020.81-2.apk
Starting program: /home/user/src/openwrt/openwrt/staging_dir/hostpkg/bin/apk --destination /home/user/src/openwrt/openwrt/build_dir/target-x86_64_musl/root-x86 --root /home/user/src/openwrt/openwrt/build_dir/target-x86_64_musl/root-x86 --keys-dir /home/user/src/openwrt/openwrt --no-cache --no-network --force extract --no-chown /home/user/src/openwrt/openwrt/bin/targets/x86/64/packages/dropbear-2020.81-2.apk
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Extracting /home/user/src/openwrt/openwrt/bin/targets/x86/64/packages/dropbear-2020.81-2.apk...
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7dc46c7 in apk_istream_verify (dis=dis@entry=0x7fffffffc830, is=is@entry=0x0, size=0, d=d@entry=0x7fffffffc8d8) at ../src/io.c:352
352 .is.ptr = is->ptr,
(gdb) bt
#0 0x00007ffff7dc46c7 in apk_istream_verify (dis=dis@entry=0x7fffffffc830, is=is@entry=0x0, size=0, d=d@entry=0x7fffffffc8d8) at ../src/io.c:352
#1 0x00007ffff7dc16b1 in apk_extract_v3_file (ectx=ectx@entry=0x55555556f430, is=is@entry=0x0, sz=0) at ../src/extract_v3.c:84
#2 0x00007ffff7dc18d1 in apk_extract_v3_next_file (ectx=ectx@entry=0x55555556f430) at ../src/extract_v3.c:143
#3 0x00007ffff7dc19e6 in apk_extract_v3_data_block (db=0x7fffffffcc38, b=<optimized out>, is=0x7fffffffcb80) at ../src/extract_v3.c:160
#4 0x00007ffff7db3bb3 in __adb_m_stream (cb=0x7ffff7dc19a0 <apk_extract_v3_data_block>, t=0x55555556df88 <ctx+168>, expected_schema=4294953764, is=0x7ffff7944010, db=0x7fffffffcc38) at ../src/adb.c:246
#5 adb_m_process (db=db@entry=0x7fffffffcc38, is=0x7ffff7944010, expected_schema=4294953764, expected_schema@entry=0, t=t@entry=0x55555556df88 <ctx+168>, cb=cb@entry=0x7ffff7dc19a0 <apk_extract_v3_data_block>)
at ../src/adb.c:282
#6 0x00007ffff7dc1b6b in apk_extract_v3 (ectx=0x55555556f430, is=0x5555555969d0) at ../src/extract_v3.c:221
#7 0x000055555555f1d6 in extract_main (pctx=0x55555556f420, ac=0x55555556dee0 <ctx>, args=0x5555555965a0) at ../src/app_extract.c:100
#8 0x000055555555afd6 in main (argc=1, argv=0x7fffffffdf28) at ../src/apk.c:519
```
Strace:
<details>
```
❯ strace /home/user/src/openwrt/openwrt/staging_dir/hostpkg/bin/apk --destination /home/user/src/openwrt/openwrt/build_dir/target-x86_64_musl/root-x86 --root /home/user/src/openwrt/openwrt/build_dir/target-x86_64_musl/root-x86 --keys-dir /home/user/src/openwrt/openwrt --no-cache --no-network --force extract --no-chown /home/user/src/openwrt/openwrt/bin/targets/x86/64/packages/dropbear-2020.81-2.apk
execve("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/bin/apk", ["/home/user/src/openwrt/openwrt/s"..., "--destination", "/home/user/src/openwrt/openwrt/b"..., "--root", "/home/user/src/openwrt/openwrt/b"..., "--keys-dir", "/home/user/src/openwrt/openwrt", "--no-cache", "--no-network", "--force", "extract", "--no-chown", "/home/user/src/openwrt/openwrt/b"...], 0x7fff19948870 /* 54 vars */) = 0
brk(NULL) = 0x55f017628000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/haswell/x86_64", 0x7fff14fc48d0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/haswell", 0x7fff14fc48d0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/x86_64", 0x7fff14fc48d0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/tls", 0x7fff14fc48d0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/haswell/x86_64", 0x7fff14fc48d0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/haswell", 0x7fff14fc48d0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/x86_64", 0x7fff14fc48d0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=105639, ...}) = 0
mmap(NULL, 105639, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f3444ac7000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 |\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=149520, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3444ac5000
mmap(NULL, 136304, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f3444aa3000
mmap(0x7f3444aaa000, 65536, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7f3444aaa000
mmap(0x7f3444aba000, 20480, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7f3444aba000
mmap(0x7f3444abf000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7f3444abf000
mmap(0x7f3444ac1000, 13424, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f3444ac1000
close(3) = 0
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/libapk.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\23\t\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=3874112, ...}) = 0
mmap(NULL, 2544136, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f3444835000
mmap(0x7f34448bb000, 1282048, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x86000) = 0x7f34448bb000
mmap(0x7f34449f4000, 507904, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bf000) = 0x7f34449f4000
mmap(0x7f3444a70000, 188416, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23a000) = 0x7f3444a70000
mmap(0x7f3444a9e000, 16904, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f3444a9e000
close(3) = 0
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0203\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=113088, ...}) = 0
mmap(NULL, 115088, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f3444818000
mprotect(0x7f344481b000, 98304, PROT_NONE) = 0
mmap(0x7f344481b000, 69632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f344481b000
mmap(0x7f344482c000, 24576, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7f344482c000
mmap(0x7f3444833000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7f3444833000
close(3) = 0
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/staging_dir/hostpkg/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@n\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1839792, ...}) = 0
mmap(NULL, 1852680, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f3444653000
mprotect(0x7f3444678000, 1662976, PROT_NONE) = 0
mmap(0x7f3444678000, 1355776, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7f3444678000
mmap(0x7f34447c3000, 303104, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x170000) = 0x7f34447c3000
mmap(0x7f344480e000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1ba000) = 0x7f344480e000
mmap(0x7f3444814000, 13576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f3444814000
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3444651000
arch_prctl(ARCH_SET_FS, 0x7f3444651b80) = 0
mprotect(0x7f344480e000, 12288, PROT_READ) = 0
mprotect(0x7f3444833000, 4096, PROT_READ) = 0
mprotect(0x7f3444abf000, 4096, PROT_READ) = 0
mprotect(0x7f3444a70000, 135168, PROT_READ) = 0
mprotect(0x55f015c9f000, 4096, PROT_READ) = 0
mprotect(0x7f3444b0b000, 4096, PROT_READ) = 0
munmap(0x7f3444ac7000, 105639) = 0
set_tid_address(0x7f3444651e50) = 1069249
set_robust_list(0x7f3444651e60, 24) = 0
rt_sigaction(SIGRTMIN, {sa_handler=0x7f3444aaa690, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7f3444ab7140}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0x7f3444aaa730, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f3444ab7140}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
brk(NULL) = 0x55f017628000
brk(0x55f017649000) = 0x55f017649000
umask(000) = 022
rt_sigaction(SIGWINCH, {sa_handler=0x55f015c8f630, sa_mask=[WINCH], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f344468ed60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f344468ed60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
access("/etc/apk/interactive", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 163840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3444629000
mmap(NULL, 163840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3444601000
mmap(NULL, 1601536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f344447a000
brk(0x55f017670000) = 0x55f017670000
rt_sigaction(SIGINT, {sa_handler=0x55f015c8f610, sa_mask=[INT], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f344468ed60}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/build_dir/target-x86_64_musl/root-x86", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/build_dir/target-x86_64_musl/root-x86", O_RDONLY) = 4
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x5), ...}) = 0
write(1, "Extracting /home/user/src/openwr"..., 96Extracting /home/user/src/openwrt/openwrt/bin/targets/x86/64/packages/dropbear-2020.81-2.apk...
) = 96
openat(AT_FDCWD, "/home/user/src/openwrt/openwrt/bin/targets/x86/64/packages/dropbear-2020.81-2.apk", O_RDONLY|O_CLOEXEC) = 5
read(5, "ADBd\354\275\tx\24\305\3667\334\223d \t\301\tB$*\350\200\1\22eIP\224@\6"..., 131072) = 108035
openat(3, "/home/user/src/openwrt/openwrt", O_RDONLY|O_CLOEXEC) = 6
fstat(6, {st_mode=S_IFDIR|0755, st_size=229376, ...}) = 0
fcntl(6, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fcntl(6, F_SETFD, FD_CLOEXEC) = 0
brk(0x55f017698000) = 0x55f017698000
lseek(6, 0, SEEK_SET) = 0
getdents64(6, 0x55f01766fa40 /* 42 entries */, 32768) = 1336
openat(6, "rules.mk", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
futex(0x7f3444aa09e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f3444aa09f0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f3444aa09ec, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f3444a9e708, FUTEX_WAKE_PRIVATE, 2147483647) = 0
fstat(7, {st_mode=S_IFREG|0644, st_size=14826, ...}) = 0
read(7, "# SPDX-License-Identifier: GPL-2"..., 4096) = 4096
read(7, "CV)$(DIR_SUFFIX)\nelse\n ifeq ($("..., 4096) = 4096
read(7, " endif\n TARGET_PATH:=$(TOOL"..., 4096) = 4096
read(7, "ar,$(1))=$$(call $(1))\nendef\n\n# "..., 4096) = 2538
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "# SPDX-License-Identifier: GPL-2"..., 4096) = 4096
read(7, "CV)$(DIR_SUFFIX)\nelse\n ifeq ($("..., 4096) = 4096
read(7, " endif\n TARGET_PATH:=$(TOOL"..., 4096) = 4096
read(7, "ar,$(1))=$$(call $(1))\nendef\n\n# "..., 4096) = 2538
read(7, "", 4096) = 0
close(7) = 0
openat(6, "public-key.pem", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=178, ...}) = 0
read(7, "-----BEGIN PUBLIC KEY-----\nMFkwE"..., 4096) = 178
close(7) = 0
openat(6, "tools", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "key-build", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=176, ...}) = 0
read(7, "untrusted comment: Local build k"..., 4096) = 176
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "untrusted comment: Local build k"..., 4096) = 176
read(7, "", 4096) = 0
close(7) = 0
openat(6, "Config.in", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=675, ...}) = 0
read(7, "# SPDX-License-Identifier: GPL-2"..., 4096) = 675
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "# SPDX-License-Identifier: GPL-2"..., 4096) = 675
read(7, "", 4096) = 0
close(7) = 0
openat(6, "toolchain", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "tmp", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=20480, ...}) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, ".ccache", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, ".git", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "dl", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, ".config.old", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=131115, ...}) = 0
read(7, "#\n# Automatically generated file"..., 4096) = 4096
read(7, "IZE=\"\"\nCONFIG_GRUB_IMAGES=y\nCONF"..., 4096) = 4096
read(7, "ES=y\nCONFIG_KERNEL_POSIX_MQUEUE="..., 4096) = 4096
read(7, "y\n# CONFIG_TARGET_PREINIT_DISABL"..., 4096) = 4096
read(7, "INITIONS is not set\n# CONFIG_BUS"..., 4096) = 4096
read(7, "RE_TAR_AUTODETECT is not set\nCON"..., 4096) = 4096
read(7, "is not set\n# CONFIG_BUSYBOX_DEFA"..., 4096) = 4096
read(7, "FAULT_WHICH=y\n# CONFIG_BUSYBOX_D"..., 4096) = 4096
read(7, "DELAY=0\n# CONFIG_BUSYBOX_DEFAULT"..., 4096) = 4096
read(7, "_BUSYBOX_DEFAULT_FATATTR is not "..., 4096) = 4096
read(7, "FAULT_SETSID is not set\nCONFIG_B"..., 4096) = 4096
read(7, "# CONFIG_BUSYBOX_DEFAULT_FBSPLAS"..., 4096) = 4096
read(7, "not set\n# CONFIG_BUSYBOX_DEFAULT"..., 4096) = 4096
read(7, "_DEFAULT_PING=y\nCONFIG_BUSYBOX_D"..., 4096) = 4096
read(7, "MPSTAT is not set\n# CONFIG_BUSYB"..., 4096) = 4096
read(7, " set\n# CONFIG_BUSYBOX_DEFAULT_HU"..., 4096) = 4096
read(7, "ot set\nCONFIG_PACKAGE_openwrt-ke"..., 4096) = 4096
read(7, "ONFIG_PACKAGE_brcmfmac-firmware-"..., 4096) = 4096
read(7, "e is not set\n# CONFIG_PACKAGE_rt"..., 4096) = 4096
read(7, "-exportfs is not set\n# CONFIG_PA"..., 4096) = 4096
read(7, "IG_PACKAGE_kmod-iio-fxas21002c-s"..., 4096) = 4096
read(7, "# CONFIG_PACKAGE_kmod-ipt-extra "..., 4096) = 4096
read(7, "# CONFIG_PACKAGE_kmod-skge is no"..., 4096) = 4096
read(7, "pio-pca953x is not set\n# CONFIG_"..., 4096) = 4096
read(7, "_kmod-usb-printer is not set\n# C"..., 4096) = 4096
read(7, "\n# CONFIG_PACKAGE_kmod-ipw2100 i"..., 4096) = 4096
read(7, "cessing is not set\n# CONFIG_PACK"..., 4096) = 4096
read(7, "l is not set\n# CONFIG_PACKAGE_li"..., 4096) = 4096
read(7, " 3. Applications\n\n#\n# 4. Themes\n"..., 4096) = 4096
read(7, "\n#\n# CONFIG_PACKAGE_thc-ipv6-add"..., 4096) = 4096
read(7, "not set\n# CONFIG_PACKAGE_wpad-ba"..., 4096) = 4096
read(7, "_wall is not set\n# end of Termin"..., 4096) = 4096
read(7, " not set\n# end of Font-Utils\n# e"..., 4096) = 43
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "#\n# Automatically generated file"..., 4096) = 4096
read(7, "IZE=\"\"\nCONFIG_GRUB_IMAGES=y\nCONF"..., 4096) = 4096
read(7, "ES=y\nCONFIG_KERNEL_POSIX_MQUEUE="..., 4096) = 4096
read(7, "y\n# CONFIG_TARGET_PREINIT_DISABL"..., 4096) = 4096
read(7, "INITIONS is not set\n# CONFIG_BUS"..., 4096) = 4096
read(7, "RE_TAR_AUTODETECT is not set\nCON"..., 4096) = 4096
read(7, "is not set\n# CONFIG_BUSYBOX_DEFA"..., 4096) = 4096
read(7, "FAULT_WHICH=y\n# CONFIG_BUSYBOX_D"..., 4096) = 4096
read(7, "DELAY=0\n# CONFIG_BUSYBOX_DEFAULT"..., 4096) = 4096
read(7, "_BUSYBOX_DEFAULT_FATATTR is not "..., 4096) = 4096
read(7, "FAULT_SETSID is not set\nCONFIG_B"..., 4096) = 4096
read(7, "# CONFIG_BUSYBOX_DEFAULT_FBSPLAS"..., 4096) = 4096
read(7, "not set\n# CONFIG_BUSYBOX_DEFAULT"..., 4096) = 4096
read(7, "_DEFAULT_PING=y\nCONFIG_BUSYBOX_D"..., 4096) = 4096
read(7, "MPSTAT is not set\n# CONFIG_BUSYB"..., 4096) = 4096
read(7, " set\n# CONFIG_BUSYBOX_DEFAULT_HU"..., 4096) = 4096
read(7, "ot set\nCONFIG_PACKAGE_openwrt-ke"..., 4096) = 4096
read(7, "ONFIG_PACKAGE_brcmfmac-firmware-"..., 4096) = 4096
read(7, "e is not set\n# CONFIG_PACKAGE_rt"..., 4096) = 4096
read(7, "-exportfs is not set\n# CONFIG_PA"..., 4096) = 4096
read(7, "IG_PACKAGE_kmod-iio-fxas21002c-s"..., 4096) = 4096
read(7, "# CONFIG_PACKAGE_kmod-ipt-extra "..., 4096) = 4096
read(7, "# CONFIG_PACKAGE_kmod-skge is no"..., 4096) = 4096
read(7, "pio-pca953x is not set\n# CONFIG_"..., 4096) = 4096
read(7, "_kmod-usb-printer is not set\n# C"..., 4096) = 4096
read(7, "\n# CONFIG_PACKAGE_kmod-ipw2100 i"..., 4096) = 4096
read(7, "cessing is not set\n# CONFIG_PACK"..., 4096) = 4096
read(7, "l is not set\n# CONFIG_PACKAGE_li"..., 4096) = 4096
read(7, " 3. Applications\n\n#\n# 4. Themes\n"..., 4096) = 4096
read(7, "\n#\n# CONFIG_PACKAGE_thc-ipv6-add"..., 4096) = 4096
read(7, "not set\n# CONFIG_PACKAGE_wpad-ba"..., 4096) = 4096
read(7, "_wall is not set\n# end of Termin"..., 4096) = 4096
read(7, " not set\n# end of Font-Utils\n# e"..., 4096) = 43
read(7, "", 4096) = 0
close(7) = 0
openat(6, "target", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "key-build.ucert", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=356, ...}) = 0
read(7, "\0\0\1d\0\0\0\233untrusted comment: signe"..., 4096) = 356
lseek(7, 0, SEEK_SET) = 0
read(7, "\0\0\1d\0\0\0\233untrusted comment: signe"..., 4096) = 356
close(7) = 0
openat(6, "staging_dir", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, ".gitattributes", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=8, ...}) = 0
read(7, "* -text\n", 4096) = 8
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "* -text\n", 4096) = 8
read(7, "", 4096) = 0
close(7) = 0
openat(6, "scripts", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f017689a50, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "private-key.pem", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=227, ...}) = 0
read(7, "-----BEGIN EC PRIVATE KEY-----\nM"..., 4096) = 227
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "-----BEGIN EC PRIVATE KEY-----\nM"..., 4096) = 227
close(7) = 0
openat(6, "key-build.pub", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
read(7, "untrusted comment: Local build k"..., 4096) = 92
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "untrusted comment: Local build k"..., 4096) = 92
read(7, "", 4096) = 0
close(7) = 0
openat(6, ".github", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "README.md", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=3604, ...}) = 0
read(7, "![OpenWrt logo](include/logo.png"..., 4096) = 3604
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "![OpenWrt logo](include/logo.png"..., 4096) = 3604
read(7, "", 4096) = 0
close(7) = 0
openat(6, "bin", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "Makefile", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=3831, ...}) = 0
read(7, "# SPDX-License-Identifier: GPL-2"..., 4096) = 3831
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "# SPDX-License-Identifier: GPL-2"..., 4096) = 3831
read(7, "", 4096) = 0
close(7) = 0
openat(6, "usr", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "config", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "feeds", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, ".config", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=135893, ...}) = 0
read(7, "#\n# Automatically generated file"..., 4096) = 4096
read(7, "IZE=\"\"\nCONFIG_GRUB_IMAGES=y\nCONF"..., 4096) = 4096
read(7, "ES=y\nCONFIG_KERNEL_POSIX_MQUEUE="..., 4096) = 4096
read(7, "y\n# CONFIG_TARGET_PREINIT_DISABL"..., 4096) = 4096
read(7, "INITIONS is not set\n# CONFIG_BUS"..., 4096) = 4096
read(7, "RE_TAR_AUTODETECT is not set\nCON"..., 4096) = 4096
read(7, "is not set\n# CONFIG_BUSYBOX_DEFA"..., 4096) = 4096
read(7, "FAULT_WHICH=y\n# CONFIG_BUSYBOX_D"..., 4096) = 4096
read(7, "DELAY=0\n# CONFIG_BUSYBOX_DEFAULT"..., 4096) = 4096
read(7, "_BUSYBOX_DEFAULT_FATATTR is not "..., 4096) = 4096
read(7, "FAULT_SETSID is not set\nCONFIG_B"..., 4096) = 4096
read(7, "# CONFIG_BUSYBOX_DEFAULT_FBSPLAS"..., 4096) = 4096
read(7, "not set\n# CONFIG_BUSYBOX_DEFAULT"..., 4096) = 4096
read(7, "_DEFAULT_PING=y\nCONFIG_BUSYBOX_D"..., 4096) = 4096
read(7, "MPSTAT is not set\n# CONFIG_BUSYB"..., 4096) = 4096
read(7, " set\n# CONFIG_BUSYBOX_DEFAULT_HU"..., 4096) = 4096
read(7, "ot set\nCONFIG_PACKAGE_openwrt-ke"..., 4096) = 4096
read(7, " CONFIG_PACKAGE_brcmfmac-firmwar"..., 4096) = 4096
read(7, "\n# CONFIG_PACKAGE_rtl8723au-firm"..., 4096) = 4096
read(7, "cramfs is not set\n# CONFIG_PACKA"..., 4096) = 4096
read(7, "od-iio-core is not set\n# CONFIG_"..., 4096) = 4096
read(7, "t\n# CONFIG_PACKAGE_kmod-ipt-conn"..., 4096) = 4096
read(7, " is not set\n# CONFIG_PACKAGE_kmo"..., 4096) = 4096
read(7, " not set\n# CONFIG_PACKAGE_kmod-g"..., 4096) = 4096
read(7, "sb-net-sr9700 is not set\n# CONFI"..., 4096) = 4096
read(7, "FIG_PACKAGE_kmod-hermes-pci is n"..., 4096) = 4096
read(7, "CKAGE_python3-logging is not set"..., 4096) = 4096
read(7, "_libiw is not set\nCONFIG_PACKAGE"..., 4096) = 4096
read(7, "\n#\n# 4. Themes\n#\nCONFIG_PACKAGE_"..., 4096) = 4096
read(7, "t set\n# CONFIG_PACKAGE_luci-i18n"..., 4096) = 4096
read(7, "_PACKAGE_basicstation-linuxpico "..., 4096) = 4096
read(7, "pd-common is not set\n# CONFIG_PA"..., 4096) = 4096
read(7, " is not set\n# CONFIG_PACKAGE_f2f"..., 4096) = 4096
read(7, "t\nCONFIG_STRACE_NONE=y\n# CONFIG_"..., 4096) = 725
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "#\n# Automatically generated file"..., 4096) = 4096
read(7, "IZE=\"\"\nCONFIG_GRUB_IMAGES=y\nCONF"..., 4096) = 4096
read(7, "ES=y\nCONFIG_KERNEL_POSIX_MQUEUE="..., 4096) = 4096
read(7, "y\n# CONFIG_TARGET_PREINIT_DISABL"..., 4096) = 4096
read(7, "INITIONS is not set\n# CONFIG_BUS"..., 4096) = 4096
read(7, "RE_TAR_AUTODETECT is not set\nCON"..., 4096) = 4096
read(7, "is not set\n# CONFIG_BUSYBOX_DEFA"..., 4096) = 4096
read(7, "FAULT_WHICH=y\n# CONFIG_BUSYBOX_D"..., 4096) = 4096
read(7, "DELAY=0\n# CONFIG_BUSYBOX_DEFAULT"..., 4096) = 4096
read(7, "_BUSYBOX_DEFAULT_FATATTR is not "..., 4096) = 4096
read(7, "FAULT_SETSID is not set\nCONFIG_B"..., 4096) = 4096
read(7, "# CONFIG_BUSYBOX_DEFAULT_FBSPLAS"..., 4096) = 4096
read(7, "not set\n# CONFIG_BUSYBOX_DEFAULT"..., 4096) = 4096
read(7, "_DEFAULT_PING=y\nCONFIG_BUSYBOX_D"..., 4096) = 4096
read(7, "MPSTAT is not set\n# CONFIG_BUSYB"..., 4096) = 4096
read(7, " set\n# CONFIG_BUSYBOX_DEFAULT_HU"..., 4096) = 4096
read(7, "ot set\nCONFIG_PACKAGE_openwrt-ke"..., 4096) = 4096
read(7, " CONFIG_PACKAGE_brcmfmac-firmwar"..., 4096) = 4096
read(7, "\n# CONFIG_PACKAGE_rtl8723au-firm"..., 4096) = 4096
read(7, "cramfs is not set\n# CONFIG_PACKA"..., 4096) = 4096
read(7, "od-iio-core is not set\n# CONFIG_"..., 4096) = 4096
read(7, "t\n# CONFIG_PACKAGE_kmod-ipt-conn"..., 4096) = 4096
read(7, " is not set\n# CONFIG_PACKAGE_kmo"..., 4096) = 4096
read(7, " not set\n# CONFIG_PACKAGE_kmod-g"..., 4096) = 4096
read(7, "sb-net-sr9700 is not set\n# CONFI"..., 4096) = 4096
read(7, "FIG_PACKAGE_kmod-hermes-pci is n"..., 4096) = 4096
read(7, "CKAGE_python3-logging is not set"..., 4096) = 4096
read(7, "_libiw is not set\nCONFIG_PACKAGE"..., 4096) = 4096
read(7, "\n#\n# 4. Themes\n#\nCONFIG_PACKAGE_"..., 4096) = 4096
read(7, "t set\n# CONFIG_PACKAGE_luci-i18n"..., 4096) = 4096
read(7, "_PACKAGE_basicstation-linuxpico "..., 4096) = 4096
read(7, "pd-common is not set\n# CONFIG_PA"..., 4096) = 4096
read(7, " is not set\n# CONFIG_PACKAGE_f2f"..., 4096) = 4096
read(7, "t\nCONFIG_STRACE_NONE=y\n# CONFIG_"..., 4096) = 725
read(7, "", 4096) = 0
close(7) = 0
openat(6, "apk", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "BSDmakefile", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=106, ...}) = 0
read(7, "# SPDX-License-Identifier: GPL-2"..., 4096) = 106
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "# SPDX-License-Identifier: GPL-2"..., 4096) = 106
read(7, "", 4096) = 0
close(7) = 0
openat(6, "crypto-works", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=7484, ...}) = 0
read(7, "make -C /home/user/src/openwrt/o"..., 4096) = 4096
read(7, "ev-linux-1.12/Module.symvers.tmp"..., 4096) = 3388
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "make -C /home/user/src/openwrt/o"..., 4096) = 4096
read(7, "ev-linux-1.12/Module.symvers.tmp"..., 4096) = 3388
read(7, "", 4096) = 0
close(7) = 0
openat(6, ".gitignore", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=283, ...}) = 0
read(7, "*.o\napk/\n.DS_Store\n.*.swp\n/env\n/"..., 4096) = 283
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "*.o\napk/\n.DS_Store\n.*.swp\n/env\n/"..., 4096) = 283
read(7, "", 4096) = 0
close(7) = 0
openat(6, "etc", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "feeds.conf", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=433, ...}) = 0
read(7, "src-git-full routing https://git"..., 4096) = 433
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "src-git-full routing https://git"..., 4096) = 433
read(7, "", 4096) = 0
close(7) = 0
openat(6, "key-build.ucert.revoke", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=260, ...}) = 0
read(7, "\0\0\1\4\0\0\0\233untrusted comment: signe"..., 4096) = 260
lseek(7, 0, SEEK_SET) = 0
read(7, "\0\0\1\4\0\0\0\233untrusted comment: signe"..., 4096) = 260
close(7) = 0
openat(6, "include", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "feeds.conf.default", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=442, ...}) = 0
read(7, "src-git packages https://git.ope"..., 4096) = 442
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "src-git packages https://git.ope"..., 4096) = 442
read(7, "", 4096) = 0
close(7) = 0
openat(6, "package", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "test.db", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=12184, ...}) = 0
read(7, "ADB.indx0/\0\0\0\0\0\0 /\0\340\rbnx2-firmwa"..., 4096) = 4096
lseek(7, 0, SEEK_SET) = 0
read(7, "ADB.indx0/\0\0\0\0\0\0 /\0\340\rbnx2-firmwa"..., 4096) = 4096
close(7) = 0
openat(6, "COPYING", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFREG|0644, st_size=284, ...}) = 0
read(7, "OpenWrt is provided under:\n\n\tSPD"..., 4096) = 284
read(7, "", 4096) = 0
lseek(7, 0, SEEK_SET) = 0
read(7, "OpenWrt is provided under:\n\n\tSPD"..., 4096) = 284
read(7, "", 4096) = 0
close(7) = 0
openat(6, "build_dir", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
openat(6, "LICENSES", O_RDONLY|O_CLOEXEC) = 7
fcntl(7, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fstat(7, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
lseek(7, 0, SEEK_SET) = 0
read(7, 0x55f01768b2c0, 4096) = -1 EISDIR (Is a directory)
close(7) = 0
getdents64(6, 0x55f01766fa40 /* 0 entries */, 32768) = 0
close(6) = 0
mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3444459000
openat(3, "etc/passwd", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(3, "etc/group", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
mkdirat(4, "etc", 0755) = -1 EEXIST (File exists)
utimensat(4, "etc", [{tv_sec=0, tv_nsec=0}, {tv_sec=0, tv_nsec=0}], 0) = 0
mkdirat(4, "etc///init.d", 0755) = -1 EEXIST (File exists)
utimensat(4, "etc///init.d", [{tv_sec=0, tv_nsec=0}, {tv_sec=0, tv_nsec=0}], 0) = 0
unlinkat(4, "etc///init.d/dropbear", 0) = 0
openat(4, "etc///init.d/dropbear", O_RDWR|O_CREAT|O_EXCL|O_TRUNC|O_CLOEXEC, 0755) = 6
write(6, "#!/bin/sh /etc/rc.common\n# Copyr"..., 5935) = 5935
close(6) = 0
utimensat(4, "etc///init.d/dropbear", [{tv_sec=1636598796, tv_nsec=0} /* 2021-11-10T16:46:36-1000 */, {tv_sec=1636598796, tv_nsec=0} /* 2021-11-10T16:46:36-1000 */], 0) = 0
mkdirat(4, "etc//config", 0755) = -1 EEXIST (File exists)
utimensat(4, "etc//config", [{tv_sec=0, tv_nsec=0}, {tv_sec=0, tv_nsec=0}], 0) = 0
unlinkat(4, "etc//config/dropbear", 0) = 0
openat(4, "etc//config/dropbear", O_RDWR|O_CREAT|O_EXCL|O_TRUNC|O_CLOEXEC, 0600) = 6
write(6, "config dropbear\n\toption Password"..., 134) = 134
close(6) = 0
utimensat(4, "etc//config/dropbear", [{tv_sec=1636598796, tv_nsec=0} /* 2021-11-10T16:46:36-1000 */, {tv_sec=1636598796, tv_nsec=0} /* 2021-11-10T16:46:36-1000 */], 0) = 0
mkdirat(4, "etc/dropbear", 0755) = -1 EEXIST (File exists)
utimensat(4, "etc/dropbear", [{tv_sec=0, tv_nsec=0}, {tv_sec=0, tv_nsec=0}], 0) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
+++ killed by SIGSEGV +++
Segmentation fault
```
</details>
* [dropbear-2020.81-2.apk](/uploads/1809cb045b4b062719716da5dda9510a/dropbear-2020.81-2.apk)
* [public-key.pem](/uploads/6f7ad715b2471c0d3071590679df1705/public-key.pem)https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10785Warning about missing embedded checksums using v32021-12-03T13:07:22ZPaul SpoorenWarning about missing embedded checksums using v3With the recent fixes v3 package installation works mostly as expected. Some trigger a warning which is handled as an error.
```
(113/114) Installing urngd (2020-01-21-c7f7b6b6-1)
(114/114) Installing usign (2020-05-23-f1f65026-1)
WARNIN...With the recent fixes v3 package installation works mostly as expected. Some trigger a warning which is handled as an error.
```
(113/114) Installing urngd (2020-01-21-c7f7b6b6-1)
(114/114) Installing usign (2020-05-23-f1f65026-1)
WARNING: usign-2020-05-23-f1f65026-1: support for packages without embedded checksums will be dropped in apk-tools 3.
33 errors; 12 MiB in 114 packages
```
Both packages of the log are attached, they are created the same way within the OpenWrt build system.
* [urngd-2020-01-21-c7f7b6b6-1.apk](/uploads/e8fd9834f549341cb697ba306a8a4e3c/urngd-2020-01-21-c7f7b6b6-1.apk)
* [usign-2020-05-23-f1f65026-1.apk](/uploads/5a17837486ddb3444480b0bce350e38a/usign-2020-05-23-f1f65026-1.apk)https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10786Error on installing empty folder with v32021-11-26T18:05:46ZPaul SpoorenError on installing empty folder with v3I'm trying to install a package that creates the empty folder `/var`, however that fails.
```shell
❯ fakeroot ./staging_dir/hostpkg/bin/apk add --root apk/ --keys-dir etc/apk/keys bin/targets/x86/64/packages/base-files-1459-r18071+1-634...I'm trying to install a package that creates the empty folder `/var`, however that fails.
```shell
❯ fakeroot ./staging_dir/hostpkg/bin/apk add --root apk/ --keys-dir etc/apk/keys bin/targets/x86/64/packages/base-files-1459-r18071+1-63493587b8.apk
(1/1) Installing base-files (1459-r18071+1-63493587b8)
WARNING: base-files-1459-r18071+1-63493587b8: support for packages without embedded checksums will be dropped in apk-tools 3.
ERROR: base-files-1459-r18071+1-63493587b8: failed to commit var: Is a directory
1 error; 0 MiB in 2 packages
```
Using `adbdump` I don't see anything special about that folder:
```yaml
- name: var
acl:
mode: 777
user: root
group: root
size: 3
mtime: 1636663999
target: 00a0746d70
```
* [base-files-1459-r18071+1-63493587b8.apk](/uploads/a75bcd021c5a457f7748700ec8324ca3/base-files-1459-r18071+1-63493587b8.apk)https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10787Optional architecture adding to repository path2022-12-21T19:01:25ZPaul SpoorenOptional architecture adding to repository pathWhile Alpine repositories follow the structure `<feedname>/<arch>`, it's the other way around for OpenWrt. While this would be easy to switch on the OpenWrt side, we also have target specific packages which use unique path without the ar...While Alpine repositories follow the structure `<feedname>/<arch>`, it's the other way around for OpenWrt. While this would be easy to switch on the OpenWrt side, we also have target specific packages which use unique path without the architecture in it.
It would be useful to have the configuration option to disable *architecture addition* to repositories.
A workaround is to create a symlink like `ln -s . <arch>` but that's not ideal.
Example target specific repository:
* https://downloads.openwrt.org/snapshots/targets/x86/64/packages/
Example arch specific repository (feed *base*):
* https://downloads.openwrt.org/snapshots/packages/x86_64/base/v3.0https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10788show download size with apk2021-12-14T19:24:56ZDocbrokeshow download size with apk`apk` shows installed size, with `interactive` flag or while using `apk info` but download size is not displayed.`apk` shows installed size, with `interactive` flag or while using `apk info` but download size is not displayed.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10789being able to specify an alternative APKINDEX?2021-11-15T14:16:38ZDaniel Kolesabeing able to specify an alternative APKINDEX?In my downstream build system I would like to implement staging support. That means if there is a package update and the build system detects a SONAME change over a previous version, and there are other packages in the repo (or possibly ...In my downstream build system I would like to implement staging support. That means if there is a package update and the build system detects a SONAME change over a previous version, and there are other packages in the repo (or possibly multiple repos, e.g. changes in main should also stage contrib) that still depend on the old version, the new packages should go into staging index first. The advantage of this should be that external users of the repository do not see updates until the repositories are clean; a side effect is that the build system should be able to reliably tell you if you still have packages that need rebuilding.
The behavior should be something like this:
1) an updated package is built
2) soname change detected: inspect existing indexes for dependencies, if dependencies detected, keep old index as is, and reindex using a staging index
3) the staging index keeps existing for as long as there are packages depending on the old soname
4) once all packages are rebuilt, staging index becomes main index
5) the catch is, everyone installing from the repository should see the old index with the old packages, while the build system should use the staging index to install `makedepends` and the likes
This has potential workarounds, like temporarily moving around the indexes for `makedepends` installation and so on, but this is racey (something from the outside could catch the staging index while `makedepends` installation is in progress)
If I could specify an alternative index path, i could name the staging index like `APKSTAGE.tar.gz` for example, and use that for all `apk` operations done within the build system, and I could implement the logic manageably.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10790how to select a specific package "provider" in apkbuild?2022-02-24T11:54:45ZClayton Crafthow to select a specific package "provider" in apkbuild?when working in postmarketOS, I came across a situation where it's desirable to always install a specific package *except* in some limited cases where a package is installed then some other package should be installed. Here's an example:...when working in postmarketOS, I came across a situation where it's desirable to always install a specific package *except* in some limited cases where a package is installed then some other package should be installed. Here's an example:
- package `BAR` is a reimplementation/replacement for package `FOO`
- package `FOO` should be installed when something `depends=FOO`
- a provisioning script effectively runs `apk add FOO`
- the special case is if package `BAZZ` is installed, then we want package `BAR` to be installed instead of `FOO`
One experiment to get this working involved using the following APKBUILD config:
**APKBUILD for FOO:**
```
...
provides=FOO
provider_priority=1
...
```
**APKBUILD for BAR:**
```
depends="<other stuff, but not FOO>"
...
provides=FOO
provider_priority=0
...
```
**APKBUILD for BAZ:**
```
...
subpackage="$pkgname-FOO"
...
FOO() {
install_if="$pkgname=$pkgver-r$pkgrel FOO"
depends="BAR"
mkdir "$subpkgdir"
}
...
```
When using the above, apk always selects `FOO` even if `BAR` is installed. Is there some other way to accomplish this purely in the APKBUILDs for these packages?https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10791Files in /etc/ have apk-new suffix attached2021-11-22T09:15:53ZPaul SpoorenFiles in /etc/ have apk-new suffix attachedUsing `apk install` with a list of packages adds an `apk-new` suffix to all files in `/etc/`. It works fine with other folders. Below is an example:
<details>
```
.
├── bin
│ ├── ash -> busybox
│ ├── board_detect
│ ├── busybox
│ ...Using `apk install` with a list of packages adds an `apk-new` suffix to all files in `/etc/`. It works fine with other folders. Below is an example:
<details>
```
.
├── bin
│ ├── ash -> busybox
│ ├── board_detect
│ ├── busybox
│ ├── cat -> busybox
│ ├── chgrp -> busybox
│ ├── chmod -> busybox
│ ├── chown -> busybox
│ ├── config_generate
│ ├── cp -> busybox
│ ├── date -> busybox
│ ├── dd -> busybox
│ ├── df -> busybox
│ ├── dmesg -> busybox
│ ├── echo -> busybox
│ ├── egrep -> busybox
│ ├── false -> busybox
│ ├── fgrep -> busybox
│ ├── fsync -> busybox
│ ├── grep -> busybox
│ ├── gunzip -> busybox
│ ├── gzip -> busybox
│ ├── ipcalc.sh
│ ├── kill -> busybox
│ ├── ln -> busybox
│ ├── lock -> busybox
│ ├── login -> busybox
│ ├── ls -> busybox
│ ├── mkdir -> busybox
│ ├── mknod -> busybox
│ ├── mktemp -> busybox
│ ├── mount -> busybox
│ ├── mv -> busybox
│ ├── netmsg -> busybox
│ ├── netstat -> busybox
│ ├── nice -> busybox
│ ├── passwd -> busybox
│ ├── pidof -> busybox
│ ├── ping -> busybox
│ ├── ping6 -> busybox
│ ├── ps -> busybox
│ ├── pwd -> busybox
│ ├── rm -> busybox
│ ├── rmdir -> busybox
│ ├── sed -> busybox
│ ├── sh -> busybox
│ ├── sleep -> busybox
│ ├── sync -> busybox
│ ├── tar -> busybox
│ ├── touch -> busybox
│ ├── traceroute -> busybox
│ ├── traceroute6 -> busybox
│ ├── true -> busybox
│ ├── ubus
│ ├── uclient-fetch
│ ├── umount -> busybox
│ ├── uname -> busybox
│ ├── vi -> busybox
│ └── zcat -> busybox
├── CONTROL
├── dev
├── etc
│ ├── apk
│ │ ├── arch
│ │ ├── arch.apk-new
│ │ ├── repositories.apk-new
│ │ ├── world
│ │ └── world.apk-new
│ ├── banner.apk-new
│ ├── banner.failsafe.apk-new
│ ├── board.d
│ │ ├── 01_leds.apk-new
│ │ ├── 02_network.apk-new
│ │ └── 99-default_network.apk-new
│ ├── capabilities
│ │ └── ntpd.json.apk-new
│ ├── config
│ │ ├── dhcp.apk-new
│ │ ├── dropbear.apk-new
│ │ └── firewall.apk-new
│ ├── crontabs
│ ├── device_info.apk-new
│ ├── diag.sh.apk-new
│ ├── dnsmasq.conf.apk-new
│ ├── dropbear
│ │ ├── dropbear_ed25519_host_key.apk-new
│ │ └── dropbear_rsa_host_key.apk-new
│ ├── e2fsck.conf.apk-new
│ ├── ethers.apk-new
│ ├── firewall.user.apk-new
│ ├── fstab.apk-new
│ ├── group.apk-new
│ ├── hosts.apk-new
│ ├── hotplug.d
│ │ ├── dhcp
│ │ ├── iface
│ │ │ ├── 00-netstate.apk-new
│ │ │ └── 20-firewall.apk-new
│ │ ├── neigh
│ │ ├── net
│ │ │ ├── 00-sysctl.apk-new
│ │ │ └── 20-smp-packet-steering.apk-new
│ │ ├── ntp
│ │ │ └── 25-dnsmasqsec.apk-new
│ │ └── tftp
│ ├── hotplug.json.apk-new
│ ├── hotplug-preinit.json.apk-new
│ ├── init.d
│ │ ├── boot.apk-new
│ │ ├── cron.apk-new
│ │ ├── dnsmasq.apk-new
│ │ ├── done.apk-new
│ │ ├── dropbear.apk-new
│ │ ├── firewall.apk-new
│ │ ├── gpio_switch.apk-new
│ │ ├── led.apk-new
│ │ ├── log.apk-new
│ │ ├── network.apk-new
│ │ ├── odhcpd.apk-new
│ │ ├── sysctl.apk-new
│ │ ├── sysfixtime.apk-new
│ │ ├── sysntpd.apk-new
│ │ ├── system.apk-new
│ │ ├── umount.apk-new
│ │ ├── urandom_seed.apk-new
│ │ └── urngd.apk-new
│ ├── inittab.apk-new
│ ├── iproute2
│ │ ├── ematch_map.apk-new
│ │ ├── rt_protos.apk-new
│ │ └── rt_tables.apk-new
│ ├── localtime.apk-new -> /tmp/localtime
│ ├── modules-boot.d
│ │ ├── 02-crypto-hash.apk-new -> ../modules.d/02-crypto-hash
│ │ ├── 04-crypto-crc32c.apk-new -> ../modules.d/04-crypto-crc32c
│ │ ├── 15-libphy.apk-new -> ../modules.d/15-libphy
│ │ ├── 17-pps.apk-new -> ../modules.d/17-pps
│ │ ├── 18-phy-realtek.apk-new -> ../modules.d/18-phy-realtek
│ │ ├── 18-ptp.apk-new -> ../modules.d/18-ptp
│ │ ├── 19-tg3.apk-new -> ../modules.d/19-tg3
│ │ ├── 30-button-hotplug.apk-new -> ../modules.d/30-button-hotplug
│ │ └── 35-igb.apk-new -> ../modules.d/35-igb
│ ├── modules.d
│ │ ├── 02-crypto-hash.apk-new
│ │ ├── 04-crypto-crc32c.apk-new
│ │ ├── 12-amazon-ena.apk-new
│ │ ├── 15-libphy.apk-new
│ │ ├── 17-pps.apk-new
│ │ ├── 18-phy-realtek.apk-new
│ │ ├── 18-ptp.apk-new
│ │ ├── 19-tg3.apk-new
│ │ ├── 25-nls-cp437.apk-new
│ │ ├── 25-nls-iso8859-1.apk-new
│ │ ├── 25-nls-utf8.apk-new
│ │ ├── 30-button-hotplug.apk-new
│ │ ├── 30-fs-vfat.apk-new
│ │ ├── 32-mdio.apk-new
│ │ ├── 35-amd-xgbe.apk-new
│ │ ├── 35-e1000.apk-new
│ │ ├── 35-igb.apk-new
│ │ ├── 35-ixgbe.apk-new
│ │ ├── 42-ip6tables.apk-new
│ │ ├── 51-i2c-core.apk-new
│ │ ├── 55-i2c-algo-bit.apk-new
│ │ ├── bnx2.apk-new
│ │ ├── e1000e.apk-new
│ │ ├── forcedeth.apk-new
│ │ ├── ipt-conntrack.apk-new
│ │ ├── ipt-core.apk-new
│ │ ├── ipt-nat.apk-new
│ │ ├── ipt-offload.apk-new
│ │ ├── lib-crc32c.apk-new
│ │ ├── lib-crc-ccitt.apk-new
│ │ ├── mdio-devres.apk-new
│ │ ├── nf-conntrack.apk-new
│ │ ├── nf-flow.apk-new
│ │ ├── nf-ipt6.apk-new
│ │ ├── nf-ipt.apk-new
│ │ ├── nf-nat.apk-new
│ │ ├── nf-reject6.apk-new
│ │ ├── nf-reject.apk-new
│ │ ├── ppp.apk-new
│ │ ├── pppoe.apk-new
│ │ └── r8169.apk-new
│ ├── mtab.apk-new -> /proc/mounts
│ ├── odhcp6c.user.apk-new
│ ├── odhcp6c.user.d
│ ├── openwrt_release.apk-new
│ ├── openwrt_version.apk-new
│ ├── opkg
│ │ ├── distfeeds.conf.apk-new
│ │ └── keys
│ │ ├── 4dc9a7a4e4f44d34.apk-new
│ │ └── b5043e70f9a75cde.apk-new
│ ├── os-release.apk-new -> ../usr/lib/os-release
│ ├── passwd.apk-new
│ ├── ppp
│ │ ├── chap-secrets.apk-new
│ │ ├── filter.apk-new
│ │ ├── options.apk-new
│ │ └── resolv.conf.apk-new -> /tmp/resolv.conf.ppp
│ ├── preinit.apk-new
│ ├── profile.apk-new
│ ├── protocols.apk-new
│ ├── rc.button
│ │ ├── failsafe.apk-new
│ │ ├── power.apk-new
│ │ ├── reboot.apk-new
│ │ ├── reset.apk-new
│ │ └── rfkill.apk-new
│ ├── rc.common.apk-new
│ ├── rc.d
│ ├── rc.local.apk-new
│ ├── resolv.conf.apk-new -> /tmp/resolv.conf
│ ├── services.apk-new
│ ├── shadow.apk-new
│ ├── shells.apk-new
│ ├── shinit.apk-new
│ ├── ssl
│ │ ├── cert.pem.apk-new -> /etc/ssl/certs/ca-certificates.crt
│ │ ├── certs
│ │ │ └── ca-certificates.crt.apk-new
│ │ └── private
│ ├── sysctl.conf.apk-new
│ ├── sysctl.d
│ │ ├── 10-default.conf.apk-new
│ │ └── 11-nf-conntrack.conf.apk-new
│ ├── syslog.conf.apk-new
│ ├── sysupgrade.conf.apk-new
│ ├── TZ.apk-new -> /tmp/TZ
│ ├── uci-defaults
│ │ ├── 10_migrate-shadow.apk-new
│ │ ├── 12_network-generate-ula.apk-new
│ │ ├── 13_fix-group-user.apk-new
│ │ ├── 14_migrate-dhcp-release.apk-new
│ │ ├── 15_odhcpd.apk-new
│ │ └── 50-dnsmasq-migrate-resolv-conf-auto.sh.apk-new
│ ├── udhcpc.user.apk-new
│ └── udhcpc.user.d
├── lib
│ ├── apk
│ │ └── db
│ │ ├── installed
│ │ ├── scripts.tar
│ │ └── triggers
│ ├── config
│ │ └── uci.sh
│ ├── firmware
│ │ ├── bnx2
│ │ │ ├── bnx2-mips-06-4.6.16.fw
│ │ │ ├── bnx2-mips-06-5.0.0.j3.fw
│ │ │ ├── bnx2-mips-06-5.0.0.j6.fw
│ │ │ ├── bnx2-mips-06-6.0.15.fw
│ │ │ ├── bnx2-mips-06-6.2.1.fw
│ │ │ ├── bnx2-mips-06-6.2.3.fw
│ │ │ ├── bnx2-mips-09-4.6.17.fw
│ │ │ ├── bnx2-mips-09-5.0.0.j15.fw
│ │ │ ├── bnx2-mips-09-5.0.0.j3.fw
│ │ │ ├── bnx2-mips-09-5.0.0.j9.fw
│ │ │ ├── bnx2-mips-09-6.0.17.fw
│ │ │ ├── bnx2-mips-09-6.2.1a.fw
│ │ │ ├── bnx2-mips-09-6.2.1b.fw
│ │ │ ├── bnx2-mips-09-6.2.1.fw
│ │ │ ├── bnx2-rv2p-06-4.6.16.fw
│ │ │ ├── bnx2-rv2p-06-5.0.0.j3.fw
│ │ │ ├── bnx2-rv2p-06-6.0.15.fw
│ │ │ ├── bnx2-rv2p-09-4.6.15.fw
│ │ │ ├── bnx2-rv2p-09-5.0.0.j10.fw
│ │ │ ├── bnx2-rv2p-09-5.0.0.j3.fw
│ │ │ ├── bnx2-rv2p-09-6.0.17.fw
│ │ │ ├── bnx2-rv2p-09ax-5.0.0.j10.fw
│ │ │ ├── bnx2-rv2p-09ax-5.0.0.j3.fw
│ │ │ └── bnx2-rv2p-09ax-6.0.17.fw
│ │ └── rtl_nic
│ │ ├── rtl8105e-1.fw
│ │ ├── rtl8106e-1.fw
│ │ ├── rtl8106e-2.fw
│ │ ├── rtl8107e-1.fw
│ │ ├── rtl8107e-2.fw
│ │ ├── rtl8125a-3.fw
│ │ ├── rtl8125b-1.fw
│ │ ├── rtl8125b-2.fw
│ │ ├── rtl8153a-2.fw
│ │ ├── rtl8153a-3.fw
│ │ ├── rtl8153a-4.fw
│ │ ├── rtl8153b-2.fw
│ │ ├── rtl8153c-1.fw
│ │ ├── rtl8156a-2.fw
│ │ ├── rtl8156b-2.fw
│ │ ├── rtl8168d-1.fw
│ │ ├── rtl8168d-2.fw
│ │ ├── rtl8168e-1.fw
│ │ ├── rtl8168e-2.fw
│ │ ├── rtl8168e-3.fw
│ │ ├── rtl8168f-1.fw
│ │ ├── rtl8168f-2.fw
│ │ ├── rtl8168fp-3.fw
│ │ ├── rtl8168g-1.fw
│ │ ├── rtl8168g-2.fw
│ │ ├── rtl8168g-3.fw
│ │ ├── rtl8168h-1.fw
│ │ ├── rtl8168h-2.fw
│ │ ├── rtl8402-1.fw
│ │ ├── rtl8411-1.fw
│ │ └── rtl8411-2.fw
│ ├── functions
│ │ ├── caldata.sh
│ │ ├── fsck
│ │ │ └── e2fsck.sh
│ │ ├── leds.sh
│ │ ├── migrations.sh
│ │ ├── network.sh
│ │ ├── preinit.sh
│ │ ├── procd.sh
│ │ ├── service.sh
│ │ ├── system.sh
│ │ └── uci-defaults.sh
│ ├── functions.sh
│ ├── ld-musl-x86_64.so.1 -> libc.so
│ ├── libblobmsg_json.so.20211120
│ ├── libc.so
│ ├── libfstools.so
│ ├── libgcc_s.so.1
│ ├── libjson_script.so.20211120
│ ├── libpreload-seccomp.so
│ ├── libpreload-trace.so
│ ├── libsetlbf.so
│ ├── libubox.so.20211120
│ ├── libubus.so.20210809
│ ├── libuci.so
│ ├── libustream-ssl.so
│ ├── libvalidate.so
│ ├── modules
│ │ └── 5.10.80
│ │ ├── amd-xgbe.ko
│ │ ├── bnx2.ko
│ │ ├── button-hotplug.ko
│ │ ├── crc-ccitt.ko
│ │ ├── e1000e.ko
│ │ ├── e1000.ko
│ │ ├── ena.ko
│ │ ├── fat.ko
│ │ ├── forcedeth.ko
│ │ ├── i2c-dev.ko
│ │ ├── igb.ko
│ │ ├── ip6table_filter.ko
│ │ ├── ip6table_mangle.ko
│ │ ├── ip6_tables.ko
│ │ ├── ip6t_REJECT.ko
│ │ ├── iptable_filter.ko
│ │ ├── iptable_mangle.ko
│ │ ├── iptable_nat.ko
│ │ ├── ip_tables.ko
│ │ ├── ipt_REJECT.ko
│ │ ├── ixgbe.ko
│ │ ├── libcrc32c.ko
│ │ ├── libphy.ko
│ │ ├── mdio_devres.ko
│ │ ├── mdio.ko
│ │ ├── nf_conntrack.ko
│ │ ├── nf_defrag_ipv4.ko
│ │ ├── nf_defrag_ipv6.ko
│ │ ├── nf_flow_table.ko
│ │ ├── nf_log_common.ko
│ │ ├── nf_log_ipv4.ko
│ │ ├── nf_log_ipv6.ko
│ │ ├── nf_nat.ko
│ │ ├── nf_reject_ipv4.ko
│ │ ├── nf_reject_ipv6.ko
│ │ ├── nls_cp437.ko
│ │ ├── nls_iso8859-1.ko
│ │ ├── nls_utf8.ko
│ │ ├── ppp_async.ko
│ │ ├── ppp_generic.ko
│ │ ├── pppoe.ko
│ │ ├── pppox.ko
│ │ ├── pps_core.ko
│ │ ├── ptp.ko
│ │ ├── r8169.ko
│ │ ├── realtek.ko
│ │ ├── slhc.ko
│ │ ├── tg3.ko
│ │ ├── vfat.ko
│ │ ├── x_tables.ko
│ │ ├── xt_comment.ko
│ │ ├── xt_conntrack.ko
│ │ ├── xt_FLOWOFFLOAD.ko
│ │ ├── xt_limit.ko
│ │ ├── xt_LOG.ko
│ │ ├── xt_mac.ko
│ │ ├── xt_mark.ko
│ │ ├── xt_MASQUERADE.ko
│ │ ├── xt_multiport.ko
│ │ ├── xt_nat.ko
│ │ ├── xt_REDIRECT.ko
│ │ ├── xt_state.ko
│ │ ├── xt_TCPMSS.ko
│ │ ├── xt_tcpudp.ko
│ │ └── xt_time.ko
│ ├── netifd
│ │ ├── dhcp.script
│ │ ├── dhcpv6.script
│ │ ├── netifd-proto.sh
│ │ ├── netifd-wireless.sh
│ │ ├── ppp6-up
│ │ ├── ppp-down
│ │ ├── ppp-up
│ │ ├── proto
│ │ │ ├── dhcp.sh
│ │ │ ├── dhcpv6.sh
│ │ │ └── ppp.sh
│ │ └── utils.sh
│ ├── network
│ │ └── config.sh
│ ├── preinit
│ │ ├── 00_preinit.conf
│ │ ├── 01_sysinfo
│ │ ├── 02_default_set_state
│ │ ├── 02_load_x86_ucode
│ │ ├── 02_sysinfo
│ │ ├── 10_indicate_failsafe
│ │ ├── 10_indicate_preinit
│ │ ├── 15_essential_fs_x86
│ │ ├── 20_check_iso
│ │ ├── 30_failsafe_wait
│ │ ├── 40_run_failsafe_hook
│ │ ├── 45_mount_xenfs
│ │ ├── 50_indicate_regular_preinit
│ │ ├── 70_initramfs_test
│ │ ├── 79_move_config
│ │ ├── 80_mount_root
│ │ ├── 81_upgrade_bootloader
│ │ ├── 81_urandom_seed
│ │ ├── 99_10_failsafe_dropbear
│ │ ├── 99_10_failsafe_login
│ │ └── 99_10_run_init
│ └── upgrade
│ ├── common.sh
│ ├── do_stage2
│ ├── fwtool.sh
│ ├── keep.d
│ │ ├── base-files
│ │ ├── base-files-essential
│ │ ├── busybox
│ │ ├── dnsmasq
│ │ ├── netifd
│ │ ├── odhcp6c
│ │ └── ppp
│ ├── platform.sh
│ └── stage2
├── lib64 -> lib
├── mnt
├── overlay
├── proc
├── rom
│ └── note
├── root
├── sbin
│ ├── askfirst
│ ├── devstatus
│ ├── firstboot
│ ├── fw3
│ ├── halt -> ../bin/busybox
│ ├── hotplug-call
│ ├── hwclock -> ../bin/busybox
│ ├── ifconfig -> ../bin/busybox
│ ├── ifdown -> ifup
│ ├── ifstatus
│ ├── ifup
│ ├── init
│ ├── ip -> ../bin/busybox
│ ├── jffs2mark -> jffs2reset
│ ├── jffs2reset
│ ├── kmodloader
│ ├── led.sh
│ ├── logd
│ ├── logread
│ ├── mkswap -> ../bin/busybox
│ ├── mount_root
│ ├── mtd
│ ├── netifd
│ ├── pivot_root -> ../bin/busybox
│ ├── poweroff -> ../bin/busybox
│ ├── procd
│ ├── reboot -> ../bin/busybox
│ ├── reload_config
│ ├── route -> ../bin/busybox
│ ├── seccomp-trace -> utrace
│ ├── start-stop-daemon -> ../bin/busybox
│ ├── swapoff -> ../bin/busybox
│ ├── swapon -> ../bin/busybox
│ ├── switch_root -> ../bin/busybox
│ ├── sysctl -> ../bin/busybox
│ ├── sysupgrade
│ ├── ubusd
│ ├── uci
│ ├── udevtrigger
│ ├── udhcpc -> ../bin/busybox
│ ├── ujail
│ ├── upgraded
│ ├── urandom_seed
│ ├── urngd
│ ├── utrace
│ ├── validate_data
│ └── wifi
├── sys
├── tmp
├── usr
│ ├── bin
│ │ ├── [ -> ../../bin/busybox
│ │ ├── [[ -> ../../bin/busybox
│ │ ├── apk
│ │ ├── awk -> ../../bin/busybox
│ │ ├── basename -> ../../bin/busybox
│ │ ├── clear -> ../../bin/busybox
│ │ ├── cmp -> ../../bin/busybox
│ │ ├── crontab -> ../../bin/busybox
│ │ ├── cut -> ../../bin/busybox
│ │ ├── dbclient -> ../sbin/dropbear
│ │ ├── dirname -> ../../bin/busybox
│ │ ├── dropbearkey -> ../sbin/dropbear
│ │ ├── du -> ../../bin/busybox
│ │ ├── env -> ../../bin/busybox
│ │ ├── expr -> ../../bin/busybox
│ │ ├── find -> ../../bin/busybox
│ │ ├── flock -> ../../bin/busybox
│ │ ├── free -> ../../bin/busybox
│ │ ├── fwtool
│ │ ├── getrandom
│ │ ├── head -> ../../bin/busybox
│ │ ├── hexdump -> ../../bin/busybox
│ │ ├── id -> ../../bin/busybox
│ │ ├── jshn
│ │ ├── jsonfilter
│ │ ├── killall -> ../../bin/busybox
│ │ ├── ldd -> ../../lib/libc.so
│ │ ├── less -> ../../bin/busybox
│ │ ├── logger -> ../../bin/busybox
│ │ ├── md5sum -> ../../bin/busybox
│ │ ├── mkfifo -> ../../bin/busybox
│ │ ├── nc -> ../../bin/busybox
│ │ ├── nslookup -> ../../bin/busybox
│ │ ├── pgrep -> ../../bin/busybox
│ │ ├── printf -> ../../bin/busybox
│ │ ├── readlink -> ../../bin/busybox
│ │ ├── reset -> ../../bin/busybox
│ │ ├── seq -> ../../bin/busybox
│ │ ├── sha256sum -> ../../bin/busybox
│ │ ├── signify -> usign
│ │ ├── sort -> ../../bin/busybox
│ │ ├── strings -> ../../bin/busybox
│ │ ├── tail -> ../../bin/busybox
│ │ ├── tee -> ../../bin/busybox
│ │ ├── test -> ../../bin/busybox
│ │ ├── time -> ../../bin/busybox
│ │ ├── top -> ../../bin/busybox
│ │ ├── tr -> ../../bin/busybox
│ │ ├── uniq -> ../../bin/busybox
│ │ ├── uptime -> ../../bin/busybox
│ │ ├── usign
│ │ ├── wc -> ../../bin/busybox
│ │ ├── which -> ../../bin/busybox
│ │ ├── xargs -> ../../bin/busybox
│ │ └── yes -> ../../bin/busybox
│ ├── lib
│ │ ├── dnsmasq
│ │ │ └── dhcp-script.sh
│ │ ├── engines-1.1
│ │ ├── iptables
│ │ ├── libapk.so.2
│ │ ├── libapk.so.2.99.0
│ │ ├── libblkid.so.1 -> libblkid.so.1.1.0
│ │ ├── libblkid.so.1.1.0
│ │ ├── libcom_err.so.0 -> libcom_err.so.0.0
│ │ ├── libcom_err.so.0.0
│ │ ├── libcrypto.so.1.1
│ │ ├── libe2p.so.2 -> libe2p.so.2.3
│ │ ├── libe2p.so.2.3
│ │ ├── libext2fs.so.2 -> libext2fs.so.2.4
│ │ ├── libext2fs.so.2.4
│ │ ├── libf2fs.so.8 -> libf2fs.so.8.0.0
│ │ ├── libf2fs.so.8.0.0
│ │ ├── libip4tc.so.2 -> libip4tc.so.2.0.0
│ │ ├── libip4tc.so.2.0.0
│ │ ├── libip6tc.so.2 -> libip6tc.so.2.0.0
│ │ ├── libip6tc.so.2.0.0
│ │ ├── libiptext4.so
│ │ ├── libiptext6.so
│ │ ├── libiptext.so
│ │ ├── libjson-c.so.5 -> libjson-c.so.5.1.0
│ │ ├── libjson-c.so.5.1.0
│ │ ├── liblua.so.5.1.5
│ │ ├── libnl-tiny.so
│ │ ├── libsmartcols.so.1 -> libsmartcols.so.1.1.0
│ │ ├── libsmartcols.so.1.1.0
│ │ ├── libssl.so.1.1
│ │ ├── libss.so.2 -> libss.so.2.0
│ │ ├── libss.so.2.0
│ │ ├── libuclient.so
│ │ ├── libuuid.so.1 -> libuuid.so.1.3.0
│ │ ├── libuuid.so.1.3.0
│ │ ├── libwolfssl.so.4.8.1.62348c2b
│ │ ├── libxtables.so.12 -> libxtables.so.12.4.0
│ │ ├── libxtables.so.12.4.0
│ │ ├── libz.so -> libz.so.1
│ │ ├── libz.so.1 -> libz.so.1.2.11
│ │ ├── libz.so.1.2.11
│ │ ├── opkg
│ │ │ └── info
│ │ ├── os-release
│ │ └── pppd
│ │ └── 2.4.9
│ │ └── pppoe.so
│ ├── lib64 -> lib
│ ├── libexec
│ │ ├── login.sh
│ │ └── validate_firmware_image
│ ├── sbin
│ │ ├── addpart
│ │ ├── brctl -> ../../bin/busybox
│ │ ├── chroot -> ../../bin/busybox
│ │ ├── crond -> ../../bin/busybox
│ │ ├── delpart
│ │ ├── dnsmasq
│ │ ├── dropbear
│ │ ├── e2fsck
│ │ ├── fsck.ext2 -> e2fsck
│ │ ├── fsck.ext3 -> e2fsck
│ │ ├── fsck.ext4 -> e2fsck
│ │ ├── grub-bios-setup
│ │ ├── ip6tables -> xtables-legacy-multi
│ │ ├── ip6tables-restore -> xtables-legacy-multi
│ │ ├── ip6tables-save -> xtables-legacy-multi
│ │ ├── iptables -> xtables-legacy-multi
│ │ ├── iptables-restore -> xtables-legacy-multi
│ │ ├── iptables-save -> xtables-legacy-multi
│ │ ├── mke2fs
│ │ ├── mkfs.ext2 -> mke2fs
│ │ ├── mkfs.ext3 -> mke2fs
│ │ ├── mkfs.ext4 -> mke2fs
│ │ ├── mkfs.f2fs
│ │ ├── ntpd -> ../../bin/busybox
│ │ ├── ntpd-hotplug
│ │ ├── odhcp6c
│ │ ├── odhcpd
│ │ ├── odhcpd-update
│ │ ├── partx
│ │ ├── pppd
│ │ └── xtables-legacy-multi
│ └── share
│ ├── acl.d
│ │ ├── dnsmasq_acl.json
│ │ └── ntpd.json
│ ├── dnsmasq
│ │ ├── dhcpbogushostname.conf
│ │ └── rfc6761.conf
│ ├── fw3
│ │ └── helpers.conf
│ ├── libubox
│ │ └── jshn.sh
│ └── udhcpc
│ └── default.script
├── var
│ ├── cache
│ │ └── apk
│ │ ├── apk-3.0.0~pre0-2021-11-15-1.770e4ec0.apk
│ │ ├── base-files-1461-r18083+83-7bc18aa284.e855d0a6.apk
│ │ ├── bnx2-firmware-20210511-1.25e09d2c.apk
│ │ ├── busybox-1.34.1-1.4d636b9a.apk
│ │ ├── ca-bundle-20210119-1.c44bf659.apk
│ │ ├── dnsmasq-2.86-10.b9767aed.apk
│ │ ├── dropbear-2020.81-2.5e1f45b3.apk
│ │ ├── e2fsprogs-1.45.6-2.3f4d0932.apk
│ │ ├── firewall-2021-08-14-40e5f6a2-1.5c2cf52e.apk
│ │ ├── fstools-2021-11-16-77c02889-1.00395f14.apk
│ │ ├── fwtool-2019-11-12-8f7fe925-1.0bbd6645.apk
│ │ ├── getrandom-2021-08-03-205defb5-2.215d3388.apk
│ │ ├── grub2-2.06-1.2db56816.apk
│ │ ├── grub2-bios-setup-2.06-1.9f322ff7.apk
│ │ ├── grub2-efi-2.06-1.d7e8819f.apk
│ │ ├── installed
│ │ ├── ip6tables-1.8.7-1.ea65bd2e.apk
│ │ ├── iptables-1.8.7-1.1dd91b4c.apk
│ │ ├── jshn-2021-11-20-cce5e351-1.4e036020.apk
│ │ ├── jsonfilter-2018-02-04-c7e938d6-1.0e81a630.apk
│ │ ├── kernel-5.10.80-1-787043e209de46b6ed8c6d4260441eed.c2e8092d.apk
│ │ ├── kmod-amazon-ena-5.10.80-1.dd90bb20.apk
│ │ ├── kmod-amd-xgbe-5.10.80-1.b74e7eea.apk
│ │ ├── kmod-bnx2-5.10.80-1.2b791ff6.apk
│ │ ├── kmod-button-hotplug-5.10.80-3.60ac4441.apk
│ │ ├── kmod-crypto-crc32c-5.10.80-1.601a4756.apk
│ │ ├── kmod-crypto-hash-5.10.80-1.139a0872.apk
│ │ ├── kmod-e1000-5.10.80-1.13ce885d.apk
│ │ ├── kmod-e1000e-5.10.80-1.4d4b66e4.apk
│ │ ├── kmod-forcedeth-5.10.80-1.e3d5f34f.apk
│ │ ├── kmod-fs-vfat-5.10.80-1.708b4cc1.apk
│ │ ├── kmod-hwmon-core-5.10.80-1.4b5b5b00.apk
│ │ ├── kmod-i2c-algo-bit-5.10.80-1.951ace98.apk
│ │ ├── kmod-i2c-core-5.10.80-1.7275c47d.apk
│ │ ├── kmod-igb-5.10.80-1.64206bb4.apk
│ │ ├── kmod-input-core-5.10.80-1.d5eb70bc.apk
│ │ ├── kmod-ip6tables-5.10.80-1.c51b080c.apk
│ │ ├── kmod-ipt-conntrack-5.10.80-1.06c3d294.apk
│ │ ├── kmod-ipt-core-5.10.80-1.0c468f7e.apk
│ │ ├── kmod-ipt-nat-5.10.80-1.e9a604f1.apk
│ │ ├── kmod-ipt-offload-5.10.80-1.a139797d.apk
│ │ ├── kmod-ixgbe-5.10.80-1.f2875380.apk
│ │ ├── kmod-lib-crc32c-5.10.80-1.478efbc9.apk
│ │ ├── kmod-lib-crc-ccitt-5.10.80-1.e1ca69b0.apk
│ │ ├── kmod-libphy-5.10.80-1.a7443d06.apk
│ │ ├── kmod-mdio-5.10.80-1.f85b8d52.apk
│ │ ├── kmod-mdio-devres-5.10.80-1.afd1a056.apk
│ │ ├── kmod-mii-5.10.80-1.95c09120.apk
│ │ ├── kmod-nf-conntrack-5.10.80-1.81c13c9b.apk
│ │ ├── kmod-nf-conntrack6-5.10.80-1.e12628ec.apk
│ │ ├── kmod-nf-flow-5.10.80-1.0d89c384.apk
│ │ ├── kmod-nf-ipt-5.10.80-1.4a5ef2b1.apk
│ │ ├── kmod-nf-ipt6-5.10.80-1.3e07b07f.apk
│ │ ├── kmod-nf-nat-5.10.80-1.52087e00.apk
│ │ ├── kmod-nf-reject-5.10.80-1.ddff6bbd.apk
│ │ ├── kmod-nf-reject6-5.10.80-1.ebf74200.apk
│ │ ├── kmod-nls-base-5.10.80-1.a3350213.apk
│ │ ├── kmod-nls-cp437-5.10.80-1.ce37e21e.apk
│ │ ├── kmod-nls-iso8859-1-5.10.80-1.90a73910.apk
│ │ ├── kmod-nls-utf8-5.10.80-1.6e486dba.apk
│ │ ├── kmod-phy-realtek-5.10.80-1.3cfb6b60.apk
│ │ ├── kmod-ppp-5.10.80-1.ad4a80c1.apk
│ │ ├── kmod-pppoe-5.10.80-1.98a27e46.apk
│ │ ├── kmod-pppox-5.10.80-1.6f7c1873.apk
│ │ ├── kmod-pps-5.10.80-1.6563320c.apk
│ │ ├── kmod-ptp-5.10.80-1.ac1e5822.apk
│ │ ├── kmod-r8169-5.10.80-1.95eb657f.apk
│ │ ├── kmod-slhc-5.10.80-1.a502a061.apk
│ │ ├── kmod-tg3-5.10.80-1.1b2e0dca.apk
│ │ ├── libblkid1-2.37-1.407af688.apk
│ │ ├── libblobmsg-json20211120-2021-11-20-cce5e351-1.1ae7774c.apk
│ │ ├── libc-1.2.2-3.c546d3bf.apk
│ │ ├── libcomerr0-1.45.6-2.15da8fad.apk
│ │ ├── libext2fs2-1.45.6-2.8a94e334.apk
│ │ ├── libf2fs6-1.14.0-2.624f69a1.apk
│ │ ├── libgcc1-11.2.0-3.1c06ddbd.apk
│ │ ├── libip4tc2-1.8.7-1.dfcdacdb.apk
│ │ ├── libip6tc2-1.8.7-1.59e8f75d.apk
│ │ ├── libjson-c5-0.15-2.6a05eb80.apk
│ │ ├── libjson-script20211120-2021-11-20-cce5e351-1.22b00aa3.apk
│ │ ├── liblua5.1.5-5.1.5-9.79bb0051.apk
│ │ ├── libnl-tiny1-2020-08-05-c291088f-2.4e2b887e.apk
│ │ ├── libopenssl1.1-1.1.1l-1.25afd80c.apk
│ │ ├── libpthread-1.2.2-3.a994c6e1.apk
│ │ ├── librt-1.2.2-3.aaf6d7e2.apk
│ │ ├── libsmartcols1-2.37-1.6374ddf1.apk
│ │ ├── libss2-1.45.6-2.f1123df7.apk
│ │ ├── libubox20211120-2021-11-20-cce5e351-1.87cc0a1d.apk
│ │ ├── libubus20210809-2021-08-09-a72457b6-2.ed7ce2ed.apk
│ │ ├── libuci20130104-2021-10-22-f84f49f0-6.d3c7a152.apk
│ │ ├── libuclient20201210-2021-05-14-6a6011df-1.ab58741b.apk
│ │ ├── libustream-wolfssl20201210-2020-12-10-68d09243-2.c0be70f1.apk
│ │ ├── libuuid1-2.37-1.045da604.apk
│ │ ├── libwolfssl4.8.1.62348c2b-4.8.1-stable-6.35dd1eba.apk
│ │ ├── libxtables12-1.8.7-1.0856b85e.apk
│ │ ├── logd-2021-08-03-205defb5-2.f7ea7287.apk
│ │ ├── mkf2fs-1.14.0-2.36424952.apk
│ │ ├── mtd-26.0e5bd3d6.apk
│ │ ├── netifd-2021-10-30-8f82742c-1.ccbc9d66.apk
│ │ ├── odhcp6c-2021-07-14-94adc8bb-18.9c0729ee.apk
│ │ ├── odhcpd-ipv6only-2021-08-11-01b4e604-1.435ebba1.apk
│ │ ├── openwrt-keyring-2021-02-20-49283916-2.44bcf6d8.apk
│ │ ├── partx-utils-2.37-1.e6d363e3.apk
│ │ ├── ppp-2.4.9.git-2021-01-04-3.573d9539.apk
│ │ ├── ppp-mod-pppoe-2.4.9.git-2021-01-04-3.aba15294.apk
│ │ ├── procd-2021-11-11-9d1431e1-1.57433012.apk
│ │ ├── procd-seccomp-2021-11-11-9d1431e1-1.6dab52c2.apk
│ │ ├── procd-ujail-2021-11-11-9d1431e1-1.c06c8532.apk
│ │ ├── r8169-firmware-20210511-1.96b35453.apk
│ │ ├── ubox-2021-08-03-205defb5-2.24fd23bf.apk
│ │ ├── ubus-2021-08-09-a72457b6-2.86cb0ffd.apk
│ │ ├── ubusd-2021-08-09-a72457b6-2.cc6547a4.apk
│ │ ├── uci-2021-10-22-f84f49f0-6.a56a5270.apk
│ │ ├── uclient-fetch-2021-05-14-6a6011df-1.4d86cab3.apk
│ │ ├── urandom-seed-3.a80a21d2.apk
│ │ ├── urngd-2020-01-21-c7f7b6b6-1.f566f96d.apk
│ │ ├── usign-2020-05-23-f1f65026-1.4fa8ab44.apk
│ │ └── zlib-1.2.11-3.67711264.apk
│ └── log
│ └── apk.log
└── www
83 directories, 703 files
```
</details>https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10792Wrong version in world file after installing v3 packages2021-11-21T19:20:06ZPaul SpoorenWrong version in world file after installing v3 packagesUsing `apk install` with a list of packages adds them to `/etc/apk/world` but containing a wrong version. It seems to be a base64 encode value. Is it possible that `install` uses a wrong parameter from the package which isn't the version...Using `apk install` with a list of packages adds them to `/etc/apk/world` but containing a wrong version. It seems to be a base64 encode value. Is it possible that `install` uses a wrong parameter from the package which isn't the version but something else?
<details>
```
apk><Q1dw5OwKdz6MG9jskIwLebON/DbWs=
base-files><Q16FXQpu3m2wUjbXwiKjD97ZOmOuc=
bnx2-firmware><Q1JeCdLFSLcYnTqFnJjdLAlQcvWPU=
busybox><Q1TWNrmjkKvOdq+FJQmaHMHPfI78Q=
ca-bundle><Q1xEv2WZfcaY0KbxAwpWCJ6maSlbU=
dnsmasq><Q1uXZ67UJwsXAhg2hyZ1OMZO66y0Q=
dropbear><Q1Xh9FsxxfQ/BnLv3q1kORrA6VYxo=
e2fsprogs><Q1P00JMnvz9daQ878zPNQPCxSwdf8=
firewall><Q1XCz1Lixig1dxG2IEcB1tJlj9dJk=
fstools><Q1ADlfFK1YuFjVoRj15AmwAuOphEQ=
fwtool><Q1C71mRWM0LiQnhSNxhnbVj0oyJ+Q=
getrandom><Q1IV0ziB/eyxkF/sZc9AoDPQ1G9Uw=
grub2><Q1LbVoFlkmmwL/ZGAj4mKDI+mQhCk=
grub2-bios-setup><Q1nzIv99yIC6R16XAQUVXh5kFnDp8=
grub2-efi><Q11+iBnwpW2GE4Pp7cnJCpLi9GvLc=
ip6tables><Q16mW9LoO6/kMZup+FbsAX6nbmo/8=
iptables><Q1HdkbTLh9xcOfdWeHdnvumnmK/ew=
jshn><Q1TgNgIN3duw9cUf1emXF/ykBebpY=
jsonfilter><Q1DoGmMJxBurtUzK/C8tqQ6bwypJs=
kernel><Q1wugJLQbpp7/vgmswTO3jb02h9gg=
kmod-amazon-ena><Q13ZC7IFym2fbedxQ7U/0NJHfSyJE=
kmod-amd-xgbe><Q1t05+6lpEqCx4jr53vpPW8tyc+E8=
kmod-bnx2><Q1K3kf9nD3cgRs+Dk0ZjzIDHjjtmM=
kmod-button-hotplug><Q1YKxEQRov3xDa8Z2u3r8t2+0Exvc=
kmod-crypto-crc32c><Q1YBpHVkTHB8kH9elSDJgmWxzX4Q4=
kmod-crypto-hash><Q1E5oIcmyyJGQQmAcDrsdvnDtoESQ=
kmod-e1000><Q1E86IXaSnMxfs9CMO2ELJn7VjBjw=
kmod-e1000e><Q1TUtm5M3NGn0ueaLQ1hVQf7+OjFM=
kmod-forcedeth><Q149XzT6wI5ED7gD+4eXSfSwqj/tE=
kmod-fs-vfat><Q1cItMwdca4HR7JEfFlvZd/TMjpaY=
kmod-hwmon-core><Q1S1tbABE22UNUUdDMqrvC+dt5zWg=
kmod-i2c-algo-bit><Q1lRrOmFCifSjOy4Q/dBT21ECoRsA=
kmod-i2c-core><Q1cnXEfVAvMK1L4NBfCpHeJzHFzvI=
kmod-igb><Q1ZCBrtLafksXag/TL299rpCQlrao=
kmod-input-core><Q11etwvDvluEHn6H7+sTAfgz9m10Q=
kmod-ip6tables><Q1xRsIDOVjf5YKbucjpli8mu37lmQ=
kmod-ipt-conntrack><Q1BsPSlOkDIPnXIpvj/IygbWcFlPM=
kmod-ipt-core><Q1DEaPfkbs63fmrWc4kkReLawgKCM=
kmod-ipt-nat><Q16aYE8RMKFyMAaS0DQa4oh3d8Unc=
kmod-ipt-offload><Q1oTl5fd+enGq+pdn1qhPPEuehqpo=
kmod-ixgbe><Q18odTgEX/3/zYO67q6m6JKdEYIBY=
kmod-lib-crc-ccitt><Q14cppsH9KWI5FBaYLGlyNyeChNi0=
kmod-lib-crc32c><Q1R477ySPCgt7lvdQgDX51f/be8dY=
kmod-libphy><Q1p0Q9BiwfAo9JqUnXnmhdvcd42Mo=
kmod-mdio><Q1+FuNUtG+zOFVm4Fp9lgD6aPSUJ4=
kmod-mdio-devres><Q1r9GgVpjZLMCz1T3kYdMDMq0R6jI=
kmod-mii><Q1lcCRIKtCOTIzOtOVBEgIGlTcX5Y=
kmod-nf-conntrack><Q1gcE8m4EzWuLRNxOcJ/f06ElJXuk=
kmod-nf-conntrack6><Q14SYo7Px5/0ONw8q8ZVFPJ8XyZT4=
kmod-nf-flow><Q1DYnDhKx2UIQf2ukpCsWgLUSWs4c=
kmod-nf-ipt><Q1Sl7ysSV4qfusrbBU6/pFszoR7hg=
kmod-nf-ipt6><Q1Pgewf2oAtQ5xEaQKvk7soWk5eas=
kmod-nf-nat><Q1Ugh+ALP9cP2mH3oc8oHwKUXP69w=
kmod-nf-reject><Q13f9rvf+pDe9xyUmjP2rZcO57kZM=
kmod-nf-reject6><Q16/dCAN8pIGPKfUepbSDtu0xUQNs=
kmod-nls-base><Q1ozUCE9xbAiZT3k5Mcwj4L4EnEDE=
kmod-nls-cp437><Q1zjfiHtmTmHwiJ73dBvq8GdXkQN4=
kmod-nls-iso8859-1><Q1kKc5EDuB2oH6Uo+q7Cj65g+DdIM=
kmod-nls-utf8><Q1bkhtugC0QXF4JdtLV3aUKQUC7MA=
kmod-phy-realtek><Q1PPtrYIOqiUOj++jCwypyZpiWCyA=
kmod-ppp><Q1rUqAwQwcizH4rjJyh64Wqr8mv4o=
kmod-pppoe><Q1mKJ+Rv2OvyXJF+cy+kKtmBcjwUA=
kmod-pppox><Q1b3wYc7qQcxPU+6Y/pUg1Q1BHnBU=
kmod-pps><Q1ZWMyDFdDGSXNZesGACG1Hj2Ml/E=
kmod-ptp><Q1rB5YIlYNKwfX31iG77PY13BltZw=
kmod-r8169><Q1letlf5FT//xNVAoI/EbFbmYLH/o=
kmod-slhc><Q1pQKgYfZSVgYjQDus91Z/oz9bD/g=
kmod-tg3><Q1Gy4NylMfM4bdpTj09EhOLc9OfHI=
libblkid1><Q1QHr2iHIyyYQVoERLaNV7091BAts=
libblobmsg-json20211120><Q1Gud3TAqPkypRHLr5RoLSKOxiKFM=
libc><Q1xUbTv0jiJqDs7KswKQWHuAVJbdM=
libcomerr0><Q1FdqPrSb52hRTAva2qmv9yG8EYHc=
libext2fs2><Q1ipTjNKGTRExrg6wdwI74zpshzBo=
libf2fs6><Q1Yk9poc4iWBSaFVGTblqK9Yy9774=
libgcc1><Q1HAbdvcILXaIntESdYyGgqqjgMEk=
libip4tc2><Q1382s2x5WepRnH3zEYJeRwghA/Mw=
libip6tc2><Q1Wej3XQaYmOlwP6WS4o1A7IxIkSs=
libjson-c5><Q1agXrgDamanV8TRME1xNe1YFZTec=
libjson-script20211120><Q1IrAKowTWZE7v7siIgTFUbmaYiA4=
liblua5.1.5><Q1ebsAUeT7e6v3r8hsqRyw7QnT2X0=
libnl-tiny1><Q1TiuIfgcAWbyqnJKWqxkHvFj8fBI=
libopenssl1.1><Q1Ja/YDAkbJ/RIgfII5JWmHg/luU4=
libpthread><Q1qZTG4awPyFvgqn71g3XfueelHtc=
librt><Q1qvbX4nfKZS9RL2HN3VROqWIU8ac=
libsmartcols1><Q1Y3Td8YX01ec6V3NwUrO86z4LCaA=
libss2><Q18RI991bVW59JWgthoqDGzvbYAFY=
libubox20211120><Q1h8wKHfqypvfZpLojUYtWQumQJc0=
libubus20210809><Q17Xzi7Vm6UQxs6861Uq62AVJEdfw=
libuci20130104><Q108ehUstLfdtX+pidbs5S+0d1tC4=
libuclient20201210><Q1q1h0GznEoZeWxScLVXm5wO9+91M=
libustream-wolfssl20201210><Q1wL5w8cOu/N9UwOgER60fb7QuAbg=
libuuid1><Q1BF2mBK4K2FqRjE0p+ArlkJ5HrKI=
libwolfssl4.8.1.62348c2b><Q1Nd0eule/RztSC3UwBhGnoA3J2YA=
libxtables12><Q1CFa4XvP2C+DI+9S+ERkY+OZILws=
logd><Q19+pyh571eZTX0YoQTlWV1RUFlqc=
mkf2fs><Q1NkJJUpbYVcWHKZIeA78t1ntzF4Y=
mtd><Q1DlvT1qt8texsua8xTInfI6eKfVE=
netifd><Q1zLydZvZbUDFBHHwSwBUtwr/4wW4=
odhcp6c><Q1nAcp7qW1NJndcKSB8pPKltPcScw=
odhcpd-ipv6only><Q1Q167oWAN5sjX+STnzHkBXsG343Q=
openwrt-keyring><Q1RLz22LAPdH2MChnsE6t/tqbBLJY=
partx-utils><Q15tNj45yNWJzaNvV+UiBxR/WVZO8=
ppp><Q1Vz2VOQP/1tvpwgooWcKyqKXucp4=
ppp-mod-pppoe><Q1q6FSlBkNxGI7U2KUyyW8JatyuKY=
procd><Q1V0MwErKw8bEk85Se/oCEssWwzdY=
procd-seccomp><Q1batSwovKxvZBPE7hKQ7i5EEGIkU=
procd-ujail><Q1wGyFMuCoKn/ikFzyMtQWiOShM18=
r8169-firmware><Q1lrNUU6cskdoigSbLbNgarhSFAng=
ubox><Q1JP0jv3FieModzXzkoyMbwFupoGg=
ubus><Q1hssP/dwoKKM7rwscqYGtgXYeKaU=
ubusd><Q1zGVHpMobb1cNyfdK9OQr/SDllIo=
uci><Q1pWpScMOKCOJSwyXcb5gJB4tUBGA=
uclient-fetch><Q1TYbKsyt7Z8Kvw9NGlERPwXnwOUw=
urandom-seed><Q1qAoh0qaG9AMpVJ1Thii0/wsYqeo=
urngd><Q19Wb5bRnRa2waslq3XvXkPSlhp04=
usign><Q1T6irRPNPWfNOoUnhjE3vtzKP0Do=
zlib><Q1Z3ESZO51UfCyQ+e5y/Ge8X6ZFwM=
```
</details>https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10793apk search -e vim returns gvim2023-03-06T19:42:21ZBen Pageapk search -e vim returns gvim`apk search -e` seems to be broken in some cases. For `vim` rather than returning the exact match, the first partial match is returned.
```
> apk search -e vim
gvim-8.2.3650-r0
```
For reference:
```
> apk search -a -e vim
gvim-8.2.365...`apk search -e` seems to be broken in some cases. For `vim` rather than returning the exact match, the first partial match is returned.
```
> apk search -e vim
gvim-8.2.3650-r0
```
For reference:
```
> apk search -a -e vim
gvim-8.2.3650-r0
vim-8.2.3650-r0
```
```
> apk search -a vim
neovim-doc-0.5.1-r1
gvim-8.2.3650-r0
vim-8.2.3650-r0
vim-tutor-8.2.3650-r0
faenza-icon-theme-vim-1.3.1-r6
notmuch-vim-0.34-r0
kmymoney-5.1.2-r1
faenza-icon-theme-gvim-1.3.1-r6
meson-vim-0.59.3-r1
runvimtests-1.30-r1
graphviz-2.49.3-r0
neovim-0.5.1-r1
nftables-vim-0_git20200629-r1
vim-doc-8.2.3650-r0
vim-editorconfig-0.8.0-r0
apparmor-vim-3.0.3-r0
geany-plugins-vimode-1.38-r0
vimdiff-8.2.3650-r0
vimb-3.6.0-r0
neovim-lang-0.5.1-r1
u-boot-tools-2021.10-r5
fzf-neovim-0.28.0-r0
py3-pynvim-0.4.3-r2
nginx-vim-1.20.2-r0
msmtp-vim-1.8.19-r0
protobuf-vim-3.18.1-r1
vimb-doc-3.6.0-r0
icinga2-vim-2.13.1-r2
fzf-vim-0.28.0-r0
vim-sleuth-1.2-r0
gst-plugins-base-1.18.5-r0
mercurial-vim-5.9.3-r0apk
```
Funny enough this exact example is mentioned in the docs.
[https://docs.alpinelinux.org/user-handbook/0.1a/Working/apk.html](https://docs.alpinelinux.org/user-handbook/0.1a/Working/apk.html)v3.0https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10794Build and run APK on MacOS2022-04-03T21:53:06ZPaul SpoorenBuild and run APK on MacOSHi, I'm currently trying to build APK on a MacBook and see some issues with `malloc.h` and `strdumpa` as well as `endian.h`. Did anyone successfully build it on a Mac? If there is any *hope* I'd give more details on the issue.Hi, I'm currently trying to build APK on a MacBook and see some issues with `malloc.h` and `strdumpa` as well as `endian.h`. Did anyone successfully build it on a Mac? If there is any *hope* I'd give more details on the issue.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10795Clarification on `passwd` field in adb file2022-12-21T19:37:21ZPaul SpoorenClarification on `passwd` field in adb fileLooking at [apk_adb.c](https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/master/src/apk_adb.c#L508) I see a commented `passwd` entry. Is this supposed to allow the creation of `passwd` entries on a package basis?
I'm currently look...Looking at [apk_adb.c](https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/master/src/apk_adb.c#L508) I see a commented `passwd` entry. Is this supposed to allow the creation of `passwd` entries on a package basis?
I'm currently looking for a solution to add users/groups during package installation. Currently this is solved by a custom post-install wrapper script, however a *in-APK* solution would be nicer.v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10796APK doesn't run scripts in v3 modes2021-12-03T12:53:47ZPaul SpoorenAPK doesn't run scripts in v3 modesUsing v3 packages with `mkpkg` I'm adding a `post-install` and a `pre-deinstall` script.
Neither seem to run on package installation or removal.
I'm checking the created package via `adbdump` and see the following output:
```yaml
scri...Using v3 packages with `mkpkg` I'm adding a `post-install` and a `pre-deinstall` script.
Neither seem to run on package installation or removal.
I'm checking the created package via `adbdump` and see the following output:
```yaml
scripts:
post-install: |
#!/bin/sh
. ${IPKG_INSTROOT}/lib/functions.sh
default_postinst ubus
pre-deinstall: |
#!/bin/sh
. ${IPKG_INSTROOT}/lib/functions.sh
default_prerm ubus
```
While the environment flushing is a different issue, I don't see the script to run at all. Using `strace` no `execve` is executed, am I missing something here?https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10852dependency conflict coreutils 9.0 and ucspi-tcp6 1.0.52022-08-05T12:49:24ZTherminoel.kuntze@thermi.consultingdependency conflict coreutils 9.0 and ucspi-tcp6 1.0.5```
apk add coreutils -l
ERROR: unable to select packages:
coreutils-9.0-r2:
conflicts: ucspi-tcp6-1.05-r0[cmd:date=9.0-r2] ucspi-tcp6-1.05-r0[cmd:who=9.0-r2]
satisfies: world[coreutils]
ucspi-tcp6-1.05-r0:
conflicts: cor...```
apk add coreutils -l
ERROR: unable to select packages:
coreutils-9.0-r2:
conflicts: ucspi-tcp6-1.05-r0[cmd:date=9.0-r2] ucspi-tcp6-1.05-r0[cmd:who=9.0-r2]
satisfies: world[coreutils]
ucspi-tcp6-1.05-r0:
conflicts: coreutils-9.0-r2[cmd:date] coreutils-9.0-r2[cmd:who]
satisfies: world[ucspi-tcp6]
```
Root cause is this:
```
/ # apk --no-network info -e -a coreutils | grep who
cmd:who
cmd:whoami
usr/bin/who
usr/bin/whoami
/ # apk --no-network info -a coreutils | grep who
cmd:who
cmd:whoami
usr/bin/who
usr/bin/whoami
cmd:who=9.0-r2
cmd:whoami=9.0-r2
/ # apk --no-network info -a ucspi-tcp6 | grep who
cmd:who
usr/bin/who@
cmd:who=1.05-r0
```
The `provides` part of the package for ucspi-tcp6 contains the one for `who`, although it packages `who@`.
The problem occurs because coreutils 9.0 package "who" in a specific version now.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10797Clarification on post-install scripts and chroot2021-12-09T11:37:15ZPaul SpoorenClarification on post-install scripts and chrootWhen running APK with a root != / it automatically runs a chroot on that folder for post-install scripts. While this seems very tempting it only seem to work if the chrooted environment is the same architecture as the host. For OpenWrt (...When running APK with a root != / it automatically runs a chroot on that folder for post-install scripts. While this seems very tempting it only seem to work if the chrooted environment is the same architecture as the host. For OpenWrt (and Alpine, too) it often enough is a different architecture. This forces a user to use `--no-scripts` for building the rootfs or removing the `chroot` step from APK via a downstream patch.
What is the suggested handling here?https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10798Support for package *alternatives*2024-03-11T18:03:48ZPaul SpoorenSupport for package *alternatives*Some packages offer *alternatives* meaning they offer the same binary binary path. An example would be that both `dropbear` and `openssh` offer `scp` to transfer files. Another is that `busybox` offers many packages from `coreutils`.
To...Some packages offer *alternatives* meaning they offer the same binary binary path. An example would be that both `dropbear` and `openssh` offer `scp` to transfer files. Another is that `busybox` offers many packages from `coreutils`.
To handle this some package managers offer handling of `alternatives`, which can be implemented in an array of triplets per package. Each triplet contain *priority*, *symlink path* and *package path*. Whenever a package is installed the *symlink paths* are compared and the *package path* with the highest *priority* is selected. A symlink is created which points the *symlink path* to the *package path*.
For example, the `dropbear` package may contain the triplet `100:/usr/bin/scp:usr/sbin/dropbear`, the `openssh` package may contain the triplet `200:/usr/bin/scp:/usr/libexec/scp-openss`. If both packages are installed, the one with highest priority (`openssh`) is symlinked.
This would be run whenever a package is installed or removed. The package manager OPKG implement the behaviour in a few [lines of code](https://git.openwrt.org/?p=project/opkg-lede.git;a=blob;f=libopkg/pkg_alternatives.c;h=24efedfd36576588467407b13bced862a73ad992;hb=refs/heads/master), maybe we can create something similar?v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10799APK moves installed packages to cache even with --no-cache2022-02-04T14:57:11ZPaul SpoorenAPK moves installed packages to cache even with --no-cacheAPK moves installed packages to /var/cache/apk/ even when using `--no-cache`. I'd expect it to disable any caching behavior with this flag. If I misunderstand the option please elaborate.APK moves installed packages to /var/cache/apk/ even when using `--no-cache`. I'd expect it to disable any caching behavior with this flag. If I misunderstand the option please elaborate.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10800segfault if remote repository cannot be fetched2021-12-27T08:21:41ZDaniel Gollesegfault if remote repository cannot be fetchedapk segfaults if fetching a remote repository has failed (e.g. due to HTTP 404 error).
```
Program received signal SIGSEGV, Segmentation fault.
apk_istream_error (is=is@entry=0xfffffffe, err=err@entry=-2) at ../src/apk_io.h:95
(gdb) bt
...apk segfaults if fetching a remote repository has failed (e.g. due to HTTP 404 error).
```
Program received signal SIGSEGV, Segmentation fault.
apk_istream_error (is=is@entry=0xfffffffe, err=err@entry=-2) at ../src/apk_io.h:95
(gdb) bt
#0 apk_istream_error (is=is@entry=0xfffffffe, err=err@entry=-2)
at ../src/apk_io.h:95
#1 0xb6f5abcc in apk_istream_close_error (r=-2, is=0xfffffffe)
at ../src/apk_io.h:125
#2 apk_istream_tee (from=0xfffffffe, to=0xb6fef620, flags=0,
cb=<optimized out>, cb_ctx=0x0) at ../src/io.c:468
#3 0xb6f53ae8 in apk_cache_download (db=db@entry=0x31740 <db>,
repo=repo@entry=0x31824 <db+228>, pkg=0x0, autoupdate=-1090528832,
autoupdate@entry=1, cb=0x0, cb_ctx=0x0) at ../src/database.c:669
#4 0xb6f54b6c in apk_repository_update (repo=0x31824 <db+228>,
db=0x31740 <db>) at ../src/database.c:2133
#5 apk_db_add_repository (_db=..., _repository=...) at ../src/database.c:2258
#6 0xb6f4cd0c in apk_blob_for_each_segment (blob=..., split=0xbefffbb8 "",
cb=0xb6f54838 <apk_db_add_repository>, ctx=ctx@entry=0x31740 <db>)
at ../src/blob.c:305
#7 0xb6f50780 in add_repos_from_file (ctx=ctx@entry=0x31740 <db>, dirfd=3,
file=0xb6f6b1c3 <error reading variable>) at ../src/database.c:1400
#8 0xb6f561bc in apk_db_open (db=db@entry=0x31740 <db>,
ac=ac@entry=0x31db0 <ctx>) at ../src/database.c:1668
#9 0x00014414 in main (argc=0, argv=0xbefffe6c) at ../src/apk.c:474
```https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10801Annoy the user when pinning packages from incompatible repositories2022-12-21T19:37:22ZAlex Xu (Hello71)Annoy the user when pinning packages from incompatible repositoriesMany users are following poorly-written tutorials and installing packages from incompatible repositories. For some non-Alpine distros, this may be allowed, but for Alpine it is not permitted to mix packages from different releases. There...Many users are following poorly-written tutorials and installing packages from incompatible repositories. For some non-Alpine distros, this may be allowed, but for Alpine it is not permitted to mix packages from different releases. There should be some mechanism for apk to tell the user that this is not supported. Two simple heuristics for Alpine would be checking the repository URL and the repository version, and if these don't match then raise an error. However, this may not work for third-party repositories or non-Alpine distros.v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10802flatpak browsers, alsa issues2021-12-20T18:52:02ZGhost Userflatpak browsers, alsa issuesI installed qutebrowser, and later firefox, through flatpak, on to my device. I only have alsa installed, but it wasn't an issue for the versions of qutebrowser and firefox packaged by alpine, so I assumed everything would be fine. When ...I installed qutebrowser, and later firefox, through flatpak, on to my device. I only have alsa installed, but it wasn't an issue for the versions of qutebrowser and firefox packaged by alpine, so I assumed everything would be fine. When playing a youtube video, neither browser outputs any sound. I tried testing other applications like ffmpeg/ffplay (apk), and Waveform (flatpak), and had no audio issues. Is there something I missing, aside from installing pulseaudio or pipewire.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10803Segfault for v3 packages using `mkndx`2021-12-29T17:37:26ZPaul SpoorenSegfault for v3 packages using `mkndx`Running `mkndx` on a bunch of packages crashes `apk` with a seg fault, below the output of `strace`:
<details>
```
execve("/home/user/src/openwrt/staging_dir/hostpkg/bin/apk", ["/home/user/src/openwrt/staging_d"..., "mkndx", "--root"...Running `mkndx` on a bunch of packages crashes `apk` with a seg fault, below the output of `strace`:
<details>
```
execve("/home/user/src/openwrt/staging_dir/hostpkg/bin/apk", ["/home/user/src/openwrt/staging_d"..., "mkndx", "--root", "/home/user/src/openwrt", "--keys-dir", "/home/user/src/openwrt", "--sign", "/home/user/src/openwrt/private-k"..., "--output", "APKINDEX.tar.gz", "apk-3.0.0~pre0-2021-12-20-1.apk", "bnx2-firmware-20210511-1.apk", "bnx2-firmware-20211216-1.apk", "busybox-1.34.1-1.apk", "ca-bundle-20211016-1.apk", "dnsmasq-2.86-11.apk", "e2fsprogs-1.45.6-2.apk", "firewall-2021-08-14-40e5f6a2-1.a"..., "getrandom-2021-08-03-205defb5-2."..., "hostapd-common-2021-05-22-b102f1"..., "hostapd-common-2021-05-22-b102f1"..., "iw-5.16-1.apk", "iwinfo-2021-07-11-a0a0e02d-1.apk", "jshn-2021-11-20-cce5e351-1.apk", "jsonfilter-2018-02-04-c7e938d6-1"..., "libblkid1-2.37-1.apk", "libblobmsg-json20211120-2021-11-"..., "libcomerr0-1.45.6-2.apk", "libext2fs2-1.45.6-2.apk", "libf2fs6-1.14.0-2.apk", "libiwinfo20210430-2021-07-11-a0a"..., "libiwinfo-data-2021-07-11-a0a0e0"..., ...], 0xffffcddf0b30 /* 32 vars */) = 0
brk(NULL) = 0xaaaab4b3f000
faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/staging_dir/hostpkg/lib/tls/aarch64/libapk.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/user/src/openwrt/staging_dir/hostpkg/lib/tls/aarch64", 0xfffffdb05bc0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/staging_dir/hostpkg/lib/tls/libapk.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/user/src/openwrt/staging_dir/hostpkg/lib/tls", 0xfffffdb05bc0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/staging_dir/hostpkg/lib/aarch64/libapk.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/user/src/openwrt/staging_dir/hostpkg/lib/aarch64", 0xfffffdb05bc0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/user/src/openwrt/staging_dir/hostpkg/lib/libapk.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\360\335\0\0\0\0\0\0"..., 832) = 832
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffffbd1c4000
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=1129744, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 339528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffffbd142000
mprotect(0xffffbd182000, 65536, PROT_NONE) = 0
mmap(0xffffbd192000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x40000) = 0xffffbd192000
close(3) = 0
openat(AT_FDCWD, "/home/user/src/openwrt/staging_dir/hostpkg/lib/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=27433, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 27433, PROT_READ, MAP_PRIVATE, 3, 0) = 0xffffbd1bd000
close(3) = 0
openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0@ \0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=104608, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 168112, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffffbd118000
mprotect(0xffffbd130000, 65536, PROT_NONE) = 0
mmap(0xffffbd140000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0xffffbd140000
close(3) = 0
openat(AT_FDCWD, "/home/user/src/openwrt/staging_dir/hostpkg/lib/libcrypto.so.1.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libcrypto.so.1.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\200\7\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=2604744, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 2686040, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffffbce88000
mprotect(0xffffbd0da000, 61440, PROT_NONE) = 0
mmap(0xffffbd0e9000, 176128, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x251000) = 0xffffbd0e9000
mmap(0xffffbd114000, 15448, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xffffbd114000
close(3) = 0
openat(AT_FDCWD, "/home/user/src/openwrt/staging_dir/hostpkg/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0@\262\2\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=1640744, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 1743632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffffbccde000
mprotect(0xffffbce67000, 61440, PROT_NONE) = 0
mmap(0xffffbce76000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x188000) = 0xffffbce76000
mmap(0xffffbce7c000, 47888, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xffffbce7c000
close(3) = 0
openat(AT_FDCWD, "/home/user/src/openwrt/staging_dir/hostpkg/lib/libssl.so.1.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libssl.so.1.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\240\324\1\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=585392, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 649264, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xffffbcc3f000
mprotect(0xffffbccc1000, 65536, PROT_NONE) = 0
mmap(0xffffbccd1000, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x82000) = 0xffffbccd1000
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffffbd1bb000
set_tid_address(0xffffbd1bba80) = 574878
set_robust_list(0xffffbd1bba90, 24) = 0
mprotect(0xffffbce76000, 12288, PROT_READ) = 0
mprotect(0xffffbd0e9000, 167936, PROT_READ) = 0
mprotect(0xffffbccd1000, 36864, PROT_READ) = 0
mprotect(0xffffbd140000, 4096, PROT_READ) = 0
mprotect(0xffffbd192000, 4096, PROT_READ) = 0
mprotect(0xaaaab29b7000, 4096, PROT_READ) = 0
mprotect(0xffffbd1c9000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0xffffbd1bd000, 27433) = 0
rt_sigprocmask(SIG_SETMASK, ~[ILL TRAP BUS FPE SEGV RTMIN RT_1], [], 8) = 0
rt_sigaction(SIGILL, {sa_handler=0xffffbcf00d30, sa_mask=~[ILL TRAP BUS FPE SEGV RTMIN RT_1], sa_flags=0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, ~[ILL TRAP BUS FPE KILL SEGV STOP RTMIN RT_1], 8) = 0
rt_sigaction(SIGILL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
getrandom("\x49\x60\x1a\xde\x28\xf7\x0d\x43", 8, GRND_NONBLOCK) = 8
brk(NULL) = 0xaaaab4b3f000
brk(0xaaaab4b60000) = 0xaaaab4b60000
umask(000) = 002
rt_sigaction(SIGWINCH, {sa_handler=0xaaaab2996e84, sa_mask=[WINCH], sa_flags=SA_RESTART}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTART}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
ioctl(1, TCGETS, 0xfffffdb06940) = -1 ENOTTY (Inappropriate ioctl for device)
openat(AT_FDCWD, "/home/user/src/openwrt/private-key.pem", O_RDONLY|O_CLOEXEC) = 3
fcntl(3, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
futex(0xffffbd1166b0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0xffffbd1166b4, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0xffffbd1166b8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0xffffbd11641c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
newfstatat(3, "", {st_mode=S_IFREG|0664, st_size=226, ...}, AT_EMPTY_PATH) = 0
read(3, "-----BEGIN EC PRIVATE KEY-----\nM"..., 4096) = 226
read(3, "", 4096) = 0
futex(0xffffbd114364, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0xffffbd1139b0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0xffffbd1166bc, FUTEX_WAKE_PRIVATE, 2147483647) = 0
lseek(3, 0, SEEK_SET) = 0
read(3, "-----BEGIN EC PRIVATE KEY-----\nM"..., 4096) = 226
read(3, "", 4096) = 0
close(3) = 0
mmap(NULL, 163840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffffbcc17000
brk(0xaaaab4b8e000) = 0xaaaab4b8e000
mmap(NULL, 163840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffffbcbef000
mmap(NULL, 1601536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffffbca68000
rt_sigaction(SIGINT, {sa_handler=0xaaaab2996e60, sa_mask=[INT], sa_flags=SA_RESTART}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
openat(AT_FDCWD, "/home/user/src/openwrt", O_RDONLY|O_CLOEXEC) = 3
openat(3, "/home/user/src/openwrt", O_RDONLY|O_CLOEXEC) = 4
newfstatat(4, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
fcntl(4, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
lseek(4, 0, SEEK_SET) = 0
getdents64(4, 0xaaaab4b80f50 /* 35 entries */, 32768) = 1136
openat(4, ".ccache", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, ".config.old", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=169053, ...}, AT_EMPTY_PATH) = 0
read(5, "#\n# Automatically generated file"..., 4096) = 4096
read(5, "T_ath79_generic_DEVICE_comfast_c"..., 4096) = 4096
read(5, "ric_DEVICE_hak5_packet-squirrel "..., 4096) = 4096
read(5, "16m is not set\n# CONFIG_TARGET_a"..., 4096) = 4096
read(5, "c_DEVICE_tplink_cpe710-v1 is not"..., 4096) = 4096
read(5, "t\n# CONFIG_TARGET_ath79_generic_"..., 4096) = 4096
read(5, " not set\n# CONFIG_TARGET_DEVICE_"..., 4096) = 4096
read(5, "ica_eg200 is not set\n# CONFIG_TA"..., 4096) = 4096
read(5, "esh_om2p-hs-v4 is not set\n# CONF"..., 4096) = 4096
read(5, "nk_cpe210-v1 is not set\n# CONFIG"..., 4096) = 4096
read(5, "VICE_tplink_wbs510-v1 is not set"..., 4096) = 4096
read(5, "GES=\"mips_24kc\"\nCONFIG_DEFAULT_T"..., 4096) = 4096
read(5, "ERF_EVENTS is not set\n# CONFIG_K"..., 4096) = 4096
read(5, "et\n# CONFIG_KERNEL_SECURITY_NETW"..., 4096) = 4096
read(5, "NCLUDE_SUSv2=y\nCONFIG_BUSYBOX_DE"..., 4096) = 4096
read(5, "MINAL is not set\n# CONFIG_BUSYBO"..., 4096) = 4096
read(5, "ot set\nCONFIG_BUSYBOX_DEFAULT_CH"..., 4096) = 4096
read(5, "not set\nCONFIG_BUSYBOX_DEFAULT_T"..., 4096) = 4096
read(5, "_BUSYBOX_DEFAULT_FEATURE_VI_SETO"..., 4096) = 4096
read(5, "X_DEFAULT_CRYPTPW is not set\n# C"..., 4096) = 4096
read(5, "t set\nCONFIG_BUSYBOX_DEFAULT_HEX"..., 4096) = 4096
read(5, "OLUMEID_EXFAT is not set\n# CONFI"..., 4096) = 4096
read(5, "KETS is not set\n# CONFIG_BUSYBOX"..., 4096) = 4096
read(5, "G_STATUS=y\n# CONFIG_BUSYBOX_DEFA"..., 4096) = 4096
read(5, "is not set\n# CONFIG_BUSYBOX_DEFA"..., 4096) = 4096
read(5, "ATURE_TOP_SMP_CPU is not set\n# C"..., 4096) = 4096
read(5, "USYBOX_DEFAULT_HUSH_TYPE is not "..., 4096) = 4096
read(5, "bncurses-dev is not set\n# CONFIG"..., 4096) = 4096
read(5, " CONFIG_PACKAGE_cypress-firmware"..., 4096) = 4096
read(5, "d-bfq is not set\n# CONFIG_PACKAG"..., 4096) = 4096
read(5, "od-hwmon-ina2xx is not set\n# CON"..., 4096) = 4096
read(5, "ACKAGE_kmod-ledtrig-audio is not"..., 4096) = 4096
read(5, "E_kmod-nft-fib is not set\n# CONF"..., 4096) = 4096
read(5, "# CONFIG_PACKAGE_kmod-netem is n"..., 4096) = 4096
read(5, "\n#\n# CONFIG_PACKAGE_kmod-sound-c"..., 4096) = 4096
read(5, "KAGE_kmod-usb3 is not set\n# CONF"..., 4096) = 4096
read(5, "su is not set\n# CONFIG_PACKAGE_k"..., 4096) = 4096
read(5, "bbfd is not set\nCONFIG_PACKAGE_l"..., 4096) = 4096
read(5, "_PACKAGE_nftables-json is not se"..., 4096) = 4096
read(5, "AGE_thc-ipv6-sendpeesmp6 is not "..., 4096) = 4096
read(5, "CONFIG_PACKAGE_uboot-envtools=m\n"..., 4096) = 4096
read(5, "xec-tools is not set\nCONFIG_PACK"..., 4096) = 1117
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "#\n# Automatically generated file"..., 4096) = 4096
read(5, "T_ath79_generic_DEVICE_comfast_c"..., 4096) = 4096
read(5, "ric_DEVICE_hak5_packet-squirrel "..., 4096) = 4096
read(5, "16m is not set\n# CONFIG_TARGET_a"..., 4096) = 4096
read(5, "c_DEVICE_tplink_cpe710-v1 is not"..., 4096) = 4096
read(5, "t\n# CONFIG_TARGET_ath79_generic_"..., 4096) = 4096
read(5, " not set\n# CONFIG_TARGET_DEVICE_"..., 4096) = 4096
read(5, "ica_eg200 is not set\n# CONFIG_TA"..., 4096) = 4096
read(5, "esh_om2p-hs-v4 is not set\n# CONF"..., 4096) = 4096
read(5, "nk_cpe210-v1 is not set\n# CONFIG"..., 4096) = 4096
read(5, "VICE_tplink_wbs510-v1 is not set"..., 4096) = 4096
read(5, "GES=\"mips_24kc\"\nCONFIG_DEFAULT_T"..., 4096) = 4096
read(5, "ERF_EVENTS is not set\n# CONFIG_K"..., 4096) = 4096
read(5, "et\n# CONFIG_KERNEL_SECURITY_NETW"..., 4096) = 4096
read(5, "NCLUDE_SUSv2=y\nCONFIG_BUSYBOX_DE"..., 4096) = 4096
read(5, "MINAL is not set\n# CONFIG_BUSYBO"..., 4096) = 4096
read(5, "ot set\nCONFIG_BUSYBOX_DEFAULT_CH"..., 4096) = 4096
read(5, "not set\nCONFIG_BUSYBOX_DEFAULT_T"..., 4096) = 4096
read(5, "_BUSYBOX_DEFAULT_FEATURE_VI_SETO"..., 4096) = 4096
read(5, "X_DEFAULT_CRYPTPW is not set\n# C"..., 4096) = 4096
read(5, "t set\nCONFIG_BUSYBOX_DEFAULT_HEX"..., 4096) = 4096
read(5, "OLUMEID_EXFAT is not set\n# CONFI"..., 4096) = 4096
read(5, "KETS is not set\n# CONFIG_BUSYBOX"..., 4096) = 4096
read(5, "G_STATUS=y\n# CONFIG_BUSYBOX_DEFA"..., 4096) = 4096
read(5, "is not set\n# CONFIG_BUSYBOX_DEFA"..., 4096) = 4096
read(5, "ATURE_TOP_SMP_CPU is not set\n# C"..., 4096) = 4096
read(5, "USYBOX_DEFAULT_HUSH_TYPE is not "..., 4096) = 4096
read(5, "bncurses-dev is not set\n# CONFIG"..., 4096) = 4096
read(5, " CONFIG_PACKAGE_cypress-firmware"..., 4096) = 4096
read(5, "d-bfq is not set\n# CONFIG_PACKAG"..., 4096) = 4096
read(5, "od-hwmon-ina2xx is not set\n# CON"..., 4096) = 4096
read(5, "ACKAGE_kmod-ledtrig-audio is not"..., 4096) = 4096
read(5, "E_kmod-nft-fib is not set\n# CONF"..., 4096) = 4096
read(5, "# CONFIG_PACKAGE_kmod-netem is n"..., 4096) = 4096
read(5, "\n#\n# CONFIG_PACKAGE_kmod-sound-c"..., 4096) = 4096
read(5, "KAGE_kmod-usb3 is not set\n# CONF"..., 4096) = 4096
read(5, "su is not set\n# CONFIG_PACKAGE_k"..., 4096) = 4096
read(5, "bbfd is not set\nCONFIG_PACKAGE_l"..., 4096) = 4096
read(5, "_PACKAGE_nftables-json is not se"..., 4096) = 4096
read(5, "AGE_thc-ipv6-sendpeesmp6 is not "..., 4096) = 4096
read(5, "CONFIG_PACKAGE_uboot-envtools=m\n"..., 4096) = 4096
read(5, "xec-tools is not set\nCONFIG_PACK"..., 4096) = 1117
read(5, "", 4096) = 0
close(5) = 0
openat(4, "toolchain", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, "feeds.conf.default", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=442, ...}, AT_EMPTY_PATH) = 0
read(5, "src-git packages https://git.ope"..., 4096) = 442
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "src-git packages https://git.ope"..., 4096) = 442
read(5, "", 4096) = 0
close(5) = 0
openat(4, ".gitignore", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=342, ...}, AT_EMPTY_PATH) = 0
read(5, "*.o\n.DS_Store\n.*.swp\n/env\n/dl\n/."..., 4096) = 342
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "*.o\n.DS_Store\n.*.swp\n/env\n/dl\n/."..., 4096) = 342
read(5, "", 4096) = 0
close(5) = 0
openat(4, "config", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, "scripts", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, "build_dir", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, ".config", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=168770, ...}, AT_EMPTY_PATH) = 0
read(5, "#\n# Automatically generated file"..., 4096) = 4096
read(5, "T_ath79_generic_DEVICE_comfast_c"..., 4096) = 4096
read(5, "ric_DEVICE_hak5_packet-squirrel "..., 4096) = 4096
read(5, "16m is not set\n# CONFIG_TARGET_a"..., 4096) = 4096
read(5, "c_DEVICE_tplink_cpe710-v1 is not"..., 4096) = 4096
read(5, "t\n# CONFIG_TARGET_ath79_generic_"..., 4096) = 4096
read(5, " not set\n# CONFIG_TARGET_DEVICE_"..., 4096) = 4096
read(5, "ica_eg200 is not set\n# CONFIG_TA"..., 4096) = 4096
read(5, "esh_om2p-hs-v4 is not set\n# CONF"..., 4096) = 4096
read(5, "nk_cpe210-v1 is not set\n# CONFIG"..., 4096) = 4096
read(5, "VICE_tplink_wbs510-v1 is not set"..., 4096) = 4096
read(5, "GES=\"mips_24kc\"\nCONFIG_DEFAULT_T"..., 4096) = 4096
read(5, "G_KERNEL_DYNAMIC_DEBUG is not se"..., 4096) = 4096
read(5, "l build options\n\n#\n# Package bui"..., 4096) = 4096
read(5, "_FEATURE_DEVPTS=y\n# CONFIG_BUSYB"..., 4096) = 4096
read(5, "IG_BUSYBOX_DEFAULT_LAST_SUPPORTE"..., 4096) = 4096
read(5, "E_CP_REFLINK is not set\nCONFIG_B"..., 4096) = 4096
read(5, "_TEST_64=y\n# CONFIG_BUSYBOX_DEFA"..., 4096) = 4096
read(5, "\nCONFIG_BUSYBOX_DEFAULT_FEATURE_"..., 4096) = 4096
read(5, "_DEFAULT_LOGIN=y\nCONFIG_BUSYBOX_"..., 4096) = 4096
read(5, "IPCRM is not set\n# CONFIG_BUSYBO"..., 4096) = 4096
read(5, "URE_VOLUMEID_ISO9660 is not set\n"..., 4096) = 4096
read(5, " is not set\n# CONFIG_BUSYBOX_DEF"..., 4096) = 4096
read(5, "ot set\n# CONFIG_BUSYBOX_DEFAULT_"..., 4096) = 4096
read(5, " CONFIG_BUSYBOX_DEFAULT_FEATURE_"..., 4096) = 4096
read(5, "s not set\n# CONFIG_BUSYBOX_DEFAU"..., 4096) = 4096
read(5, "OX_DEFAULT_HUSH_UMASK is not set"..., 4096) = 4096
read(5, "s not set\n# CONFIG_PACKAGE_trace"..., 4096) = 4096
read(5, "port-firmware is not set\n# CONFI"..., 4096) = 4096
read(5, "E_kmod-scsi-generic is not set\n#"..., 4096) = 4096
read(5, "not set\n# CONFIG_PACKAGE_kmod-hw"..., 4096) = 4096
read(5, "AGE_kmod-lib-cordic is not set\nC"..., 4096) = 4096
read(5, " Devices\n#\n# CONFIG_PACKAGE_kmod"..., 4096) = 4096
read(5, "CKAGE_kmod-pppoa is not set\nCONF"..., 4096) = 4096
read(5, "\nCONFIG_PACKAGE_kmod-usb-chipide"..., 4096) = 4096
read(5, "et\n# CONFIG_PACKAGE_kmod-drm-kms"..., 4096) = 4096
read(5, "GE_kmod-rsi91x-usb is not set\n# "..., 4096) = 4096
read(5, "CONFIG_PACKAGE_libdw is not set\n"..., 4096) = 4096
read(5, "IG_PACKAGE_atm-atmloop is not se"..., 4096) = 4096
read(5, "ACKAGE_wireguard-tools is not se"..., 4096) = 4096
read(5, "t\n# CONFIG_PACKAGE_eject is not "..., 4096) = 4096
read(5, "GE_mcookie is not set\n# CONFIG_P"..., 4096) = 834
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "#\n# Automatically generated file"..., 4096) = 4096
read(5, "T_ath79_generic_DEVICE_comfast_c"..., 4096) = 4096
read(5, "ric_DEVICE_hak5_packet-squirrel "..., 4096) = 4096
read(5, "16m is not set\n# CONFIG_TARGET_a"..., 4096) = 4096
read(5, "c_DEVICE_tplink_cpe710-v1 is not"..., 4096) = 4096
read(5, "t\n# CONFIG_TARGET_ath79_generic_"..., 4096) = 4096
read(5, " not set\n# CONFIG_TARGET_DEVICE_"..., 4096) = 4096
read(5, "ica_eg200 is not set\n# CONFIG_TA"..., 4096) = 4096
read(5, "esh_om2p-hs-v4 is not set\n# CONF"..., 4096) = 4096
read(5, "nk_cpe210-v1 is not set\n# CONFIG"..., 4096) = 4096
read(5, "VICE_tplink_wbs510-v1 is not set"..., 4096) = 4096
read(5, "GES=\"mips_24kc\"\nCONFIG_DEFAULT_T"..., 4096) = 4096
read(5, "G_KERNEL_DYNAMIC_DEBUG is not se"..., 4096) = 4096
read(5, "l build options\n\n#\n# Package bui"..., 4096) = 4096
read(5, "_FEATURE_DEVPTS=y\n# CONFIG_BUSYB"..., 4096) = 4096
read(5, "IG_BUSYBOX_DEFAULT_LAST_SUPPORTE"..., 4096) = 4096
read(5, "E_CP_REFLINK is not set\nCONFIG_B"..., 4096) = 4096
read(5, "_TEST_64=y\n# CONFIG_BUSYBOX_DEFA"..., 4096) = 4096
read(5, "\nCONFIG_BUSYBOX_DEFAULT_FEATURE_"..., 4096) = 4096
read(5, "_DEFAULT_LOGIN=y\nCONFIG_BUSYBOX_"..., 4096) = 4096
read(5, "IPCRM is not set\n# CONFIG_BUSYBO"..., 4096) = 4096
read(5, "URE_VOLUMEID_ISO9660 is not set\n"..., 4096) = 4096
read(5, " is not set\n# CONFIG_BUSYBOX_DEF"..., 4096) = 4096
read(5, "ot set\n# CONFIG_BUSYBOX_DEFAULT_"..., 4096) = 4096
read(5, " CONFIG_BUSYBOX_DEFAULT_FEATURE_"..., 4096) = 4096
read(5, "s not set\n# CONFIG_BUSYBOX_DEFAU"..., 4096) = 4096
read(5, "OX_DEFAULT_HUSH_UMASK is not set"..., 4096) = 4096
read(5, "s not set\n# CONFIG_PACKAGE_trace"..., 4096) = 4096
read(5, "port-firmware is not set\n# CONFI"..., 4096) = 4096
read(5, "E_kmod-scsi-generic is not set\n#"..., 4096) = 4096
read(5, "not set\n# CONFIG_PACKAGE_kmod-hw"..., 4096) = 4096
read(5, "AGE_kmod-lib-cordic is not set\nC"..., 4096) = 4096
read(5, " Devices\n#\n# CONFIG_PACKAGE_kmod"..., 4096) = 4096
read(5, "CKAGE_kmod-pppoa is not set\nCONF"..., 4096) = 4096
read(5, "\nCONFIG_PACKAGE_kmod-usb-chipide"..., 4096) = 4096
read(5, "et\n# CONFIG_PACKAGE_kmod-drm-kms"..., 4096) = 4096
read(5, "GE_kmod-rsi91x-usb is not set\n# "..., 4096) = 4096
read(5, "CONFIG_PACKAGE_libdw is not set\n"..., 4096) = 4096
read(5, "IG_PACKAGE_atm-atmloop is not se"..., 4096) = 4096
read(5, "ACKAGE_wireguard-tools is not se"..., 4096) = 4096
read(5, "t\n# CONFIG_PACKAGE_eject is not "..., 4096) = 4096
read(5, "GE_mcookie is not set\n# CONFIG_P"..., 4096) = 834
read(5, "", 4096) = 0
close(5) = 0
openat(4, "key-build.pub", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=92, ...}, AT_EMPTY_PATH) = 0
read(5, "untrusted comment: Local build k"..., 4096) = 92
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "untrusted comment: Local build k"..., 4096) = 92
read(5, "", 4096) = 0
close(5) = 0
openat(4, "dl", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0755, st_size=12288, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, "COPYING", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=284, ...}, AT_EMPTY_PATH) = 0
read(5, "OpenWrt is provided under:\n\n\tSPD"..., 4096) = 284
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "OpenWrt is provided under:\n\n\tSPD"..., 4096) = 284
read(5, "", 4096) = 0
close(5) = 0
openat(4, "LICENSES", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, "key-build", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=176, ...}, AT_EMPTY_PATH) = 0
read(5, "untrusted comment: Local build k"..., 4096) = 176
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "untrusted comment: Local build k"..., 4096) = 176
read(5, "", 4096) = 0
close(5) = 0
openat(4, "include", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, "bin", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, ".gitattributes", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=8, ...}, AT_EMPTY_PATH) = 0
read(5, "* -text\n", 4096) = 8
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "* -text\n", 4096) = 8
read(5, "", 4096) = 0
close(5) = 0
openat(4, ".git", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, "target", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, "BSDmakefile", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=106, ...}, AT_EMPTY_PATH) = 0
read(5, "# SPDX-License-Identifier: GPL-2"..., 4096) = 106
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "# SPDX-License-Identifier: GPL-2"..., 4096) = 106
read(5, "", 4096) = 0
close(5) = 0
openat(4, "staging_dir", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, "key-build.ucert.revoke", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=260, ...}, AT_EMPTY_PATH) = 0
read(5, "\0\0\1\4\0\0\0\233untrusted comment: signe"..., 4096) = 260
lseek(5, 0, SEEK_SET) = 0
read(5, "\0\0\1\4\0\0\0\233untrusted comment: signe"..., 4096) = 260
close(5) = 0
openat(4, "public-key.pem", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=178, ...}, AT_EMPTY_PATH) = 0
read(5, "-----BEGIN PUBLIC KEY-----\nMFkwE"..., 4096) = 178
close(5) = 0
openat(4, "package", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, "Makefile", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=4028, ...}, AT_EMPTY_PATH) = 0
read(5, "# SPDX-License-Identifier: GPL-2"..., 4096) = 4028
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "# SPDX-License-Identifier: GPL-2"..., 4096) = 4028
read(5, "", 4096) = 0
close(5) = 0
openat(4, "tools", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, "key-build.ucert", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=356, ...}, AT_EMPTY_PATH) = 0
read(5, "\0\0\1d\0\0\0\233untrusted comment: signe"..., 4096) = 356
lseek(5, 0, SEEK_SET) = 0
read(5, "\0\0\1d\0\0\0\233untrusted comment: signe"..., 4096) = 356
close(5) = 0
openat(4, "tmp", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0775, st_size=20480, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, ".github", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
lseek(5, 0, SEEK_SET) = 0
read(5, 0xaaaab4b88f60, 4096) = -1 EISDIR (Is a directory)
close(5) = 0
openat(4, "README.md", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=3603, ...}, AT_EMPTY_PATH) = 0
read(5, "![OpenWrt logo](include/logo.png"..., 4096) = 3603
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "![OpenWrt logo](include/logo.png"..., 4096) = 3603
read(5, "", 4096) = 0
close(5) = 0
openat(4, "rules.mk", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=14826, ...}, AT_EMPTY_PATH) = 0
read(5, "# SPDX-License-Identifier: GPL-2"..., 4096) = 4096
read(5, "CV)$(DIR_SUFFIX)\nelse\n ifeq ($("..., 4096) = 4096
read(5, " endif\n TARGET_PATH:=$(TOOL"..., 4096) = 4096
read(5, "ar,$(1))=$$(call $(1))\nendef\n\n# "..., 4096) = 2538
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "# SPDX-License-Identifier: GPL-2"..., 4096) = 4096
read(5, "CV)$(DIR_SUFFIX)\nelse\n ifeq ($("..., 4096) = 4096
read(5, " endif\n TARGET_PATH:=$(TOOL"..., 4096) = 4096
read(5, "ar,$(1))=$$(call $(1))\nendef\n\n# "..., 4096) = 2538
read(5, "", 4096) = 0
close(5) = 0
openat(4, "Config.in", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=675, ...}, AT_EMPTY_PATH) = 0
read(5, "# SPDX-License-Identifier: GPL-2"..., 4096) = 675
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "# SPDX-License-Identifier: GPL-2"..., 4096) = 675
read(5, "", 4096) = 0
close(5) = 0
openat(4, "private-key.pem", O_RDONLY|O_CLOEXEC) = 5
fcntl(5, F_GETFL) = 0x20000 (flags O_RDONLY|O_LARGEFILE)
newfstatat(5, "", {st_mode=S_IFREG|0664, st_size=226, ...}, AT_EMPTY_PATH) = 0
read(5, "-----BEGIN EC PRIVATE KEY-----\nM"..., 4096) = 226
read(5, "", 4096) = 0
lseek(5, 0, SEEK_SET) = 0
read(5, "-----BEGIN EC PRIVATE KEY-----\nM"..., 4096) = 226
read(5, "", 4096) = 0
close(5) = 0
getdents64(4, 0xaaaab4b80f50 /* 0 entries */, 32768) = 0
close(4) = 0
newfstatat(AT_FDCWD, "apk-3.0.0~pre0-2021-12-20-1.apk", {st_mode=S_IFREG|0644, st_size=132585, ...}, 0) = 0
openat(AT_FDCWD, "apk-3.0.0~pre0-2021-12-20-1.apk", O_RDONLY|O_CLOEXEC) = 4
mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffffbca47000
read(4, "ADBd\314\274\v|SU\2660\276\223\346\235\264M\241p\n\24\t\241<,\357R\34u\360z"..., 131072) = 131072
mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffffbca26000
brk(0xaaaab4bb3000) = 0xaaaab4bb3000
brk(0xaaaab4bab000) = 0xaaaab4bab000
close(4) = 0
munmap(0xffffbca47000, 135168) = 0
munmap(0xffffbca26000, 135168) = 0
newfstatat(AT_FDCWD, "bnx2-firmware-20210511-1.apk", {st_mode=S_IFREG|0644, st_size=704150, ...}, 0) = 0
openat(AT_FDCWD, "bnx2-firmware-20210511-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\314}\v|T\325\265\367:gf\222\311\220\307I\30\302`\243\234\223\234IF\22\365\4"..., 131072) = 131072
brk(0xaaaab4beb000) = 0xaaaab4beb000
close(4) = 0
brk(0xaaaab4bab000) = 0xaaaab4bab000
newfstatat(AT_FDCWD, "bnx2-firmware-20211216-1.apk", {st_mode=S_IFREG|0644, st_size=704153, ...}, 0) = 0
openat(AT_FDCWD, "bnx2-firmware-20211216-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\314\275\v|T\325\265?\276\316\231\231d2\344q\22\2060h\204s\2223\311H\242\236"..., 131072) = 131072
brk(0xaaaab4beb000) = 0xaaaab4beb000
close(4) = 0
brk(0xaaaab4bab000) = 0xaaaab4bab000
newfstatat(AT_FDCWD, "busybox-1.34.1-1.apk", {st_mode=S_IFREG|0644, st_size=211580, ...}, 0) = 0
openat(AT_FDCWD, "busybox-1.34.1-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\314\275{`SU\2668\274O\36m\222\246mZJS\nj\10Eky\25(\352("..., 131072) = 131072
brk(0xaaaab4beb000) = 0xaaaab4beb000
read(4, "\245\222-1\360\227).-\37Y\377m\376V\311\260\325\205:\2250&e\5\254e\260R)Ys"..., 131072) = 80508
read(4, "", 131072) = 0
close(4) = 0
brk(0xaaaab4bab000) = 0xaaaab4bab000
newfstatat(AT_FDCWD, "ca-bundle-20211016-1.apk", {st_mode=S_IFREG|0644, st_size=117673, ...}, 0) = 0
openat(AT_FDCWD, "ca-bundle-20211016-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\354\275k\310\365\\\237\37\364\274\363NO\301\352\240~\260`\3533\257\323\"\2443;\311"..., 131072) = 117673
brk(0xaaaab4beb000) = 0xaaaab4beb000
read(4, "", 131072) = 0
close(4) = 0
brk(0xaaaab4bab000) = 0xaaaab4bab000
newfstatat(AT_FDCWD, "dnsmasq-2.86-11.apk", {st_mode=S_IFREG|0644, st_size=128114, ...}, 0) = 0
openat(AT_FDCWD, "dnsmasq-2.86-11.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\324\275\r|T\325\2310~\347#_\223o\10\tj\324\313$H\10\371D\244\232\32;"..., 131072) = 128114
brk(0xaaaab4beb000) = 0xaaaab4beb000
close(4) = 0
brk(0xaaaab4bab000) = 0xaaaab4bab000
newfstatat(AT_FDCWD, "e2fsprogs-1.45.6-2.apk", {st_mode=S_IFREG|0644, st_size=160333, ...}, 0) = 0
openat(AT_FDCWD, "e2fsprogs-1.45.6-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\354\275\v|\224\305\3258<\317f\223ln\260\201@\2FYB\2$\334\3*\242\326"..., 131072) = 131072
brk(0xaaaab4beb000) = 0xaaaab4beb000
close(4) = 0
newfstatat(AT_FDCWD, "firewall-2021-08-14-40e5f6a2-1.apk", {st_mode=S_IFREG|0644, st_size=42371, ...}, 0) = 0
openat(AT_FDCWD, "firewall-2021-08-14-40e5f6a2-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\344\275\vxT\325\3257\276g2\367\334\206\208\1#\236L\302m\200\220\4\244h\261"..., 131072) = 42371
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "getrandom-2021-08-03-205defb5-2.apk", {st_mode=S_IFREG|0644, st_size=2228, ...}, 0) = 0
openat(AT_FDCWD, "getrandom-2021-08-03-205defb5-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355\30\177p\24W\371\333\275Krw\1\262I\10\t4\266/\307\205\204J.\227\10\235"..., 131072) = 2228
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "hostapd-common-2021-05-22-b102f19b-61.apk", {st_mode=S_IFREG|0644, st_size=12936, ...}, 0) = 0
openat(AT_FDCWD, "hostapd-common-2021-05-22-b102f19b-61.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355}m\214$\307u\330\362\216\224\262\3\223\"\34\313\22\4\375h6G\332\333\323\316\356"..., 131072) = 12936
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "hostapd-common-2021-05-22-b102f19b-64.apk", {st_mode=S_IFREG|0644, st_size=13101, ...}, 0) = 0
openat(AT_FDCWD, "hostapd-common-2021-05-22-b102f19b-64.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355}m\214$\307u\330\362C\37;\320\7\341\330\361\7\214\244\331\34io\351\235\335\231"..., 131072) = 13101
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "iw-5.16-1.apk", {st_mode=S_IFREG|0644, st_size=41344, ...}, 0) = 0
openat(AT_FDCWD, "iw-5.16-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\314\275\tx\24U\2668^U]\275w\322\335\331*\354\235\"\201\330\354\1\327A\255t"..., 131072) = 41344
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "iwinfo-2021-07-11-a0a0e02d-1.apk", {st_mode=S_IFREG|0644, st_size=7081, ...}, 0) = 0
openat(AT_FDCWD, "iwinfo-2021-07-11-a0a0e02d-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355;kX\33\327\225WB\217\321\3#;\30\341FM\3072r\34\312\333n\353dq"..., 131072) = 7081
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "jshn-2021-11-20-cce5e351-1.apk", {st_mode=S_IFREG|0644, st_size=6379, ...}, 0) = 0
openat(AT_FDCWD, "jshn-2021-11-20-cce5e351-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355<\vpT\307\221\263\273\222V\273\346\263\302\302\vB\261\37O+\204A\237\225\220m"..., 131072) = 6379
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "jsonfilter-2018-02-04-c7e938d6-1.apk", {st_mode=S_IFREG|0644, st_size=8736, ...}, 0) = 0
openat(AT_FDCWD, "jsonfilter-2018-02-04-c7e938d6-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355|}X\24\347\271\3673\373\301~\260\v\313\347\200A\35\226\205E\2\313\207\0371\6"..., 131072) = 8736
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libblkid1-2.37-1.apk", {st_mode=S_IFREG|0644, st_size=117119, ...}, 0) = 0
openat(AT_FDCWD, "libblkid1-2.37-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\324\275\txT\325\3318~g\315\3543\201\300D\215\32\206\2608\240\206\305\255u\31\222"..., 131072) = 117119
close(4) = 0
newfstatat(AT_FDCWD, "libblobmsg-json20211120-2021-11-20-cce5e351-1.apk", {st_mode=S_IFREG|0644, st_size=4084, ...}, 0) = 0
openat(AT_FDCWD, "libblobmsg-json20211120-2021-11-20-cce5e351-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355:kT\33\347\225\337H\203\236`\4\306\214\354\342z\20\362\243\216\215\5vz\34\257"..., 131072) = 4084
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libcomerr0-1.45.6-2.apk", {st_mode=S_IFREG|0644, st_size=4045, ...}, 0) = 0
openat(AT_FDCWD, "libcomerr0-1.45.6-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355Y}tS\307\225\237'\313\226,\31\362\f\266%\202\33\236\2050\216\1\371#\206\230"..., 131072) = 4045
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libext2fs2-1.45.6-2.apk", {st_mode=S_IFREG|0644, st_size=168489, ...}, 0) = 0
openat(AT_FDCWD, "libext2fs2-1.45.6-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\354\275\tX\223W\3320|\236'\t\373\22\20\215\273\254j]1\270/3Q\241U\4"..., 131072) = 131072
close(4) = 0
newfstatat(AT_FDCWD, "libf2fs6-1.14.0-2.apk", {st_mode=S_IFREG|0644, st_size=41031, ...}, 0) = 0
openat(AT_FDCWD, "libf2fs6-1.14.0-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\344\275\t\\\223W\3260~\23\2\4\210\30\21\215\v\326\210\332\5\255\v\240\265{\4\265"..., 131072) = 41031
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libiwinfo20210430-2021-07-11-a0a0e02d-1.apk", {st_mode=S_IFREG|0644, st_size=25391, ...}, 0) = 0
openat(AT_FDCWD, "libiwinfo20210430-2021-07-11-a0a0e02d-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\314\275{`\23U\3320>\231L\222\311\255MJ\313\24(\20BA,*\245xAW"..., 131072) = 25391
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libiwinfo-data-2021-07-11-a0a0e02d-1.apk", {st_mode=S_IFREG|0644, st_size=2664, ...}, 0) = 0
openat(AT_FDCWD, "libiwinfo-data-2021-07-11-a0a0e02d-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\315Z[\214\334V\31\366\346\2tzQJR\321J\205\236LP\225\224\314\314\271\330\36"..., 131072) = 2664
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libjson-c5-0.15-2.apk", {st_mode=S_IFREG|0644, st_size=22450, ...}, 0) = 0
openat(AT_FDCWD, "libjson-c5-0.15-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\314\275\v\\\24\327\3318<\263\273\354\225\313\242\340j\304\270Y\361\222\325(Ac\22\233"..., 131072) = 22450
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libjson-script20211120-2021-11-20-cce5e351-1.apk", {st_mode=S_IFREG|0644, st_size=5131, ...}, 0) = 0
openat(AT_FDCWD, "libjson-script20211120-2021-11-20-cce5e351-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\315:\rTSg\226\337K\36\371!\1\36\212\206R\220\210\361g\30E\374\333Z\247N"..., 131072) = 5131
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libnl-tiny1-2021-11-21-8e0555fb-1.apk", {st_mode=S_IFREG|0644, st_size=12779, ...}, 0) = 0
openat(AT_FDCWD, "libnl-tiny1-2021-11-21-8e0555fb-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355}{|SU\266\360\311;m\3236\205b\252\3261\204\202Z\344\r#zqLK"..., 131072) = 12779
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libopenssl1.1-1.1.1l-2.apk", {st_mode=S_IFREG|0644, st_size=1169375, ...}, 0) = 0
openat(AT_FDCWD, "libopenssl1.1-1.1.1l-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\354\275\r\274Uc\3727~\255\265\327\373Z{\255\265;\247\323>\373\24\247\244\27RI"..., 131072) = 131072
close(4) = 0
newfstatat(AT_FDCWD, "libsmartcols1-2.37-1.apk", {st_mode=S_IFREG|0644, st_size=71605, ...}, 0) = 0
openat(AT_FDCWD, "libsmartcols1-2.37-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\314\275\t|\33\305\2758\276\222eY\227m\371\224\1\7\34\305\tA9\10\341(\264P"..., 131072) = 71605
close(4) = 0
newfstatat(AT_FDCWD, "libss2-1.45.6-2.apk", {st_mode=S_IFREG|0644, st_size=8118, ...}, 0) = 0
openat(AT_FDCWD, "libss2-1.45.6-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355{mxT\307y\350\354\207\366K\2\26,gE#\354\303\">,\320\207\205 \230"..., 131072) = 8118
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libubox20211120-2021-11-20-cce5e351-1.apk", {st_mode=S_IFREG|0644, st_size=19937, ...}, 0) = 0
openat(AT_FDCWD, "libubox20211120-2021-11-20-cce5e351-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355\275y\\[e\3660~o\10YXC\27C\235\252i\240\213\240-]\2553u\f"..., 131072) = 19937
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libubus20210809-2021-08-09-a72457b6-2.apk", {st_mode=S_IFREG|0644, st_size=9802, ...}, 0) = 0
openat(AT_FDCWD, "libubus20210809-2021-08-09-a72457b6-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355|{\\\\\325\265\3609\303\274\207\307\360\10C,\321\3110$\221\274\10F\36306"..., 131072) = 9802
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libuci20130104-2021-10-22-f84f49f0-6.apk", {st_mode=S_IFREG|0644, st_size=15324, ...}, 0) = 0
openat(AT_FDCWD, "libuci20130104-2021-10-22-f84f49f0-6.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355}{|\33\325\225\360\214,\353m[N\354\214)\6\24E\316Cy\331\346\321@\3"..., 131072) = 15324
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libuclient20201210-2021-05-14-6a6011df-1.apk", {st_mode=S_IFREG|0644, st_size=9711, ...}, 0) = 0
openat(AT_FDCWD, "libuclient20201210-2021-05-14-6a6011df-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355{kxS\327\225\350>\322\261,?d\313<\"\323\230F\10;$\346\341\7o\2"..., 131072) = 9711
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libustream-wolfssl20201210-2020-12-10-68d09243-2.apk", {st_mode=S_IFREG|0644, st_size=4589, ...}, 0) = 0
openat(AT_FDCWD, "libustream-wolfssl20201210-2020-12-10-68d09243-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355[{pSWz?W\222\3376\10l\220mL\"\v\231\207\301\266d\33b\0104"..., 131072) = 4589
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libuuid1-2.37-1.apk", {st_mode=S_IFREG|0644, st_size=11866, ...}, 0) = 0
openat(AT_FDCWD, "libuuid1-2.37-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355|{\\SW\266\377\311\203<\310\203\360P\260E\215\210/,\30\336\332ig\302K"..., 131072) = 11866
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "libwolfssl4.8.1.62348c2b-4.8.1-stable-6.apk", {st_mode=S_IFREG|0644, st_size=455414, ...}, 0) = 0
openat(AT_FDCWD, "libwolfssl4.8.1.62348c2b-4.8.1-stable-6.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\344\275\v\234U\323\373?\376\234}9{\235\275\317\324\250)\223.\246\244\206nS*\243"..., 131072) = 131072
close(4) = 0
newfstatat(AT_FDCWD, "logd-2021-08-03-205defb5-2.apk", {st_mode=S_IFREG|0644, st_size=9978, ...}, 0) = 0
openat(AT_FDCWD, "logd-2021-08-03-205defb5-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355}\v|\23\327\225\367\225,cI\266A6&\362+a,d0\306\17\331@\2\216"..., 131072) = 9978
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "mkf2fs-1.14.0-2.apk", {st_mode=S_IFREG|0644, st_size=17828, ...}, 0) = 0
openat(AT_FDCWD, "mkf2fs-1.14.0-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355\275\177\\SW\2668\272\363\3\f!@D\4\264\214\36#\266\226Z\177\0\266\35\256"..., 131072) = 17828
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "netifd-2021-12-02-5ca5e0b4-1.apk", {st_mode=S_IFREG|0644, st_size=79414, ...}, 0) = 0
openat(AT_FDCWD, "netifd-2021-12-02-5ca5e0b4-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\334\275\v|T\305\3658>\233l\36\273I (\22D\324\313f\221d!o@\r\304"..., 131072) = 79414
close(4) = 0
newfstatat(AT_FDCWD, "odhcp6c-2021-12-05-39b584bc-18.apk", {st_mode=S_IFREG|0644, st_size=24393, ...}, 0) = 0
openat(AT_FDCWD, "odhcp6c-2021-12-05-39b584bc-18.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\314\274\t\\\223W\3260\376d#\v[X$\210\2501\340\26\25\5\255m\255N\237\0"..., 131072) = 24393
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "odhcpd-ipv6only-2021-08-11-01b4e604-1.apk", {st_mode=S_IFREG|0644, st_size=38331, ...}, 0) = 0
openat(AT_FDCWD, "odhcpd-ipv6only-2021-08-11-01b4e604-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\314\274\v|SU\2660~\362h\232WKZ\n)P \204\"Py\224\2\212\17\306"..., 131072) = 38331
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "openwrt-keyring-2021-02-20-49283916-2.apk", {st_mode=S_IFREG|0644, st_size=896, ...}, 0) = 0
openat(AT_FDCWD, "openwrt-keyring-2021-02-20-49283916-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\315T]h\24W\24\276\263\273F;T\273P\213RKz\35K\24\262;3;\371\333"..., 131072) = 896
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "partx-utils-2.37-1.apk", {st_mode=S_IFREG|0644, st_size=42380, ...}, 0) = 0
openat(AT_FDCWD, "partx-utils-2.37-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\354}\vx[\305\225\360H\226%Y\226\345k\307\261\0340\240\310Np\224\227\363\0\2"..., 131072) = 42380
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "ppp-2.4.9.git-2021-01-04-3.apk", {st_mode=S_IFREG|0644, st_size=115303, ...}, 0) = 0
openat(AT_FDCWD, "ppp-2.4.9.git-2021-01-04-3.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\354\275\vxT\325\271>\276\366dr\17drO \3000\271\0\t\271_\10Tj\200"..., 131072) = 115303
close(4) = 0
newfstatat(AT_FDCWD, "ppp-mod-pppoe-2.4.9.git-2021-01-04-3.apk", {st_mode=S_IFREG|0644, st_size=10413, ...}, 0) = 0
openat(AT_FDCWD, "ppp-mod-pppoe-2.4.9.git-2021-01-04-3.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355|{xT\325\325\367\236K\346\226\333\4F&H\224C\f\202hB@\n\210\250\223"..., 131072) = 10413
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "procd-2021-12-20-129d050b-1.apk", {st_mode=S_IFREG|0644, st_size=53052, ...}, 0) = 0
openat(AT_FDCWD, "procd-2021-12-20-129d050b-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\354\275\v|T\325\2650~f2If&\t\f\30I\264@N&\23y\10$\340\243"..., 131072) = 53052
close(4) = 0
newfstatat(AT_FDCWD, "procd-seccomp-2021-12-20-129d050b-1.apk", {st_mode=S_IFREG|0644, st_size=19212, ...}, 0) = 0
openat(AT_FDCWD, "procd-seccomp-2021-12-20-129d050b-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355\275\vxT\327\225&zJ\22B \1\5\10$\34\34\312\262x\332\210R\351\201$"..., 131072) = 19212
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "procd-ujail-2021-12-20-129d050b-1.apk", {st_mode=S_IFREG|0644, st_size=41299, ...}, 0) = 0
openat(AT_FDCWD, "procd-ujail-2021-12-20-129d050b-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\314\275\t|S\307\265\7|%\313\266,\311\226\274I\6\f\10a\2uX\f\241@\323"..., 131072) = 41299
brk(0xaaaab4c11000) = 0xaaaab4c11000
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "r8169-firmware-20210511-1.apk", {st_mode=S_IFREG|0644, st_size=34628, ...}, 0) = 0
openat(AT_FDCWD, "r8169-firmware-20210511-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\354\275\v\\\224E\3737~\357\1X\16\302\2\v\"\307\25\21QI\27\20\\\311\247\26"..., 131072) = 34628
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "r8169-firmware-20211216-1.apk", {st_mode=S_IFREG|0644, st_size=34671, ...}, 0) = 0
openat(AT_FDCWD, "r8169-firmware-20211216-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\354\275\v\\\224\305\367?\376\354\5X.\302\2\313E\256+\"\242\222. \270\232\237Z"..., 131072) = 34671
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "rpcd-2021-11-04-d11ffe93-2.apk", {st_mode=S_IFREG|0644, st_size=23503, ...}, 0) = 0
openat(AT_FDCWD, "rpcd-2021-11-04-d11ffe93-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\314\275\vx\33\305\2658\276\222Wo\331\226\35;r\22\7d\341\220 \362p P\240"..., 131072) = 23503
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "rpcd-mod-file-2021-11-04-d11ffe93-2.apk", {st_mode=S_IFREG|0644, st_size=7031, ...}, 0) = 0
openat(AT_FDCWD, "rpcd-mod-file-2021-11-04-d11ffe93-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355[{x\33\325\225\277\222e[\262${\34;\221\t\16(\302\211\35'~&@\22"..., 131072) = 7031
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "rpcd-mod-iwinfo-2021-11-04-d11ffe93-2.apk", {st_mode=S_IFREG|0644, st_size=7351, ...}, 0) = 0
openat(AT_FDCWD, "rpcd-mod-iwinfo-2021-11-04-d11ffe93-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355;mt\33\305\265#Y\226d[\266\327\216\35)D\20\305q\22c\342\304v\22^"..., 131072) = 7351
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "rpcd-mod-rpcsys-2021-11-04-d11ffe93-2.apk", {st_mode=S_IFREG|0644, st_size=4206, ...}, 0) = 0
openat(AT_FDCWD, "rpcd-mod-rpcsys-2021-11-04-d11ffe93-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355Z}t[\345y\177$\313\212>\374!\307v$\247\6_+\"1Il\313\306k"..., 131072) = 4206
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "swconfig-12.apk", {st_mode=S_IFREG|0644, st_size=7675, ...}, 0) = 0
openat(AT_FDCWD, "swconfig-12.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355{kx\24\327\221\350\351yH\363\2224B\202\26X\202f4z0 \3640v\274"..., 131072) = 7675
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "ubox-2021-08-03-205defb5-2.apk", {st_mode=S_IFREG|0644, st_size=13944, ...}, 0) = 0
openat(AT_FDCWD, "ubox-2021-08-03-205defb5-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355}\vxT\325\265\360>\363\310\274\223\t\4N\200@N\206\t\304\201<A\213\24\364"..., 131072) = 13944
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "ubus-2021-08-09-a72457b6-2.apk", {st_mode=S_IFREG|0644, st_size=6212, ...}, 0) = 0
openat(AT_FDCWD, "ubus-2021-08-09-a72457b6-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355;}|T\325\225\367M&\223\371H`\10\301\2115\204\227a\2!\222O\321\"\215"..., 131072) = 6212
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "ubusd-2021-08-09-a72457b6-2.apk", {st_mode=S_IFREG|0644, st_size=11941, ...}, 0) = 0
openat(AT_FDCWD, "ubusd-2021-08-09-a72457b6-2.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355|kX[\327\225\350\226\20z!\214\300`a\207\304\262\214\35\233\370\201\235\227\343:"..., 131072) = 11941
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "uci-2021-10-22-f84f49f0-6.apk", {st_mode=S_IFREG|0644, st_size=6961, ...}, 0) = 0
openat(AT_FDCWD, "uci-2021-10-22-f84f49f0-6.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355<\rxT\325\225w~\222\314L\10\f\212\274\220\"\334\f\23\22b~\206\210\25!"..., 131072) = 6961
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "uclient-fetch-2021-05-14-6a6011df-1.apk", {st_mode=S_IFREG|0644, st_size=7503, ...}, 0) = 0
openat(AT_FDCWD, "uclient-fetch-2021-05-14-6a6011df-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355|\177@T\327\225\377\35f\3705\200\31\21\35\374\221\370\34@\21\31@\374\221H\300"..., 131072) = 7503
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "urandom-seed-3.apk", {st_mode=S_IFREG|0644, st_size=1424, ...}, 0) = 0
openat(AT_FDCWD, "urandom-seed-3.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\315\26kl\24Ex\356z\250,\240\220\370(1\301\271\245\241E\271\335\273\202X\212\307"..., 131072) = 1424
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "urngd-2020-01-21-c7f7b6b6-1.apk", {st_mode=S_IFREG|0644, st_size=5363, ...}, 0) = 0
openat(AT_FDCWD, "urngd-2020-01-21-c7f7b6b6-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355[}tT\307u\237\267\273\372Z\23Xa\361e\3^-\302\200\214\264\222\240\216\355"..., 131072) = 5363
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "usign-2020-05-23-f1f65026-1.apk", {st_mode=S_IFREG|0644, st_size=11794, ...}, 0) = 0
openat(AT_FDCWD, "usign-2020-05-23-f1f65026-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\355|{|T\325\265\377:g\22\22B\304\1\2\f6\2053\344\314$\232\0C\2146"..., 131072) = 11794
read(4, "", 131072) = 0
close(4) = 0
newfstatat(AT_FDCWD, "wireless-regdb-2021.08.28-1.apk", {st_mode=S_IFREG|0644, st_size=2536, ...}, 0) = 0
openat(AT_FDCWD, "wireless-regdb-2021.08.28-1.apk", O_RDONLY|O_CLOEXEC) = 4
read(4, "ADBd\315\230{lS\327\35\307\3179?\347\345\1s3+C\264\0027\244\24u%1P:"..., 131072) = 2536
read(4, "", 131072) = 0
close(4) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
+++ killed by SIGSEGV (core dumped) +++
```
</details>https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10804Offer uncompressed help messages via compile tag2022-01-17T08:13:41ZPaul SpoorenOffer uncompressed help messages via compile tagCompressing the help messages of `apk` uses zlib and some Lua dependency. This adds extra build requirements to the OpenWrt build system while all files are compressed via SquashFS anyway. It'd be handy to have a compile tag to disable t...Compressing the help messages of `apk` uses zlib and some Lua dependency. This adds extra build requirements to the OpenWrt build system while all files are compressed via SquashFS anyway. It'd be handy to have a compile tag to disable the compression.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10806apk silently ignores malformed depends2022-01-17T09:03:49ZMichal Jirkůapk silently ignores malformed dependsThe `community/erlang-observer` package has in `24.1.4-r0` malformed `depend = erlang-wx=24.1.4-0` (instead of correct `depend = erlang-wx=24.1.4-r0`).
That malformed depend was ignored by apk during installation, which is surprising an...The `community/erlang-observer` package has in `24.1.4-r0` malformed `depend = erlang-wx=24.1.4-0` (instead of correct `depend = erlang-wx=24.1.4-r0`).
That malformed depend was ignored by apk during installation, which is surprising and leads to broken packages, e.g. aports#13405.
I wonder if it would make sense to point out the malformed dependency during build or install process?Timo TeräsTimo Teräshttps://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10805apk3: signing key generation applet2022-12-21T19:37:21ZDaniel Kolesaapk3: signing key generation appletWith the move to apk3, it will no longer be necessary to directly use `openssl` for signing, but apparently it is still necessary to use it to generate keys. Maybe apk should provide an applet to deal with that, to be able to drop direct...With the move to apk3, it will no longer be necessary to directly use `openssl` for signing, but apparently it is still necessary to use it to generate keys. Maybe apk should provide an applet to deal with that, to be able to drop direct `openssl` usage from tooling entirely?
Not entirely sure what the best interface to it would be. It probably does not have to be too user friendly, since its main purpose would be to be used from tooling (like `abuild` or others)v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10807Inconsistent `version` validation and attaching hashes2022-02-01T12:51:08ZPaul SpoorenInconsistent `version` validation and attaching hashesI'm using the v3 index and think there is an inconsistent handling of version.
For example, the version `5.10.92-1` is possible to be stored in the `--info "version:"` field, however `apk version --check` fails and `--info "provides:<pa...I'm using the v3 index and think there is an inconsistent handling of version.
For example, the version `5.10.92-1` is possible to be stored in the `--info "version:"` field, however `apk version --check` fails and `--info "provides:<packagename>=5.10.92-1"` silently ignores the invalid version.
A valid version would be `5.10.92-r1`.
This makes me wonder if it would be possible to attach a hash to a version, specifically for Kernel packages I'd like to use a hash to ensure `kmod` compatibility.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10808Progress bar flushed by script execution2022-12-21T19:37:22ZPaul SpoorenProgress bar flushed by script executionIn OpenWrt every script executes a default `post-install` script which thereby always flushes the progress bar, it's only flickering around. Would it be possible to write the package installation progress bar after printing the execution...In OpenWrt every script executes a default `post-install` script which thereby always flushes the progress bar, it's only flickering around. Would it be possible to write the package installation progress bar after printing the execution message?
```
(15/139) Installing ucode-mod-uci (0_git20220126-r1)
Executing ucode-mod-uci_0_git20220126-r1.post-install
(16/139) Installing firewall4 (0_git20220128-r1)
Executing firewall4_0_git20220128-r1.post-install
(17/139) Installing ubi-utils (2.1.4-r1)
Executing ubi-utils_2.1.4-r1.post-install
(18/139) Installing fstools (0_git20211116-r2)
Executing fstools_0_git20211116-r2.post-install
(19/139) Installing getrandom (0_git20210803-r2)
Executing getrandom_0_git20210803-r2.post-install
(20/139) Installing hostapd-common (0_git20210522-r67)
Executing hostapd-common_0_git20210522-r67.post-install
...
```v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10809unexpected end of file on package installation2022-02-25T08:43:57ZPaul Spoorenunexpected end of file on package installationAPK keeps failing to install the attached package at random. Sometime it works, sometime it doesn't. It's always this specific package, none of the other 141 packages caused any issues.
The error message is:
```
(88/142) Installing libn...APK keeps failing to install the attached package at random. Sometime it works, sometime it doesn't. It's always this specific package, none of the other 141 packages caused any issues.
The error message is:
```
(88/142) Installing libnftnl11 (1.2.1-r1)
ERROR: libnftnl11_1.2.1-r1: unexpected end of file
```
[libnftnl11_1.2.1-r1.apk](/uploads/200206686d3cac6ec887983325c91ff1/libnftnl11_1.2.1-r1.apk)
Looking at the `adbdump` I don't see anything suspicious
<details>
```
❯ ./staging_dir/host/bin/apk adbdump staging_dir/packages/ramips/libnftnl11_1.2.1-r1.apk
#%SCHEMA: 676B6370
# ADB block, size: 1180, compat: 0, ver: 0
info:
name: libnftnl11
version: 1.2.1-r1
unique-id: 361b41450a34275235653cb9125493bc60dbee17
arch: mipsel_24kc
license: GPL-2.0-or-later
origin: package/libs/libnftnl
maintainer: Steven Barth <steven@midlink.org>
installed-size: 136 KiB
depends: # 1 items
- libmnl0
provides: # 1 items
- libnftnl=0
abi: 11
paths: # 6 items
- acl:
mode: 755
user: root
group: wheel
- name: lib
acl:
mode: 755
user: root
group: wheel
- name: lib/apk
acl:
mode: 755
user: root
group: wheel
- name: lib/apk/packages
acl:
mode: 755
user: root
group: wheel
files: # 1 items
- name: libnftnl.list
acl:
mode: 644
user: root
group: wheel
size: 140
mtime: 1643932995
hash: |
b38c327a11b752bc913bb57f5017704922256a17c3718be124f49518ccc4fedc
- name: usr
acl:
mode: 755
user: root
group: wheel
- name: usr/lib
acl:
mode: 755
user: root
group: wheel
files: # 2 items
- name: libnftnl.so.11
acl:
mode: 755
user: root
group: wheel
size: 18
mtime: 1643932995
target: 00a06c69626e66746e6c2e736f2e31312e362e30
- name: libnftnl.so.11.6.0
acl:
mode: 755
user: root
group: wheel
size: 133859
mtime: 1643932995
hash: |
9e8ee573686728590cffd660edc78f859a6036181f61231375bd881141d39e11
scripts:
post-install: |
#!/bin/sh
[ "${IPKG_NO_SCRIPT}" = "1" ] && exit 0
[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
. ${IPKG_INSTROOT}/lib/functions.sh
export root="${IPKG_INSTROOT}"
export pkgname="libnftnl"
add_group_and_user
default_postinst
pre-deinstall: |
#!/bin/sh
[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
. ${IPKG_INSTROOT}/lib/functions.sh
export root="${IPKG_INSTROOT}"
export pkgname="libnftnl"
default_prerm
# sig v00 h04 57a47f38c520a78667e4c8189bd9a340304402202ac7dd628388c9c9b6db69a8a0f84043e873fb866ff081041dc77ad25f3cba590220..: UNTRUSTED signature
# data block, size: 148
# data block, size: 133867
```
</details>https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10810apk-fetch fails when cdrom repo is present2022-06-09T00:00:16ZAlexander Edlandapk-fetch fails when cdrom repo is presentran into some funky behavior when downloading packages while running from `alpine-virt-3.15.0-x86_64.iso`:
```
sed -ri 's/"1fhr"/"c1fhr"/' /sbin/setup-apkrepos # bugfix community-repo flag
setup-interfaces -ar
setup-apkrepos -1c
apk up...ran into some funky behavior when downloading packages while running from `alpine-virt-3.15.0-x86_64.iso`:
```
sed -ri 's/"1fhr"/"c1fhr"/' /sbin/setup-apkrepos # bugfix community-repo flag
setup-interfaces -ar
setup-apkrepos -1c
apk update
apk fetch -R eudev
```
this fails with the following error:
```
ERROR: unable to select packages:
/bin/sh (virtual):
provided by: busybox
required by: eudev-3.2.11_pre1-r0[/bin/sh]
udev-init-scripts-35-r0[/bin/sh]
```
however if you remove the cdrom repo, it works:
```
sed -ri /cdrom/d /etc/apk/repositories
apk fetch -R eudev
# Downloading libblkid-2.37.3-r0
# Downloading eudev-libs-3.2.11_pre1-r0
```
I noticed that `apk add` works alright, just not `apk fetch`. Bug?https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10811telegram-desktop image viewer hangs2022-02-07T13:52:49ZDocbroketelegram-desktop image viewer hangsTelegram-desktop becomes non-responsive when internal image viewer is used to view image second time. This is little curious when any image in a chat is viewed using internal image viewer it works fine, but on clinking same or another im...Telegram-desktop becomes non-responsive when internal image viewer is used to view image second time. This is little curious when any image in a chat is viewed using internal image viewer it works fine, but on clinking same or another image makes telegram non-responsive. I noticed this issue with 3.5.0 and issue is still present with 3.5.1-r0. I am using alpine edge on x86-64 system.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10812apk add with --no-commit-hooks still execute pre/post installs2022-02-08T17:54:43Zhuytran1ibmapk add with --no-commit-hooks still execute pre/post installsI am passing in the flag --no-commit-hooks but it seems the .pre-install and .post-install hooks and still being executed
```
/ # apk --version
apk-tools 2.10.5, compiled for x86_64.
/ # apk add --no-commit-hooks openresty
(1/5) Instal...I am passing in the flag --no-commit-hooks but it seems the .pre-install and .post-install hooks and still being executed
```
/ # apk --version
apk-tools 2.10.5, compiled for x86_64.
/ # apk add --no-commit-hooks openresty
(1/5) Installing openresty-zlib (1.2.11-r3)
(2/5) Installing openresty-openssl111 (1.1.1l-r0)
(3/5) Installing openresty-pcre (8.44-r0)
(4/5) Installing libgcc (9.3.0-r0)
(5/5) Installing openresty (1.19.9.1-r0)
Executing openresty-1.19.9.1-r0.pre-install
Executing openresty-1.19.9.1-r0.post-install
Executing busybox-1.31.1-r9.trigger
OK: 31 MiB in 42 packages
/ #
```https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10813enhanced structured data for copyright tracking2022-12-21T19:37:22ZAriadne Conillariadne@ariadne.spaceenhanced structured data for copyright trackingAt work, we are writing a build-tool which generates APKv3 files as output. However, we would like to capture more of the copyright/license metadata than just the `license` field of `APKBUILD`.
I propose the following:
```
copyright:
...At work, we are writing a build-tool which generates APKv3 files as output. However, we would like to capture more of the copyright/license metadata than just the `license` field of `APKBUILD`.
I propose the following:
```
copyright:
- path: "[glob mask relevant to $srcdir]"
license: "[SPDX identifier, like old `license` field]"
attestations:
- "Copyright (c) 20XX foobar"
- "Copyright (c) 20XX baz"
```
An `APKBUILD` with `license="ISC"` would then map to:
```
copyright:
- path: "*"
license: "ISC"
```
If this seems agreeable, I can work on a patch next week for this. It is related to the SBOM work, see #10780.v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10814[Question] Prefix use when install several packages2022-02-21T08:51:03Zmruncleleon[Question] Prefix use when install several packagesHi, is there a way to install multiples packages at once with the same prefix in brace expression, ex:
> php-{mysqli,xml,cli,openssl}
Result:
> / # apk add php-{mysqli,xml,cli,openssl}
> ERROR: unable to select packages:
> php-{mysqli...Hi, is there a way to install multiples packages at once with the same prefix in brace expression, ex:
> php-{mysqli,xml,cli,openssl}
Result:
> / # apk add php-{mysqli,xml,cli,openssl}
> ERROR: unable to select packages:
> php-{mysqli,xml,cli,openssl} (no such package):
> required by: world[php-{mysqli,xml,cli,openssl}]
My version: apk-tools 2.12.7, compiled for x86_64.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10815Is there a pacman-like hook for apk-tools?2022-02-14T17:11:01ZdaiajiIs there a pacman-like hook for apk-tools?https://wiki.archlinux.org/title/Pacman#Hooks
I'd like to try porting [snap-pac](https://github.com/wesbarnett/snap-pac) to enable Alpine to take automatic snapshots via [Snapper](http://snapper.io/) after the update.https://wiki.archlinux.org/title/Pacman#Hooks
I'd like to try porting [snap-pac](https://github.com/wesbarnett/snap-pac) to enable Alpine to take automatic snapshots via [Snapper](http://snapper.io/) after the update.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10816Store package filename in database2024-03-25T15:53:51ZPaul SpoorenStore package filename in databaseCurrently the filename of packages is automatically generated based on the following structure:
```
<name>-<version>.apk
```
In OpenWrt, we currently use the structure below:
```
<name>_<version>-<arch>.ipk
```
We even use script for...Currently the filename of packages is automatically generated based on the following structure:
```
<name>-<version>.apk
```
In OpenWrt, we currently use the structure below:
```
<name>_<version>-<arch>.ipk
```
We even use script for cleaning up outdated packages that specifically look for the underscore (`<name>_`) in filenames.
I'm wondering if we could simply store the filename inside the index instead of enforcing a specific structure. For example, if I only provide a single package in multiple architectures, I could just fill a single folder with `<package>-<version>-<arch>.apk` instead of maintaining a variety of subfolders.
Thoughts?v3.0https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10817licensing2022-12-21T19:32:49ZAriadne Conillariadne@ariadne.spacelicensingThere are a few minor licensing nitpicks we should clean up. As background, by far, the codebase was written by @fabled, with the majority of other contributions being @ncopa and myself, I think we have sufficient legal and moral author...There are a few minor licensing nitpicks we should clean up. As background, by far, the codebase was written by @fabled, with the majority of other contributions being @ncopa and myself, I think we have sufficient legal and moral authority to do these things, as well I think they are not really controversial.
## Lack of OpenSSL license exception
`apk-tools` is licensed as `GPL-2.0-only`. This means that even when Alpine switches to OpenSSL 3, this will not be sufficient, as the Apache license imposes additional restrictions (e.g. the software patents stuff) that are not in GPLv2. GPLv3 does add an exception allowing Apache-2 code to link to it, but the `GPL-2.0-only` license was chosen intentionally.
We can fix this by adding a license exception grant for OpenSSL. We may want to add a general exception for Apache 2.0 licensed programs as well.
## Makefile-based build system is `GPL-3.0-only`
This will likely be fixed by just removing the old build system once Muon is ready.
## `libapk` is `GPL-2.0-only`
It seems like we should relax the license on `libapk` to be LGPLv2.1. This would allow programs to link to `libapk` such as package management frontends, without worrying about the GPL, which seems ideal for encouraging further adoption of `libapk` and APK at large.
@fabled what do you think?v3.0https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10818[2.12-stable] Issues updating apk index2022-02-23T20:05:58ZKevin Daudt[2.12-stable] Issues updating apk indexOn build-edge-armhf, abuild-sign fails to update the index. From the log:
```
main built: 0
main tried: 0
main deleted: 0
main total built: 1516
main total relevant aports: 1516
main total aports: 1546
DEBUG: pa...On build-edge-armhf, abuild-sign fails to update the index. From the log:
```
main built: 0
main tried: 0
main deleted: 0
main total built: 1516
main total relevant aports: 1516
main total aports: 1546
DEBUG: path=/home/buildozer/packages//community/armhf/erlang-24.2.1-r0.apk
Deleting erlang-reltool-24.1.7-r0.apk
Deleting erlang-debugger-24.1.7-r0.apk
Deleting erlang-dialyzer-24.1.7-r0.apk
Deleting erlang-observer-24.1.7-r0.apk
Deleting erlang-wx-24.1.7-r0.apk
Deleting erlang-et-24.1.7-r0.apk
Deleting erlang-24.1.7-r0.apk
Deleting erlang-megaco-24.1.7-r0.apk
Deleting erlang-dev-24.1.7-r0.apk
Deleting erlang-odbc-24.1.7-r0.apk
Updating apk index
tar: -: Wrote only 4096 of 10240 bytes
tar: Error is not recoverable: exiting now
community built: 1
community tried: 1
community deleted: 10
community total built: 3763
community total relevant aports: 3763
community total aports: 4471
testing built: 0
testing tried: 0
testing deleted: 0
testing total built: 2176
testing total relevant aports: 2176
testing total aports: 2575
```
this possibly also affected aarch64, though not confirmed, but users reported packages with bad signatures.
```
$ apk --version
apk-tools 2.12.9, compiled for armhf.
```https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10819manage user and group creation/deletion directly2023-12-19T12:23:07ZAriadne Conillariadne@ariadne.spacemanage user and group creation/deletion directlyPresently, the majority of pre-install/post-install scripts in Alpine are doing user/group management. If apk did this instead, we could drop these scripts in the future.Presently, the majority of pre-install/post-install scripts in Alpine are doing user/group management. If apk did this instead, we could drop these scripts in the future.v3.1https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10820apk add gives "FDB format error (line 34829)"2022-03-04T11:43:51ZThomas Bleyapk add gives "FDB format error (line 34829)"Steps to reproduce:
```
docker run --rm -it alpine:3.12 sh
/ # apk add -X https://dl-cdn.alpinelinux.org/alpine/edge/testing trivy
fetch https://dl-cdn.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz
ERROR: FDB format error (...Steps to reproduce:
```
docker run --rm -it alpine:3.12 sh
/ # apk add -X https://dl-cdn.alpinelinux.org/alpine/edge/testing trivy
fetch https://dl-cdn.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz
ERROR: FDB format error (line 34829)
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
ERROR: unable to select packages:
trivy (no such package):
required by: world[trivy]
```
Using alpine:3.13, the error does not appear. Until yesterday, 3.12 was also working.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10821apk3: version --check and --test now require a database2022-03-06T16:51:21ZDaniel Kolesaapk3: version --check and --test now require a databasein apk2 this works fine:
```
$ apk version --quiet --check 5.0
$ echo $?
0
```
apk3 complains:
```
$ ./src/apk.static version --quiet --check 5.0
ERROR: Unable to read database: No such file or directory
ERROR: Failed to open apk dat...in apk2 this works fine:
```
$ apk version --quiet --check 5.0
$ echo $?
0
```
apk3 complains:
```
$ ./src/apk.static version --quiet --check 5.0
ERROR: Unable to read database: No such file or directory
ERROR: Failed to open apk database: No such file or directory
$ echo $?
99
```
I don't see any reason why these would require a database, and they are useful from packaging tooling, so I guess this is a regression?https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10822apk3: conflicting options for mkpkg result in segfaults2024-01-23T23:05:44ZDaniel Kolesaapk3: conflicting options for mkpkg result in segfaultsThe `mkpkg` applet defines `-i` as a short for `--info`, however this is already provided globally, which results in a segfault when passing e.g. `-i version:0.1-r0` (because `optarg` is `NULL`)The `mkpkg` applet defines `-i` as a short for `--info`, however this is already provided globally, which results in a segfault when passing e.g. `-i version:0.1-r0` (because `optarg` is `NULL`)https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10823apk3: attempting to pass a non-writeable location as output to mkpkg segfaults2022-03-06T14:16:38ZDaniel Kolesaapk3: attempting to pass a non-writeable location as output to mkpkg segfaultsWhen you pass an output file location that is not writeable, it will still somehow make it as far as `r = apk_ostream_close(os);`, which segfaults.When you pass an output file location that is not writeable, it will still somehow make it as far as `r = apk_ostream_close(os);`, which segfaults.https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10824apk3: conflicts are broken2022-03-07T08:41:26ZDaniel Kolesaapk3: conflicts are brokenWhen you create a package with a dependency constraint like `!foo` (i.e. via `mkpkg --info "depends:!foo"`) the package is not installable under apk3. For example, in my system:
```
=> cbuild: installing base-cbuild...
ERROR: unable to ...When you create a package with a dependency constraint like `!foo` (i.e. via `mkpkg --info "depends:!foo"`) the package is not installable under apk3. For example, in my system:
```
=> cbuild: installing base-cbuild...
ERROR: unable to select packages:
util-linux (no such package):
required by: util-linux-cbuild-2.37.2-r0[util-linux]
```
In this case, `util-linux-cbuild` has a dependency constraint `!util-linux` set, which is written in the adb, but `util-linux` package itself does not exist in the repository. This behavior worked correctly in apk2.
Another problem is that the serialization and deserialization for `mkpkg` and `adbdump` does not actually work. This appears to be unrelated to why it's not installable. I managed to fix the serialization behavior with this patch:
```
From c33c0d238ff5ac8897a5cf67111de9862f5acaf0 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sun, 6 Mar 2022 19:08:06 +0100
Subject: [PATCH] adb: fix serialization and deserialization of conflicts
Ensure not to mask away previously set APK_VERSION_CONFLICT when
serializing.
When deserializing, make sure to actually write out the conflict
flag when no version part is set.
---
src/apk_adb.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/apk_adb.c b/src/apk_adb.c
index ea27a4d..250295e 100644
--- a/src/apk_adb.c
+++ b/src/apk_adb.c
@@ -259,10 +259,17 @@ static apk_blob_t dependency_tostring(struct adb_obj *obj, char *buf, size_t buf
name = adb_ro_blob(obj, ADBI_DEP_NAME);
ver = adb_ro_blob(obj, ADBI_DEP_VERSION);
+ mask = adb_ro_int(obj, ADBI_DEP_MATCH) ?: APK_VERSION_EQUAL;
+
if (APK_BLOB_IS_NULL(name)) return APK_BLOB_NULL;
- if (APK_BLOB_IS_NULL(ver)) return name;
+ if (APK_BLOB_IS_NULL(ver)) {
+ if (mask & APK_VERSION_CONFLICT)
+ return APK_BLOB_PTR_LEN(buf,
+ snprintf(buf, bufsz, "!"BLOB_FMT,
+ BLOB_PRINTF(name)));
+ return name;
+ }
- mask = adb_ro_int(obj, ADBI_DEP_MATCH) ?: APK_VERSION_EQUAL;
return APK_BLOB_PTR_LEN(buf,
snprintf(buf, bufsz, "%s"BLOB_FMT"%s"BLOB_FMT,
(mask & APK_VERSION_CONFLICT) ? "!" : "",
@@ -295,7 +302,7 @@ static int dependency_fromstring(struct adb_obj *obj, apk_blob_t bdep)
if (!apk_blob_spn(bop, apk_spn_dependency_comparer, &bop, &bver))
goto fail;
- mask = 0;
+ mask &= APK_VERSION_CONFLICT;
for (i = 0; i < bop.len; i++) {
switch (bop.ptr[i]) {
case '<':
--
2.35.1
```
However, that does not fix the actual installation, it only fixes enough so I can see it correctly in `adbdump`:
```
depends: # 3 items
- so:libc.so
- so:libz.so.1
- !util-linux
```https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10825apk3: new script_exec_dir (lib/apk/exec) broken with initdb2022-06-03T11:41:24ZDaniel Kolesaapk3: new script_exec_dir (lib/apk/exec) broken with initdbWhen bootstrapping a new system with `--initdb`, since 62bc43d2a4d60de3ace3f385625ea8dc0ba957f3 one has to pre-create at least the `lib/apk` (`usr/lib/apk` in my usrmerged case) in order for scripts not to fail. This is because despite t...When bootstrapping a new system with `--initdb`, since 62bc43d2a4d60de3ace3f385625ea8dc0ba957f3 one has to pre-create at least the `lib/apk` (`usr/lib/apk` in my usrmerged case) in order for scripts not to fail. This is because despite that the code actually attempts to create `lib/apk/exec`, this does not exist yet (because `apk` defers creation of its state directories until later, to accommodate usrmerged systems).
It prints out a confusing error message:
```
(59/122) Installing util-linux (2.37.2-r0)
Executing util-linux-2.37.2-r0.pre-install
ERROR: il-linux-2.37.2-r0.pre-install: failed to execute: No such file or directory
```
This hints at some kind of truncation, but that is not the case; it's simply that the old fixed offset of 15 was forgotten in the error log part (this should be fixed too).
As for the solution, I am not entirely sure. It is not possible to recursively create it at this point, because it would break usrmerge-layout systems. Perhaps some heuristics for these kind of bootstrap cases?