# Install libnl with Homebrew, Nix, pacman

Netlink Library Suite. Version 3.12.0 via Homebrew; verified from local package data.

## Install

```sh
sudo av install brew:libnl
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install libnl
```

  Evidence: local Homebrew formula metadata

### Linux

- Nix (92%):

```sh
nix profile install nixpkgs#libnl
```

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

- pacman (92%):

```sh
sudo pacman -S libnl
```

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

## Package facts

- **Package key:** brew:libnl
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/libnl>
- **Version:** 3.12.0
- **Source summary:** Netlink Library Suite
- **Homepage:** <https://github.com/thom311/libnl>
- **Repository:** <https://github.com/thom311/libnl>
- **Upstream docs:** <https://github.com/thom311/libnl/tree/main/doc>
- **License:** LGPL-2.1-or-later
- **Source archive:** <https://github.com/thom311/libnl/releases/download/libnl3_12_0/libnl-3.12.0.tar.gz>
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- genl-ctrl-list (cli)
- idiag-socket-details (cli)
- nf-ct-add (cli)
- nf-ct-events (cli)
- nf-ct-list (cli)
- nf-exp-add (cli)
- nf-exp-delete (cli)
- nf-exp-list (cli)
- nf-log (cli)
- nf-monitor (cli)
- nf-queue (cli)
- nl-addr-add (cli)
- nl-addr-delete (cli)
- nl-addr-list (cli)
- nl-class-add (cli)
- nl-class-delete (cli)
- nl-class-list (cli)
- nl-classid-lookup (cli)
- nl-cls-add (cli)
- nl-cls-delete (cli)
- nl-cls-list (cli)
- nl-fib-lookup (cli)
- nl-link-enslave (cli)
- nl-link-ifindex2name (cli)
- nl-link-list (cli)
- nl-link-name2ifindex (cli)
- nl-link-release (cli)
- nl-link-set (cli)
- nl-link-stats (cli)
- nl-list-caches (cli)
- nl-list-sockets (cli)
- nl-monitor (cli)
- nl-neigh-add (cli)
- nl-neigh-delete (cli)
- nl-neigh-list (cli)
- nl-neightbl-list (cli)
- nl-nh-list (cli)
- nl-pktloc-lookup (cli)
- nl-qdisc-add (cli)
- nl-qdisc-delete (cli)
- nl-qdisc-list (cli)
- nl-route-add (cli)
- nl-route-delete (cli)
- nl-route-get (cli)
- nl-route-list (cli)
- nl-rule-list (cli)
- nl-tctree-list (cli)
- nl-util-addr (cli)
- genl-ctrl-list (alias)
- idiag-socket-details (alias)
- nf-ct-add (alias)
- nf-ct-events (alias)
- nf-ct-list (alias)
- nf-exp-add (alias)
- nf-exp-delete (alias)
- nf-exp-list (alias)
- nf-log (alias)
- nf-monitor (alias)
- nf-queue (alias)
- nl-addr-add (alias)
- nl-addr-delete (alias)
- nl-addr-list (alias)
- nl-class-add (alias)
- nl-class-delete (alias)
- nl-class-list (alias)
- nl-classid-lookup (alias)
- nl-cls-add (alias)
- nl-cls-delete (alias)
- nl-cls-list (alias)
- nl-fib-lookup (alias)
- nl-link-enslave (alias)
- nl-link-ifindex2name (alias)
- nl-link-list (alias)
- nl-link-name2ifindex (alias)
- nl-link-release (alias)
- nl-link-set (alias)
- nl-link-stats (alias)
- nl-list-caches (alias)
- nl-list-sockets (alias)
- nl-monitor (alias)
- nl-neigh-add (alias)
- nl-neigh-delete (alias)
- nl-neigh-list (alias)
- nl-neightbl-list (alias)
- nl-nh-list (alias)
- nl-pktloc-lookup (alias)
- nl-qdisc-add (alias)
- nl-qdisc-delete (alias)
- nl-qdisc-list (alias)
- nl-route-add (alias)
- nl-route-delete (alias)
- nl-route-get (alias)
- nl-route-list (alias)
- nl-rule-list (alias)
- nl-tctree-list (alias)
- nl-util-addr (alias)

## Build dependencies

- bison
- flex
- pkgconf

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 3.12.0
- Local data: ok
- Upstream repository: https://github.com/thom311/libnl
- info: No package-manager update timestamp was available.
- info: No cached GitHub release or tag data was available.
## Project history and usage

libnl is the Netlink Protocol Library Suite, a set of C libraries for Linux applications that talk to kernel netlink interfaces. Netlink replaced many ioctl-style networking control paths with a message-based IPC mechanism between user space and the kernel.

