linkandroid-git
The package builds from a public GitHub repository and uses a Chinese npm mirror for dependencies, which is a common practice in China to improve download speeds; the mirror is not inherently malicious, and the source code is openly auditable.
Triggered rules
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 builds from a public GitHub repository and uses a Chinese npm mirror for dependencies, which is a common practice in China to improve download speeds; the mirror is not inherently malicious, and the source code is openly auditable.
1 higher static finding superseded - not the current verdict (shown for transparency)
install_untrusted_index
An install command is pointed at a custom package index / registry on a non-allowlisted host (--index-url / --registry / --extra-index-url), a classic dependency-confusion vector.
-
PKGBUILD:45
npm config set registry https://registry.npmmirror.com
PKGBUILD
1 offending line(s) highlighted# Contributor MYT1 <MYT1 @ YAHOO.com>
pkgname=linkandroid-git
_pkgname=LinkAndroid
pkgdesc="Easily project Android screen to PC"
pkgver=20241223.0706be2
pkgrel=1
arch=('x86_64' 'arm64')
url=https://linkandroid.com/
licence=(GPL-3.0)
depends=('hicolor-icon-theme'
'gtk3'
'libnotify'
'nss'
'libxss'
'libxtst'
'xdg-utils'
'at-spi2-core'
'util-linux-libs'
'libsecret'
'libappindicator-gtk3'
"electron${_electronversion}"
"ffmpeg")
makedepends=('asar'
'npm'
'nvm'
'pnpm'
)
conflicts=("${pkgname%-git}"
"${pkgname%-git}-bin"
)
source=("git+https://github.com/modstart-lib/linkandroid.git")
sha256sums=('SKIP')
_electronversion=33
_nodeversion=23
pkgver(){
cd "${srcdir}/${pkgname%-git}"
# Commit date + short rev
echo $(TZ=UTC git show -s --pretty=%cd --date=format-local:%Y%m%d HEAD).$(git rev-parse --short HEAD)
}
prepare(){
npm config set registry https://registry.npmmirror.com
git -C "${srcdir}/${pkgname%-git}" clean -dfx
cd "${srcdir}/${pkgname%-git}"
npm install
}
build(){
cd "${srcdir}/${pkgname%-git}"
gendesk -q -f -n --pkgname="${pkgname%-git}" --pkgdesc="${pkgdesc}" --categories="Utility" --name="${_pkgname}" --exec="${pkgname%-git} %U" --comment="Link android to PC easily" --icon="${pkgname%-git}"
sed -i '114,120d' electron-builder.json5
npm run build:linux --dir
}
package(){
_arch=$(node -e "os=require('os'); console.log(os.arch());")-
if [ ${_arch}==x64- ]
then
_arch=""
fi
cd "${srcdir}/${pkgname%-git}/dist-release/linux-unpacked"
mkdir -p "${pkgdir}/opt/${pkgname%-git}"
cp -r * "${pkgdir}/opt/${pkgname%-git}"
mkdir -p "${pkgdir}/usr/bin"
ln -s "/opt/${pkgname%-git}/${pkgname%-git}" "${pkgdir}/usr/bin/${pkgname%-git}"
sed -i '5i\Name[zh_CN]=安卓投屏' "${srcdir}/${pkgname%-git}/${pkgname%-git}.desktop"
install -Dm644 "${srcdir}/${pkgname%-git}/${pkgname%-git}.desktop" "${pkgdir}/usr/share/applications/${pkgname%-git}.desktop"
install -Dm644 "${srcdir}/${pkgname%-git}/dist/logo.svg" "${pkgdir}/usr/share/icons/hicolor/scalable/apps/${pkgname%-git}.svg"
install -Dm644 "${srcdir}/${pkgname%-git}/dist/logo-white.svg" "${pkgdir}/usr/share/pixmaps/${pkgname%-git}.svg"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 00:03:17 | Low | 2 |
| 2026-09-15 00:25:31 | Low | 2 |
| 2026-09-14 00:27:57 | Low | 2 |
| 2026-09-13 00:19:54 | Low | 2 |
| 2026-09-12 00:25:17 | Low | 2 |
| 2026-09-11 00:19:22 | Low | 2 |
| 2026-09-10 00:22:44 | Low | 2 |
| 2026-09-09 00:04:09 | Low | 2 |
| 2026-09-08 00:18:08 | Low | 2 |
| 2026-09-07 00:30:15 | Low | 2 |
| 2026-09-06 00:17:06 | Low | 2 |
| 2026-09-05 00:16:27 | Low | 2 |
| 2026-09-04 00:03:13 | Low | 2 |
| 2026-09-03 00:15:47 | Low | 2 |
| 2026-09-02 00:02:31 | Low | 2 |
| 2026-09-01 00:11:19 | Low | 2 |
| 2026-08-31 00:19:57 | Low | 2 |
| 2026-08-30 00:04:14 | Low | 2 |
| 2026-08-29 00:29:17 | Low | 2 |