This article contains instructions of NFD nightly APT repository, which provides automated builds of NDN Forwarding Daemon (NFD) and related software.
This article was latest updated on 2021-10-30 to reflect latest changes.
Instructions
To install NDN software from NFD nightly APT repository:
If you have previously installed NDN software from named-data PPA or source code, you need to delete them to avoid conflict. See switch between installation methods section below.
Visit https://nfd-nightly.ndn.today webpage, choose your operating system and CPU architecture, and you'll get a setup command.
Run this setup command in the terminal, which adds NFD-nightly as a package source.
Update package lists:
sudo apt update
Install desired packages, such as:
sudo apt install nfd ndnping ndnpeek infoedit
You can see available packages on https://nfd-nightly.ndn.today webpage.
Switch between installation methods
There are several methods to install NFD and related programs, including:
- NFD nightly APT repository (this article)
- named-data PPA
- source code
Packages created with different methods are possibly incompatible with each other. Therefore, if you want to switch between installation methods, it's recommended to delete the previous installation.
# delete packages from NFD nightly APT repository
sudo apt purge libndn-cxx
sudo rm -f /etc/apt/sources.list.d/nfd-nightly.list
# delete packages from named-data PPA
sudo apt purge libndn-cxx
sudo rm -f /etc/apt/sources.list.d/named-data-ubuntu-ppa-*.list
# delete source code installation
# (run in each source code directory)
sudo ./waf uninstall
Q&A
Why should I use deb packages instead of building from source code?
- It is faster to install deb packages than trying to build from source code.
- You can uninstall cleanly with
sudo apt-get remove
command. sudo ./waf install
can conflict with packages and break your system.
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 versions.
- NFD-nightly: Debian and Ubuntu (LTS only).
- Quality:
- PPA: production.
- NFD-nightly: experimental.
- Docker friendly:
- PPA: no,
sudo
should not be used in Docker container. - NFD-nightly: yes.
- PPA: no,
- Dependencies:
- PPA: outdated and excessive (Python 2 and
libboost-all-dev
). - NFD-nightly: lean (Python 3 and specific Boost libraries).
- PPA: outdated and excessive (Python 2 and
- ndn-cxx dependency:
- PPA: depends on
>=
ndn-cxx version, which may cause runtime errors due to ABI breakage. - NFD-nightly: depends on
==
ndn-cxx version, which ensures ABI compatibility.
- PPA: depends on
How are these packages built?
- They are built on GitHub Actions using Docker containers.
- Non-amd64 architectures are compiled in Balena images.
A package isn't working?
- Download errors (404 not found, connection timeout, SSL handshake error, etc):
- Wait a few minutes, run
sudo apt update
again. - This is likely a temporary server issue.
Alert me on Twitter, mention
@yoursunny
.
- Wait a few minutes, run
- Installation error (
dpkg
fails to configure package):- This is possibly a bug in installation script, which originates from ppa-packaging but some are patched in NFD-nightly.
- Report via GitHub Issues, and be sure to include information about your platform.
- "Illegal Instruction" while running a program:
- This is most likely a bug in NFD-nightly build process.
- Report via GitHub Issues, and be sure to include information about your platform.
- Other runtime errors (packet drop, prefix registration rejected, etc):
- These are not caused by NFD-nightly.
- Report on nfd-dev mailing list.
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
.
- I'm a geocacher and I cannot stand the word
- I can add more CPU architecture, if Balena has an image for that.
- Open an issue to discuss.
How to request a new package?
- I can add packages if packaging scripts are available.
- If not, contribute to ppa-packaging first.
- Open an issue to discuss.