eusoft-eudic-bin
The package downloads a prebuilt AppImage from the official vendor's static domain, which is plausible for the project; the AppImage is extracted and repackaged locally, but this is standard for AppImage packaging and poses no additional risk.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads a prebuilt AppImage from the official vendor's static domain, which is plausible for the project; the AppImage is extracted and repackaged locally, but this is standard for AppImage packaging and poses no additional risk.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:34
"${pkgname%-bin}-${pkgver}-x86_64.AppImage::https://static.eudic.net/pkg/${_pkgname}.AppImage"
PKGBUILD
1 offending line(s) highlighted# Maintainer: zxp19821005 <zxp19821005 at 163 dot com> / ihipop <ihipop at gmail dot com>
_pkgname=eudic
pkgname="eusoft-${_pkgname}-bin"
pkgver=26.9.1
pkgrel=2
pkgdesc="Authoritative English dictionary software, an essential tool for English learners.权威的英语词典软件,英语学习者必备的工具."
arch=('x86_64')
url="https://www.eudic.net/v4/en/app/eudic"
license=('LicenseRef-custom')
provides=("${_pkgname}=${pkgver}")
conflicts=("${pkgname%-bin}" "${_pkgname}")
depends=(
'nss'
'alsa-lib'
'libdrm'
'mesa'
'harfbuzz'
'fontconfig'
'libx11'
'libxcb'
'glib2'
'zlib'
'gdk-pixbuf2'
'pipewire-jack'
'libusb'
'fribidi'
'pango'
)
options=(
'!strip'
'!emptydirs'
)
source=(
"${pkgname%-bin}-${pkgver}-x86_64.AppImage::https://static.eudic.net/pkg/${_pkgname}.AppImage"
"LICENSE.html"
"${pkgname%-bin}.sh"
)
sha256sums=('7839456abede4b8a47cacf2d3fcf24ce25c4296e305f9618920bd83cc21c83a6'
'89862f4074e530896863738bf9d49c03c8d0cd0f6a543d4ccc1cdc53e8f83a24'
'201a36e0ee0aa94382edf92857d19862c819bb0878f367cdbbf23f2785223031')
pkgver() {
cat "${srcdir}/.pkgver" 2>/dev/null || echo "${pkgver}"
}
prepare() {
sed -i -e "
s/@appname@/${pkgname%-bin}/g
s/@runname@/${_pkgname}/g
" "${srcdir}/${pkgname%-bin}.sh"
chmod +x "${srcdir}/${pkgname%-bin}-${pkgver}-${CARCH}.AppImage"
rm -rf "${srcdir}/squashfs-root"
"${srcdir}/${pkgname%-bin}-${pkgver}-${CARCH}.AppImage" --appimage-extract > /dev/null
grep "X-AppImage-Version" "${srcdir}/squashfs-root/default.desktop" | sed "s/X-AppImage-Version=//g" > "${srcdir}/.pkgver"
sed -i -e "
s/\/usr\/share\/${_pkgname}\/AppRun/env QT_AUTO_SCREEN_SCALE_FACTOR=1 QT_IM_MODULE=fcitx QT_QPA_PLATFORM=\"xcb\" ${pkgname%-bin}/g
s/Icon=com.eusoft.${_pkgname}/Icon=${pkgname%-bin}/g
" "${srcdir}/squashfs-root/default.desktop"
ln -sf "/usr/lib/qt/plugins/platforminputcontexts/libfcitx"*.so "${srcdir}/squashfs-root/plugins/platforminputcontexts/"
}
package() {
install -Dm755 "${srcdir}/${pkgname%-bin}.sh" "${pkgdir}/usr/bin/${pkgname%-bin}"
install -Dm755 -d "${pkgdir}/usr/lib/${pkgname%-bin}"
cp -a "${srcdir}/squashfs-root/." "${pkgdir}/usr/lib/${pkgname%-bin}"
install -Dm644 "${srcdir}/squashfs-root/default.desktop" "${pkgdir}/usr/share/applications/${pkgname%-bin}.desktop"
install -Dm644 "${srcdir}/squashfs-root/com.eusoft.${_pkgname}.png" "${pkgdir}/usr/share/pixmaps/${pkgname%-bin}.png"
install -Dm644 "${srcdir}/LICENSE.html" -t "${pkgdir}/usr/share/licenses/${pkgname}"
}
Changes since previous scan
--- PKGBUILD @ 2026-10-30 00:29+++ PKGBUILD @ 2026-11-01 00:21@@ -2,93 +2,54 @@ _pkgname=eudic pkgname="eusoft-${_pkgname}-bin" pkgver=26.9.1-pkgrel=1-pkgdesc="Authoritative English dictionary software, an essential tool for English learners.(Prebuilt version)权威的英语词典软件,英语学习者必备的工具."+pkgrel=2+pkgdesc="Authoritative English dictionary software, an essential tool for English learners.权威的英语词典软件,英语学习者必备的工具." arch=('x86_64') url="https://www.eudic.net/v4/en/app/eudic" license=('LicenseRef-custom') provides=("${_pkgname}=${pkgver}") conflicts=("${pkgname%-bin}" "${_pkgname}") depends=(- 'qt5-base'- 'qt5-multimedia'- 'qt5-webengine'- 'qt5-svg'- 'qt5-serialport'- 'qt5-speech'- 'qt5-websockets'- 'qt5-webchannel' 'nss' 'alsa-lib' 'libdrm' 'mesa' 'harfbuzz'- 'libthai' 'fontconfig' 'libx11' 'libxcb'- 'libxext'- 'libxrender'- 'libxfixes'- 'libxcursor'- 'libxi'- 'libxrandr'- 'libxss'- 'libxtst'- 'libxau'- 'libxdmcp' 'glib2' 'zlib'- 'bzip2'- 'libpng'- 'libjpeg-turbo'- 'freetype2'- 'libglvnd'- 'libpulse'- 'libdbus'- 'libxkbcommon'- 'curl'- 'icu'- 'libxml2'+ 'gdk-pixbuf2'+ 'pipewire-jack'+ 'libusb'+ 'fribidi'+ 'pango' ) options=( '!strip' '!emptydirs' ) source=(- "${pkgname%-bin}-${pkgver}-x86_64.AppImage::https://static.eudic.net/pkg/${_pkgname}.AppImage?v=${pkgver}"+ "${pkgname%-bin}-${pkgver}-x86_64.AppImage::https://static.eudic.net/pkg/${_pkgname}.AppImage" "LICENSE.html" "${pkgname%-bin}.sh" ) sha256sums=('7839456abede4b8a47cacf2d3fcf24ce25c4296e305f9618920bd83cc21c83a6' '89862f4074e530896863738bf9d49c03c8d0cd0f6a543d4ccc1cdc53e8f83a24'- 'f8da4fa48422d34fd5e2f8e1e87c9f52b66a7308a88855c39ae03599209dcbaf')+ '201a36e0ee0aa94382edf92857d19862c819bb0878f367cdbbf23f2785223031') pkgver() {- cd "${srcdir}/squashfs-root"- grep "X-AppImage-Version" default.desktop | sed "s/X-AppImage-Version=//g"+ cat "${srcdir}/.pkgver" 2>/dev/null || echo "${pkgver}" } prepare() { sed -i -e " s/@appname@/${pkgname%-bin}/g s/@runname@/${_pkgname}/g " "${srcdir}/${pkgname%-bin}.sh"- if [ ! -x "${srcdir}/${pkgname%-bin}-${pkgver}-${CARCH}.AppImage" ];then- chmod +x "${srcdir}/${pkgname%-bin}-${pkgver}-${CARCH}.AppImage"- fi- if [ -d "${srcdir}/squashfs-root" ];then- rm -rf "${srcdir}/squashfs-root"- fi+ chmod +x "${srcdir}/${pkgname%-bin}-${pkgver}-${CARCH}.AppImage"+ rm -rf "${srcdir}/squashfs-root" "${srcdir}/${pkgname%-bin}-${pkgver}-${CARCH}.AppImage" --appimage-extract > /dev/null- # Remove bundled libraries - use system components instead- _libdir="${srcdir}/squashfs-root/lib"- find "${_libdir}" -maxdepth 1 -name "libQt5*.so*" -delete- find "${_libdir}" -maxdepth 1 -regex ".*/lib\(X11\|Xau\|Xdmcp\|Xext\|Xrender\|Xfixes\|Xcursor\|Xi\|Xrandr\|Xss\|Xtst\|xcb\).*\.so.*" -delete- find "${_libdir}" -maxdepth 1 -regex ".*/lib\(GL\|EGL\|drm\|gbm\|wayland\).*\.so.*" -delete- find "${_libdir}" -maxdepth 1 -regex ".*/lib\(asound\|pulse\).*\.so.*" -delete- find "${_libdir}" -maxdepth 1 -regex ".*/lib\(ssl\|crypto\|nss3\|nssutil3\|smime3\|nspr4\|plds4\|plc4\).*\.so.*" -delete- find "${_libdir}" -maxdepth 1 -regex ".*/lib\(z\|bz2\).*\.so.*" -delete- find "${_libdir}" -maxdepth 1 -regex ".*/lib\(fontconfig\|freetype\|harfbuzz\|thai\|datrie\|xkbcommon\).*\.so.*" -delete- find "${_libdir}" -maxdepth 1 -regex ".*/lib\(glib-2.0\|dbus-1\|icu\|xml2\|curl\|stdc\+\+\|gcc_s\).*\.so.*" -delete+ grep "X-AppImage-Version" "${srcdir}/squashfs-root/default.desktop" | sed "s/X-AppImage-Version=//g" > "${srcdir}/.pkgver" sed -i -e " s/\/usr\/share\/${_pkgname}\/AppRun/env QT_AUTO_SCREEN_SCALE_FACTOR=1 QT_IM_MODULE=fcitx QT_QPA_PLATFORM=\"xcb\" ${pkgname%-bin}/g s/Icon=com.eusoft.${_pkgname}/Icon=${pkgname%-bin}/gScan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Low | 2 |
| 2026-10-31 00:07:41 | Low | 2 |
| 2026-10-30 11:55:28 | Medium | 1 |
| 2026-10-30 00:29:30 | Medium | 2 |
| 2026-10-29 00:13:55 | Medium | 2 |
| 2026-10-28 00:06:54 | Medium | 2 |
| 2026-10-27 00:23:28 | Medium | 2 |
| 2026-10-26 00:12:40 | Medium | 2 |
| 2026-10-25 00:20:48 | Medium | 2 |
| 2026-10-24 00:14:55 | Medium | 2 |
| 2026-10-23 00:02:19 | Medium | 2 |
| 2026-10-22 00:13:10 | Medium | 2 |
| 2026-10-21 00:12:50 | Medium | 2 |
| 2026-10-20 00:10:31 | Medium | 2 |
| 2026-10-19 00:03:55 | Medium | 2 |
| 2026-10-18 00:06:55 | Medium | 2 |
| 2026-10-17 00:21:55 | Medium | 2 |
| 2026-10-16 00:12:47 | Medium | 2 |
| 2026-10-15 00:28:05 | Medium | 2 |
| 2026-10-14 00:06:47 | Medium | 2 |