yamusic
maintainer burandby
· 0 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The package downloads a prebuilt .deb from Yandex's official domain, which is plausibly the project's own release infrastructure; the source is not from a swappable personal host, and the patching is done locally on the official binary, so the risk is low despite the non-whitelisted host.
Triggered rules
LOW
AI review downgraded a static finding
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads a prebuilt .deb from Yandex's official domain, which is plausibly the project's own release infrastructure; the source is not from a swappable personal host, and the patching is done locally on the official binary, so the risk is low despite the non-whitelisted host.
1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM
source=() URL on a non-standard host
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:33
"yandex-music.deb::https://desktop.app.music.yandex.net/stable/Yandex_Music_amd64_${pkgver}.deb"
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: dmitrysvd
2
3
pkgname=yamusic
4
pkgver=5.90.0
5
pkgrel=1
6
pkgdesc="Official Yandex Music App for Linux (patched updater)"
7
arch=('x86_64')
8
url="https://music.yandex.ru/download/"
9
license=('custom:unknown')
10
provides=('yandex-music')
11
conflicts=('yandex-music')
12
depends=(
13
'gtk3'
14
'libnotify'
15
'nss'
16
'libxss'
17
'libxtst'
18
'xdg-utils'
19
'at-spi2-core'
20
'util-linux-libs'
21
'libsecret'
22
)
23
optdepends=(
24
'libappindicator-gtk3'
25
)
26
makedepends=(
27
'nodejs'
28
'asar'
29
)
30
options=('!strip')
31
32
source=(
33
"yandex-music.deb::https://desktop.app.music.yandex.net/stable/Yandex_Music_amd64_${pkgver}.deb"
34
"patch-asar-updater.sh"
35
)
36
sha256sums=(
37
'b20b43ea91ff13fdff585fc7a845375cd8a72a68c730e7465c55a052b79076c2'
38
'dea496e1bd76e6b3060583782940940adbb723b266c6e62e8c9d3824b7498d8c'
39
)
40
41
prepare() {
42
local deb_file deb_unpack data_archive rootfs app_asar
43
deb_file="$srcdir/yandex-music.deb"
44
45
if [[ ! -f "$deb_file" ]]; then
46
echo "Downloaded deb source not found: $deb_file" >&2
47
return 1
48
fi
49
50
deb_unpack="$srcdir/deb-unpack"
51
rootfs="$srcdir/rootfs"
52
rm -rf "$deb_unpack" "$rootfs"
53
mkdir -p "$deb_unpack" "$rootfs"
54
55
bsdtar -xf "$deb_file" -C "$deb_unpack"
56
57
data_archive="$(find "$deb_unpack" -maxdepth 1 -type f -name 'data.tar.*' | head -n1)"
58
if [[ -z "$data_archive" ]]; then
59
echo "Could not find data.tar.* in downloaded .deb" >&2
60
return 1
61
fi
62
63
bsdtar -xf "$data_archive" -C "$rootfs"
64
65
app_asar="$(find "$rootfs/opt" -type f -path '*/resources/app.asar' | head -n1)"
66
if [[ -z "$app_asar" ]]; then
67
echo "Could not find app.asar under /opt in extracted package" >&2
68
return 1
69
fi
70
71
bash "$srcdir/patch-asar-updater.sh" --in-place "$app_asar"
72
rm -f "${app_asar}.bak."*
73
}
74
75
package() {
76
cp -a "$srcdir/rootfs/." "$pkgdir/"
77
78
if [[ -d "$pkgdir/opt/Яндекс Музыка" ]]; then
79
mv "$pkgdir/opt/Яндекс Музыка" "$pkgdir/opt/yandex-music"
80
fi
81
82
if [[ -f "$pkgdir/usr/share/applications/yandexmusic.desktop" ]]; then
83
sed -i 's|/opt/Яндекс Музыка|/opt/yandex-music|g' "$pkgdir/usr/share/applications/yandexmusic.desktop"
84
sed -i 's|Categories=Audio;|Categories=AudioVideo;Audio;|g' "$pkgdir/usr/share/applications/yandexmusic.desktop"
85
sed -i 's|Exec="/opt/yandex-music/yandexmusic"|Exec="/opt/yandex-music/yandexmusic" --gtk-version=3|' "$pkgdir/usr/share/applications/yandexmusic.desktop"
86
fi
87
}
88
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 2 |
| 2026-08-02 00:16:08 | LOW | 2 |
| 2026-08-01 00:11:18 | LOW | 2 |
| 2026-07-31 00:14:10 | LOW | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 00:02:28 | LOW | 2 |
| 2026-07-23 00:14:47 | LOW | 2 |
| 2026-07-22 00:29:32 | LOW | 2 |
| 2026-07-21 00:24:15 | LOW | 2 |
| 2026-07-20 00:19:49 | LOW | 2 |
| 2026-07-19 00:17:08 | LOW | 2 |
| 2026-07-18 00:14:48 | LOW | 2 |
| 2026-07-17 00:06:16 | LOW | 2 |
| 2026-07-16 00:05:41 | LOW | 2 |
| 2026-07-15 00:09:25 | LOW | 2 |