# Install entr with Homebrew, apk, apt, dnf, MacPorts, Nix, pacman, zypper

Run arbitrary commands when files change. Version 5.8 via Homebrew; verified from local package data.

## Install

```sh
sudo av install brew:entr
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install entr
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install entr
```

  Evidence: MacPorts ports tree: sysutils/entr/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- apk (92%):

```sh
sudo apk add entr
```

  Evidence: Alpine Linux edge package indexes: entr from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz

- Debian apt (92%):

```sh
sudo apt install entr
```

  Evidence: Debian stable package indexes: entr from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz

- dnf (92%):

```sh
sudo dnf install entr
```

  Evidence: Fedora Rawhide package metadata: entr from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst

- Nix (92%):

```sh
nix profile install nixpkgs#entr
```

  Evidence: nixpkgs package indexes: pkgs/by-name/en/entr/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

- pacman (92%):

```sh
sudo pacman -S entr
```

  Evidence: Arch Linux sync databases: entr from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz

- zypper (92%):

```sh
sudo zypper install entr
```

  Evidence: openSUSE Tumbleweed package metadata: entr from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst

## Package facts

- **Package key:** brew:entr
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/entr>
- **Version:** 5.8
- **Source summary:** Run arbitrary commands when files change
- **Homepage:** <https://eradman.com/entrproject/>
- **Repository:** <https://github.com/eradman/entr>
- **Upstream docs:** <https://eradman.com/entrproject>
- **License:** ISC
- **Source archive:** <https://eradman.com/entrproject/code/entr-5.8.tar.gz>
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- entr (cli)
- entr (alias)

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 5.8
- Local data: ok
- Upstream repository: https://eradman.com/entrproject/
- info: No package-manager update timestamp was available.
- info: Release/tag comparison is only available for GitHub repositories.
## Project history and usage

entr is a small Unix command that runs arbitrary commands when input files change. Its appeal comes from staying close to shell pipelines: users pipe a file list into `entr`, and the tool uses kqueue or inotify to avoid polling.

### Project history

The README describes entr as an Event Notify Test Runner written to facilitate rapid feedback on the command line. Its implementation deliberately relies on native operating-system event facilities, using kqueue on BSD/macOS-style systems and inotify on Linux.

The release history shows steady maintenance across portability, process-control, and file-notification edge cases. Version 4.3 in 2019 moved hosting from Bitbucket to GitHub and replaced Mercurial with Git in its system-test workflow, a useful marker in the project's packaging history.

### Adoption history

entr is broadly packaged for Unix-like systems. The input package facts list Alpine, Homebrew, Debian, Fedora, MacPorts, Nix, Arch, Ubuntu, and openSUSE package names, and Homebrew formula analytics showed thousands of annual installs during this run.

Its adoption is helped by having no project-specific build system assumptions: examples use standard shell pipelines with `ls`, `find`, `make`, `psql`, Node, Ruby, and web servers, so it fits into many language ecosystems without becoming part of any one of them.

### How it is used

Common uses include rebuilding a project when source files change, running tests after successful builds, restarting a development server, clearing a terminal before command output, and re-running database scripts. The web documentation explains restart mode, directory watching for new files, status filters, and the `/_` placeholder for the changed file.

entr's design leaves file discovery to other tools and command execution to the shell. That keeps the package small, but it also means users compose it with `find`, `ls`, `ag`, `ack`, `make`, or language-specific commands depending on the project.

### Why package nerds care

entr is a classic package-manager tool: tiny, portable, scriptable, and more powerful because it composes with everything else. It occupies the space between ad hoc shell loops and heavier file-watcher daemons, which is why it shows up in many Unix package collections.

For maintainers, the interesting bits are platform event semantics and terminal/process behavior, not dependency management. The NEWS file is mostly a chronicle of inotify, kqueue, signals, file limits, child processes, and terminal handling.

### Timeline

- 2015: 3.x releases document directory watching and release-number display.
- 2018: 4.0 refines restart mode and terminal restoration.
- 2019: 4.3 moves hosting from Bitbucket to GitHub and switches test workflow dependency from Mercurial to Git.
- 2020: 4.4 adds a single inotify queue and an inotify workaround mode for limited platforms.
- 2021: 5.0 ships, continuing Linux and macOS event-handling refinements.
- 2026: 5.8 adds a help flag, symlink monitoring changes, and more file-limit handling on macOS.

