Enumerates non-free packages (that is to say, under licenses not considered by OSI, FSF, and/or the DFSG to be Free Software) installed on an Arch Linux system. See license_finder.py
for the license categorization.
A reimplementation of the original vrms
program from Debian for Arch's Pacman and ALPM.
List non-free packages (and count currently ambiguous/uncheckable packages, see Caveats)
vrms
Check all packages in locally synced package repositories (typically does not include the AUR), not just locally installed packages:
vrms --global-repos
Easiest way is to use the "official" AUR package: vrms-arch-git
Build a package out of local checkout of this source code on Arch:
git clone https://github.com/gardenappl/vrms-arch
cd vrms-arch
makepkg -si --noextract
This works because makepkg
treats src/
as the package source directory, while the PKGBUILD
contains instructions to cd ..
where the build command can find the needed setup.cfg
and .toml
files.
A great deal of packages in Arch, both free and non-free, use custom
as the license field value. As per the Arch package guidelines, this indicates that the package does not use an exact copy of one of the licenses included in the core licenses
package, which provides well-known free licenses at /usr/share/licenses/common
.
Many commonly used Free Software licenses aren't included in the common licenses
package because they require editing to be applied to a given project, such as the BSD and MIT licenses.
However, the guidelines go on to say that the license field can be disambiguated in the form of custom: MIT
or custom: ZLIB
. Sadly, there are many packages in the Arch Linux repositories that specify only custom
.
You can list all "ambiguous" packages with:
vrms --list-unknowns
If you're certain that these packages are FOSS, you may add them to the "disambiguation database" and submit a pull request.
Many packages also carelessly use variant naming of well-known licenses (GPL-2
, GPLv2
, etc.) in spite of the package guidelines, causing further confusion. vrms
will try to "clean up" variant names by removing dashes, underscores, turning all letters into lowercase, etc., however, this is not a perfect solution.
The same problems apply to AUR packages.