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. Extract the zip files, extract the txz files, extract the tar files, until you get to a bunch of deb files.
  4. Put all the deb files in the same directory.
  5. Execute sudo dpkg -i followed by the packages you want to install. It is normal for this command to report dependency errors.
  6. Execute sudo apt-get install -f to install missing dependencies from APT sources.

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?