### Project history

The Infradead project page describes libnl as a suite split into smaller libraries: libnl for socket and message fundamentals, libnl-route for NETLINK_ROUTE interfaces, libnl-genl for generic netlink, and libnl-nf for netfilter interfaces. The split is explicitly intended to avoid forcing every application to link one large library.

The project history includes a long-lived 1.1.x branch and a 3.x branch. The Infradead page warns that 1.1.x support is limited and tells new applications to target libnl3, while also documenting distribution package names for CentOS, Debian, Fedora, OpenSUSE, Slackware, and Ubuntu.

### Adoption history

libnl became a standard dependency for Linux networking software that needed structured access to routes, addresses, links, traffic control, generic netlink families, and netfilter state. Its inclusion in many distribution package sets reflects netlink's role as the Linux kernel's preferred extensible networking control API.

### How it is used

Callers use libnl core primitives for netlink sockets, message construction, parsing, send, receive, and cache handling, then add family-specific libraries when they need route, generic netlink, or netfilter support. The Homebrew package exposes many nl-* and nf-* command-line helpers around those APIs.

### Why package nerds care

libnl matters to package maintainers because it is Linux-specific, ABI-sensitive, and central to network managers, firewall tools, wireless stacks, containers, and low-level diagnostics. The project's documented SONAME problems in releases 3.2.18 and 3.2.19 show why distributions track its ABI carefully.

### Timeline

- 1.1.x era: The project maintained a stable branch but later advised new applications to use libnl3.
- 3.2.10: The project reverted an unnecessary SONAME bump after discussion to reduce distribution-maintainer pain.
- 3.2.18-3.2.19: The project documented an incorrect SONAME that required affected binaries to be relinked for compatibility with 3.2.20 and later.
- 2014-07-16: The Infradead project page records libnl 3.2.25 as released.

### Related projects

- Related kernel interfaces include netlink, NETLINK_ROUTE, generic netlink, and netfilter.
- The libnl suite's related libraries include libnl, libnl-route, libnl-genl, and libnl-nf.

### Sources

- <https://github.com/thom311/libnl>
- <https://www.infradead.org/~tgr/libnl/>


## Security Notes

library-like package without higher-risk signals.

- **Geiger risk:** green / low
- library-like package without higher-risk signals

## Source Database Details

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

## Other Package-Manager Records

- Nix - libnl: normalized package name match | nixpkgs package indexes: pkgs/by-name/li/libnl/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- pacman - libnl - 3.12.0-1: normalized package name match | Arch Linux sync databases: libnl from https://geo.mirror.pkgbuild.com/core/os/x86_64/core.db.tar.gz | Library for applications dealing with netlink sockets | https://github.com/thom311/libnl/


## Related links

- [Source-control packages](https://www.automicvault.com/pkg/source-control-tools/) - Belongs to a source-control command family.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Networking and protocol packages](https://www.automicvault.com/pkg/networking-protocol-tools/) - Matched network, protocol, or remote-service metadata.
- [Homebrew utility packages](https://www.automicvault.com/pkg/brew-utility-packages/) - Matched Homebrew package provider.
- [bison](https://www.automicvault.com/pkg/brew/bison/) - Build dependency declared by Homebrew.
- [flex](https://www.automicvault.com/pkg/brew/flex/) - Build dependency declared by Homebrew.
- [pkgconf](https://www.automicvault.com/pkg/brew/pkgconf/) - Build dependency declared by Homebrew.
- [iproute2](https://www.automicvault.com/pkg/brew/iproute2/) - Shares av.db curated category or tags: cli, linux, netlink, networking.
- [net-tools](https://www.automicvault.com/pkg/brew/net-tools/) - Shares av.db curated category or tags: cli, linux, networking.
- [gensio](https://www.automicvault.com/pkg/brew/gensio/) - Shares av.db curated category or tags: c-library, cli, networking.
- [gsasl](https://www.automicvault.com/pkg/brew/gsasl/) - Shares av.db curated category or tags: c-library, cli, networking.
- [iputils](https://www.automicvault.com/pkg/brew/iputils/) - Shares av.db curated category or tags: cli, linux, networking.
- [ldns](https://www.automicvault.com/pkg/brew/ldns/) - Shares av.db curated category or tags: c-library, cli, networking.
- [libdnet](https://www.automicvault.com/pkg/brew/libdnet/) - Shares av.db curated category or tags: c-library, cli, networking.
- [libpcap](https://www.automicvault.com/pkg/brew/libpcap/) - Shares av.db curated category or tags: c-library, cli, networking.

## Combined YAML source

View the package source record on GitHub. [combined/libnl.yml](https://github.com/automic-vault/db/blob/main/combined/libnl.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
