PURL

PURL is a specification for encoding packages for various ecosystems (NPM, NuGet, Debian, etc) into a unified URL.

Some examples (from their website):

  • pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
  • pkg:docker/cassandra@sha256:244fd47e07d1004f0aed9c
  • pkg:gem/jruby-launcher@1.1.2?platform=java
  • pkg:golang/google.golang.org/genproto#googleapis/api/annotations
  • pkg:maven/org.apache.xmlgraphics/batik-anim@1.9.1?repository_url=repo.spring.io%2Frelease&packaging=sources
  • pkg:npm/%40angular/animation@12.3.1
  • pkg:nuget/EnterpriseLibrary.Common@6.0.1304
  • pkg:pypi/django@1.11.1
  • pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25
  • pkg:rpm/opensuse/curl@7.56.1-1.1?arch=i386&distro=opensuse-tumbleweed

Posts

  • 2026-01-04 Other Smarter People - I found another specification for representing identifiers that is better supported, has more attention, and covers most of the basics I need to.