### Related projects

- entr is often compared operationally with file-watcher tools, test runners, and reloaders, but it remains intentionally shell-oriented.
- Its documentation explicitly suggests pairing it with source listing tools such as ag or ack and build commands such as make.

### Sources

- <https://eradman.com/entrproject>
- <https://github.com/eradman/entr/blob/master/README.md>
- <https://github.com/eradman/entr/blob/master/NEWS>
- <https://formulae.brew.sh/formula/entr>


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals

## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** entr
- **Version Scheme:** 0
- **Revision:** 0
- **Head Version:** HEAD
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** head, stable

## Other Package-Manager Records

- Debian apt - entr - 5.7-1: normalized package name match | Debian stable package indexes: entr from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | Run arbitrary commands when files change | https://eradman.com/entrproject/
- Nix - entr: normalized package name match | nixpkgs package indexes: pkgs/by-name/en/entr/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- Ubuntu apt - entr - 5.5-1: normalized package name match | Ubuntu 24.04 LTS package indexes: entr from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | Run arbitrary commands when files change | https://eradman.com/entrproject/
- apk - entr - 5.8-r0: normalized package name match | Alpine Linux edge package indexes: entr from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Event Notify Test Runner: Run arbitrary commands when files change | https://eradman.com/entrproject
- apk - entr-doc - 5.8-r0: normalized package name match | Alpine Linux edge package indexes: entr-doc from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Event Notify Test Runner: Run arbitrary commands when files change (documentation) | https://eradman.com/entrproject
- dnf - entr - 5.8-1.fc45: normalized package name match | Fedora Rawhide package metadata: entr from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Run arbitrary commands when files change | http://eradman.com/entrproject/
- pacman - entr - 5.8-1: normalized package name match | Arch Linux sync databases: entr from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz | Run arbitrary commands when files change | http://eradman.com/entrproject
- zypper - entr - 5.8-1.2: normalized package name match | openSUSE Tumbleweed package metadata: entr from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | A utility for running arbitrary commands when files change | https://eradman.com/entrproject/
- MacPorts - entr: normalized package name match | MacPorts ports tree: sysutils/entr/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1


## Related links

- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Text processing packages](https://www.automicvault.com/pkg/text-processing-tools/) - Matched text, document, or structured-data processing metadata.
- [Developer build packages](https://www.automicvault.com/pkg/developer-build-tools/) - Matched build, compiler, generator, or developer workflow metadata.
- [Networking and protocol packages](https://www.automicvault.com/pkg/networking-protocol-tools/) - Matched network, protocol, or remote-service metadata.
- [expect](https://www.automicvault.com/pkg/brew/expect/) - Shares av.db curated category or tags: automation, cli, developer-tools, testing.
- [gaze](https://www.automicvault.com/pkg/brew/gaze/) - Shares av.db curated category or tags: automation, cli, developer-tools, file-watcher.
- [robot-framework](https://www.automicvault.com/pkg/brew/robot-framework/) - Shares av.db curated category or tags: automation, cli, developer-tools, testing.
- [watchexec](https://www.automicvault.com/pkg/brew/watchexec/) - Shares av.db curated category or tags: automation, cli, developer-tools, file-watcher.
- [wgo](https://www.automicvault.com/pkg/brew/wgo/) - Shares av.db curated category or tags: automation, cli, developer-tools, file-watcher.
- [ahoy](https://www.automicvault.com/pkg/brew/ahoy/) - Shares av.db curated category or tags: automation, cli, developer-tools.
- [clive](https://www.automicvault.com/pkg/brew/clive/) - Shares av.db curated category or tags: automation, cli, developer-tools.
- [cmdshelf](https://www.automicvault.com/pkg/brew/cmdshelf/) - Shares av.db curated category or tags: automation, cli, developer-tools.

## Combined YAML source

View the package source record on GitHub. [combined/entr.yml](https://github.com/automic-vault/db/blob/main/combined/entr.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
