vllama

maintainer tom_himanen · 0 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged The PKGBUILD pulls a pinned GitHub archive tarball (with a sha256sum) from the official upstream repo, which is fine. However, during build() it runs 'pip install -r requirements.txt' inside a venv, which fetches Python packages from PyPI at build time with no version pinning or integrity verification visible in the PKGBUILD itself. The requirements.txt is part of the tarball (so its content is covered by the sha256sum of the archive), but the actual PyPI packages it references are fetched dynamically without checksums. This is a real, if common, supply-chain concern: any package listed in requirements.txt could be typosquatted, compromised, or yanked/replaced on PyPI between builds. Additionally, the venv is bundled wholesale into /opt/vllama, meaning unverified third-party Python code is installed system-wide and executed as part of a systemd service. This is a genuine medium-severity supply-chain risk — not clearly malicious, but not clean either.

Triggered rules

MEDIUM pip install of an external package pip_install_external

`pip install <package>` fetches an unpinned package from PyPI at build time, outside source=() and makepkg's checksums.

  • PKGBUILD:25 venv312/bin/pip install -r requirements.txt
MEDIUM AI review llm_review

An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD pulls a pinned GitHub archive tarball (with a sha256sum) from the official upstream repo, which is fine. However, during build() it runs 'pip install -r requirements.txt' inside a venv, which fetches Python packages from PyPI at build time with no version pinning or integrity verification visible in the PKGBUILD itself. The requirements.txt is part of the tarball (so its content is covered by the sha256sum of the archive), but the actual PyPI packages it references are fetched dynamically without checksums. This is a real, if common, supply-chain concern: any package listed in requirements.txt could be typosquatted, compromised, or yanked/replaced on PyPI between builds. Additionally, the venv is bundled wholesale into /opt/vllama, meaning unverified third-party Python code is installed system-wide and executed as part of a systemd service. This is a genuine medium-severity supply-chain risk — not clearly malicious, but not clean either.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: Tom Himanen <tom.himanen@futuhima.ninja>
2pkgname=vllama
3pkgver=0.2.0
4pkgrel=5
5pkgdesc="vLLM + Ollama hybrid server - Fast inference with Ollama model management"
6arch=('x86_64')
7url="https://github.com/erkkimon/vllama"
8license=('MIT')
9depends=('python' 'ollama' 'python-pip' 'python-setuptools')
10makedepends=('python-setuptools' 'git')
11install=vllama.install
12
13_commit=40602f1e70f3ca4fd98f7f7ff77deddeeda3040b
14source=("${pkgname}-${_commit}.tar.gz::https://github.com/erkkimon/vllama/archive/${_commit}.tar.gz"
15 "vllama.service"
16 "multiuser.conf"
17 "vllama.install")
18
19build() {
20 cd "${srcdir}/${pkgname}-${_commit}"
21 # Create venv312 in package
22 python3.12 -m venv venv312
23
24 # Install dependencies in venv
25 venv312/bin/pip install -r requirements.txt
26}
27
28package() {
29 cd "${srcdir}/${pkgname}-${_commit}"
30
31 # Install main script
32 install -Dm755 vllama.py "${pkgdir}/opt/vllama/vllama.py"
33
34 # Copy venv
35 cp -r venv312 "${pkgdir}/opt/vllama/"
36
37 # Install systemd service
38 install -Dm644 "${srcdir}/vllama.service" "${pkgdir}/usr/lib/systemd/system/vllama.service"
39 install -Dm644 "${srcdir}/multiuser.conf" "${pkgdir}/etc/systemd/system/vllama.service.d/multiuser.conf"
40}
41
42sha256sums=('7664ce171d46ae02e7c61e0217c7cc73b2e13b570cb536c69826dcdd5e2b5de0'
43 '32f30f302919e881bf3205320b9f8c5dc7720738223bb035a26f856cdc9cf882'
44 '316d741d3c15533002b0607d88ac9231c72258e5e856bd470805a8ba1b9ee29f'
45 '1d84cd4dab610669264163810c15a0101750a5764ccdd37f13aab061094f23bf')
46

Scan history

Scanned at (UTC)SeverityRules
2026-08-03 00:08:14 MEDIUM 2
2026-08-02 00:16:08 MEDIUM 2
2026-08-01 00:11:18 MEDIUM 2
2026-07-31 00:14:10 MEDIUM 2
2026-07-30 00:17:23 MEDIUM 2
2026-07-29 00:25:53 MEDIUM 2
2026-07-28 00:07:28 MEDIUM 2
2026-07-27 00:24:32 MEDIUM 2
2026-07-26 00:07:32 MEDIUM 2
2026-07-25 00:13:44 MEDIUM 2
2026-07-24 00:02:28 MEDIUM 2
2026-07-23 00:14:47 MEDIUM 2
2026-07-22 00:29:32 MEDIUM 2
2026-07-21 00:24:15 MEDIUM 2
2026-07-20 00:19:49 MEDIUM 2
2026-07-19 00:17:08 MEDIUM 2
2026-07-18 00:14:48 MEDIUM 2
2026-07-17 00:06:16 MEDIUM 2
2026-07-16 00:05:41 MEDIUM 2
2026-07-15 00:09:25 MEDIUM 2

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion