NFD nightly packages

NDN Forwarding Daemon (NFD) is the reference implementation of Named Data Networking (NDN) forwarding plane. The software is continuously developed, but binary releases happen rather infrequently. Recently, I made a workflow to build NFD and related software automatically.

Download page:


Which platform should I choose?

  • The platform identifier has two parts: Linux distribution and CPU architecture. Both parts must match your machine.
  • Linux distribution:
    • bionic is Ubuntu 18.04.
    • buster is Debian 10. This includes Raspberry Pi OS.
  • CPU architecture:

Which packages should I install?

  • libndn-cxx_*.deb: ndn-cxx library.
  • libndn-cxx-dev_*.deb: development headers for ndn-cxx.
    • This is needed if you want to compile software that uses ndn-cxx.
    • Depends on: libndn-cxx
  • ndnsec_*.deb: ndnsec command for managing ndn-cxx KeyChain.
    • Depends on: libndn-cxx
  • nfd_*.deb: NDN Forwarding Daemon (NFD) and nfdc management utility.
    • Depends on: libndn-cxx, ndnsec
  • ndnpeek_*.deb: ndnpeek and ndnpoke commands for sending a single packet.
    • Depends on: nfd
  • ndnping_*.deb: ndnping and ndnpingserver commands for testing reachability.
    • Depends on: nfd
  • ndnchunks_*.deb: ndncatchunks and ndnputchunks commands for file transfers.
    • Depends on: nfd
  • ndn-dissect_*.deb: ndn-dissect command for analyzing packet structure.
    • Depends on: libndn-cxx
  • Other packages are generally not needed.

How to download and install?

  1. Choose a platform, and find the latest build that offers this platform.
  2. Download the zip files for ndn-cxx, NFD, and ndn-tools.
  3. Put all the deb files in the same directory.
  4. Execute sudo dpkg -i followed by the packages you want to install. It is normal for this command to report dependency errors.
  5. Execute sudo apt-get install -f to install missing dependencies from APT sources.

(2021-01-18 update) Can I install with apt-get?

Why am I seeing "page not found" after clicking a download link?

  • You must be logged into GitHub before you can download.


Why should I use deb packages instead of building from source code?

What are the differences between ppa:named-data/ppa and NFD-nightly?

  • Update frequency:
    • PPA: after each NFD release, which occurs a few times per year.
    • NFD-nightly: weekly.
  • Supported platforms:
    • PPA: recent Ubuntu version.
    • NFD-nightly: Debian and Ubuntu.
  • Format:
    • PPA: signed deb packages, automatic upgrade with apt-get command.
    • NFD-nightly: unsigned deb packages, manual install with dpkg command.
  • Quality:
    • PPA: production.
    • NFD-nightly: experimental.

How are these packages built?

  • They are built on GitHub Actions using Docker containers.
  • Non-amd64 architectures are compiled in Balena images.

Why do I have to be logged into GitHub to download?

  • The zip files are stored as "artifacts" on GitHub.
  • Anonymous downloads of artifacts are disallowed on GitHub.

The package isn't working?

  • If you are seeing "Illegal Instruction" error, open an issue to report.
    • Be sure to include: "build number" of the download, filename of the deb package, and information about your platform.
  • Other errors are not caused by NFD-nightly. Report on nfd-dev mailing list instead.

How to request a new platform?

  • I can add newer Debian or Ubuntu releases.
    • NFD needs to be compatible with the default compiler and Boost versions installed from APT.
  • I cannot create packages for Linux distributions that do not use APT.
    • I'm a geocacher and I cannot stand the word dnf DNF.
  • I can add more CPU architecture, if Balena has an image for that.
  • Open an issue to discuss.

How to request a new package?