whohas – Command-line utility for cross-distro, cross-repository package search
102 points
6 hours ago
| 11 comments
| github.com
| HN
chb
6 hours ago
[-]
First I saw that it's written in Perl. Then I realized that the last release was 11 years ago and that the repository domains are hardcoded in the one-file script.
reply
thilog
2 hours ago
[-]
The last commit was four years ago.
reply
Intralexical
5 hours ago
[-]
Does it still work, though?

Where else would you put the repository domains?

reply
halJordan
3 hours ago
[-]
Are you asking if this tool can find something on ubuntu 26.04 when the urls it has were hardcoded 11 years ago?
reply
yjftsjthsd-h
18 minutes ago
[-]
The site it hardcodes is https://packages.ubuntu.com, so yes I would expect it to work fine
reply
c-hendricks
2 hours ago
[-]
The URL to search for packages in Ubuntu for example hasn't changed to my knowledge. Are you assuming it's only looking for packages in releases that were current at the time?
reply
pimlottc
3 hours ago
[-]
In about a hundred or so separate microservices, of course…
reply
c-hendricks
3 hours ago
[-]
Shame Homebrew for Linux is getting no love from any of the tools / lists mentioned here.

Since switching to that and flatpak my distro choice is "what sticks closest to the upstream of [my preferred DE]"

reply
dan15
1 hour ago
[-]
Do Linux users actually use Homebrew day to day? My impression of it was that it's mostly for MacOS users that want to keep doing things the same way instead of learning the Linux way (using the OS package manager).
reply
ElectricalUnion
6 minutes ago
[-]
In bazzite/Fedora Silverblue, it's the expected way non-GUI packages are installed to the host system. The other way is toolbox/distrobox (rootless containers tightly integrated with the host).
reply
data-ottawa
8 minutes ago
[-]
It’s the default package manager in Bazzite and is once of the most functional packagr managers on atomic fedora.
reply
hparadiz
4 hours ago
[-]
I've been working on a GUI task manager for Linux and I've been wanting to put a "Funding" or ownership meta data next to the process or process group in the view so people can know where the upstream code lives, how to support the project, and what organizational unit "owns" that process.

So I actually vibe coded a script that does this against a sqlite db I've been considering to bundle with my task manager so it can know this stuff on the fly.

But yea this is a key missing component in Linux user space. Windows let's you encode organizational stuff into an exe but on Linux binaries don't really have that.

reply
nikisweeting
1 hour ago
[-]
Oh nice, I just implemented something like this for installing from any package manager uv-style https://abxpkg.archivebox.io/, but I haven't added a "search" command yet, I should add that!
reply
Fnoord
5 hours ago
[-]
Latest release: May 19, 2015

Abandoned, but forkable (since FOSS), and a decent idea.

Probably nowadays this gets done in Node, parsing the package search websites. Preferably, this would be done via an API though.

reply
RunningDroid
5 hours ago
[-]
> Probably nowadays this gets done in Node, parsing the package search websites. Preferably, this would be done via an API though.

Repology provides an API but it's unstable: https://repology.org/api/v1

reply
lschueller
5 hours ago
[-]
Yes, agree. The idea and concept is cool! Imo worth it to keep an eye on it and play with it.

First thought, which came to my mind, was a security use case to get it to a point for sbom handling and tracking. In particular, respective to all the recent package vulnerabilities.

reply
dilawar
4 hours ago
[-]
There is also https://pkgs.org ..
reply
pxc
3 hours ago
[-]
Who has?

Nixpkgs has. :)

Nowadays the only search like this I need to run is

  nix-locate -r 'bin/foo$'
It would be nice to have a CLI alternative to Repology, though.
reply
sestep
11 minutes ago
[-]
Another great tool, built on top of nix-locate, is comma. So for any program foo, if you have foo installed, you can run it like this:

  foo
And if you don't have it installed, you can run it (without installing!) like this:

  , foo
And if multiple different packages provide a program named bin/foo then comma lets you interactively choose the one you want, and remembers your choice so you don't have to specify again unless you choose to via the -d flag.
reply
deferredgrant
54 minutes ago
[-]
This is exactly the kind of boring CLI tool that earns its keep. Package names and availability differ just enough across distros to waste time in tiny annoying increments.
reply
yjftsjthsd-h
5 hours ago
[-]
This would pair nicely with distrobox or Bedrock Linux:)
reply
peter_d_sherman
6 hours ago
[-]
Related:

List of linux package search databases:

https://github.com/sxiii/awesome-package-search

reply
bblb
4 hours ago
[-]
This kind of busy work should suit an AI agent:

Go and find me all the repolists and package/software metadata for any distro and OS ever released. Write the results to a local SQLite. Incrementally update, but don't hammer the sources to death. Provide a web UI and CLI.

reply
embedding-shape
4 hours ago
[-]
Or you know, you could do that with a ~100 long script. You don't have to use LLMs for everything, especially when you're not dealing with freeform text at all, use data types and data structures, we've created the concepts for a reason.
reply
bblb
3 hours ago
[-]
Sure. But then I would have to use my brain to actually write code. I thought we were past that already. Also, if it's an agent that keeps scouring the net autonomously for more distros, then I wouldn't have to update the sources manually on my 100 line script.
reply