build+ci: support CentOS Stream 9 and macOS/arm64

This commit also syncs the CI config and scripts with ndn-cxx

Change-Id: Ie46b1d4b299bc95b03aa05d48efe366e1c72d54d
diff --git a/docs/beginners-guide.rst b/docs/beginners-guide.rst
index 8cc7e99..a41c6d8 100644
--- a/docs/beginners-guide.rst
+++ b/docs/beginners-guide.rst
@@ -17,9 +17,9 @@
 
 The following instructions are based on the information provided at the
 Named Data Networking project web page [NDNmain]_.
-Before installing NLSR it is necessary to install different libraries
-and programs: ndn-cxx, NFD, ChronoSync [optional], and PSync. This document describes the
-necessary steps to correctly install these programs (§ `2 <#ndncxx>`__,
+Before installing NLSR it is necessary to install different libraries and
+programs: ndn-cxx, NFD, ChronoSync [optional], and PSync. This document describes
+the necessary steps to correctly install these programs (§ `2 <#ndncxx>`__,
 `3 <#nfd>`__ and `4 <#nlsr>`__) and a brief guide on how to configure
 and test NLSR using a simple two-node network (§ `5 <#test>`__).
 
@@ -32,7 +32,7 @@
 
       $ sudo -i
 
-And then using the *passwd* command to set up a password. After setting
+And then using the ``passwd`` command to set up a password. After setting
 up the root user, it is possible to become root by employing the
 following command and providing the root password when prompted:
 
@@ -40,7 +40,7 @@
 
       $ su -
 
-Fedora employs the *dnf* command to install and verify installed
+Fedora employs the ``dnf`` command to install and verify installed
 packages. The following commands may become useful during the
 installation process and should be executed as root:
 
@@ -75,7 +75,7 @@
 programs may get installed. The name of this directory is not important.
 However, the following are provided as suggestions: project, NDNproject,
 NDNprograms. Each of the programs in the following sections should be
-downloaded to their own directory using the *git* command, and then
+downloaded to their own directory using the ``git`` command, and then
 compiled in this directory.
 
 .. _ndncxx:
@@ -88,7 +88,7 @@
 
 An updated list of the packages and programs that need to be installed
 before installing ndn-cxx, is provided at [NDN-cxx]_.
-This list is also reproduced bellow with the commands to verify that all
+This list is also reproduced below with the commands to verify that all
 the packages have been installed in the system. The following commands
 should be run as root:
 
@@ -99,24 +99,22 @@
        $ dnf list --installed gcc
        $ dnf list --installed gcc-c++
 
-#. Python version 2.6 or later
+#. Python version 3.6 or later
 
    ::
 
-       $ python -V
+       $ python3 -V
 
-#. libsqlite3
+#. SQLite 3.x
 
    ::
 
-       $ dnf list --installed sqlite
        $ dnf list --installed sqlite-devel
 
-#. openssl version 1.0.1 or later
+#. OpenSSL version 1.1.1 or later
 
    ::
 
-       $ openssl version
        $ dnf list --installed openssl-devel
 
 #. pkgconf that replaces pkg-config
@@ -125,73 +123,47 @@
 
        $ dnf list --installed pkgconf*
 
-#. boost libraries version 1.54 or later
+#. Boost libraries version 1.65.1 or later
 
    ::
 
-       $ dnf list --installed boost
        $ dnf list --installed boost-devel
 
-#. doxygen
+#. git
+
+   ::
+
+       $ dnf list --installed git
+
+#. doxygen (optional)
 
    ::
 
        $ dnf list --installed doxygen
 
-#. graphviz
+#. graphviz (optional)
 
    ::
 
        $ dnf list --installed graphviz
 
-#. python2-sphinx that replaces python-sphinx
+#. python3-pip (optional)
 
    ::
 
-       $ dnf list --installed python2-sphinx
+       $ dnf list --installed python3-pip
 
-#. After verifying that the python-sphinx package has been installed, it
-   is necessary to run the following two commands:
+#. After verifying that the python3-pip package has been installed, it
+   is necessary to run the following command:
 
    ::
 
-       $ pip-3 install sphinxcontrib-doxylink
-       $ pip install sphinxcontrib-googleanalytics
-
-   Note: When the two previous commands are run before correctly
-   installing python-sphinx, the following error message is produced
-   when trying to install this latter package: “Error unpacking rpm
-   package python2-urllib3-1.22-3.fc27.noarch”. To fix this problem, it
-   is necessary to run the following commands before installing
-   python-sphinx again:
-
-   ::
-
-       $ dnf remove python2-sphinx
-       $ pip uninstall sphinxcontrib-googleanalytics
-       $ pip-3 uninstall sphinxcontrib-doxylink
-       $ pip uninstall urllib3
-
-#. dpkg-architecture
-
-   ::
-
-       $ dnf list --installed dpkg
-       $ dnf list --installed dpkg-dev
-
-#. git and valgrind, which is used when installing NFD (§
-   `3 <#nfd>`__).
-
-   ::
-
-       $ dnf list --installed valgrind
-       $ dnf list --installed valgrind-devel
-       $ dnf list --installed git
+       $ pip install sphinx sphinxcontrib-doxylink
 
 2.2 Downloading and installing ndn-cxx
 --------------------------------------
 
-The *git* command allows to download the ndn-cxx library in its own
+The ``git`` command allows to download the ndn-cxx library in its own
 folder, also called *ndn-cxx*. Therefore it is recommended to execute
 this command at the directory created at § `1 <#intro>`__:
 
@@ -214,7 +186,7 @@
       $ ./waf configure --with-examples
 
 Compile the ndn-cxx library and install the compiled files at the
-system’s directories:
+system's directories:
 
 ::
 
@@ -248,8 +220,7 @@
 
 ::
 
-      $ echo export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig >>
-      /etc/profile.d/ndn.sh
+      $ echo export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig >> /etc/profile.d/ndn.sh
 
 After this command has been executed, it is necessary to apply the
 changes by either logging out and back in, and then running the
@@ -281,17 +252,16 @@
 before NFD is provided at [NDNNFD]_. Before installing
 NFD it is necessary to verify that the following packages are installed:
 
-#. libpcap libraries
+#. pcap library
 
    ::
 
-       $ dnf list --installed libpcap
        $ dnf list --installed libpcap-devel
 
 3.2 Downloading and installing NFD
 ----------------------------------
 
-This library is downloaded and installed in a folder called *NFD*, which
+This software is downloaded and installed in a folder called *NFD*, which
 should be created at the directory defined at § `1 <#intro>`__. The
 following commands need to be run as a regular user:
 
@@ -303,25 +273,15 @@
 
 If the previous command prints an error message saying that waf cannot
 find WebSocket, it is necessary to follow the instructions provided by
-this same output, which tells the user to execute either of the
-following two set of commands:
+this same output, which tells the user to run the following command:
 
 ::
 
-      $ git submodule init && git submodule update
+      $ git submodule update --init
 
-Or:
-
-::
-
-      $ mkdir websocketpp
-      $ curl -L https://github.com/zaphoyd/websocketpp/archive/0.7.0.tar.gz
-        > websocket.tar.gz
-      $ tar zxf websocket.tar.gz -C websocketpp/ --strip 1
-
-After executing either of these instructions, complete the configuration
-by running *./waf configure* again. Then complete the installation by
-means of the following commands:
+After executing these instructions, complete the configuration by running
+``./waf configure`` again. Then complete the installation by means of the
+following commands:
 
 ::
 
@@ -337,7 +297,7 @@
 
       $ cp /usr/local/etc/ndn/nfd.conf.sample /usr/local/etc/ndn/nfd.conf
 
-After the configuration file has been created, NFD’s behavior may be
+After the configuration file has been created, NFD's behavior may be
 changed by modifying this file. Once the configuration file has been
 created, it is recommended to start NFD by using the following command:
 
@@ -348,7 +308,7 @@
 This command does not properly allow to employ the command window to
 enter new commands; however it displays the NFD logs. Therefore, it is
 recommended to open a new command window. This second window may be used
-to verify NDF’s status and then stop NFD by using the following
+to verify NDF's status and then stop NFD by using the following
 commands:
 
 ::
@@ -583,10 +543,10 @@
 router2. *Figure 2* shows this
 configuration. For router1, the twelve steps described before need to be
 executed except for exchanging files between computers. For the router2,
-only steps 10 to 12 are needed to generate this router’s certificate.
+only steps 10 to 12 are needed to generate this router's certificate.
 
 Additionally, the following command may be used to print a list and a
-brief description of all the *ndnsec* commands:
+brief description of all the ``ndnsec`` commands:
 
 ::
 
@@ -614,12 +574,12 @@
 configure the network addresses and cards for all the computers in the
 network. It is important to remember that computers that are connected
 to each other should use the same subnetwork address. It is possible to
-verify the network configuration in a Linux computer by means of the *ip
-addr* command
+verify the network configuration in a Linux computer by means of the
+``ip addr`` command.
 
 Once the physical network and network cards have been configured, it is
 necessary to verify that the computers can communicate with each other.
-The simplest way to do this is by using the *ping* command:
+The simplest way to do this is by using the ``ping`` command:
 
 ::
 
@@ -629,7 +589,7 @@
 --------------------------------
 
 To start and configure NFD it is necessary to open two terminal windows.
-The first one will be used to start NFD by means of the *nfd-start*
+The first one will be used to start NFD by means of the ``nfd-start``
 command. This terminal will also display the logs that NFD generates. By
 default, NFD only generates informational logs (INFO). However, it is
 possible to obtain different levels of verbosity for these logs. These
@@ -653,7 +613,7 @@
 
       $ nfdc face create udp4://<remote-ip-address>
 
-The face id may be displayed by running either *nfd-status* or:
+The face id may be displayed by running:
 
 ::
 
@@ -677,7 +637,7 @@
 -------------------------------------
 
 Instructions on how to use the configuration file are already provided
-at the NLSR’s Router Configuration page [NLSRrtrconf]_.
+at the NLSR's Router Configuration page [NLSRrtrconf]_.
 Read the information in this page to understand NLSR router
 configuration. The following text describes the instructions that have
 been modified at the default nlsr.conf file for router1:
@@ -818,19 +778,19 @@
       $ nlsr -f <configuration-file>
 
 However, to verify what is NLSR doing, it becomes necessary to employ
-NLSR’s logging facility [NLSRstarting]_. A brief
-description on how to use NDN’s logging facility may be displayed by
-entering the *man ndn-log* command. This guide recommends using one of
-the following two instructions to start NLSR:
+NLSR's logging facility [NLSRstarting]_. A brief
+description on how to use NDN's logging facility may be displayed by
+entering the ``man ndn-log`` command. This guide recommends using one
+of the following two instructions to start NLSR:
 
 ::
 
       $ export NDN_LOG=nlsr.*=TRACE && nlsr
-      $ export NDN_LOG=nlsr.*=TRACE && nlsr -f <configuration-file>  
+      $ export NDN_LOG=nlsr.*=TRACE && nlsr -f <configuration-file>
 
-The second terminal window may be used to run *nfd-status* again and it
-should be possible to verify that the status has changed, specially at
-the FIB and RIB sections of the generated report.
+The second terminal window may be used to run ``nfd-status`` again and
+it should be possible to verify that the status has changed, specially
+at the FIB and RIB sections of the generated report.
 
 .. _turn_off:
 
@@ -857,7 +817,7 @@
 
        $ nfd-stop
 
-#. The crossover Ethernet cable may be unplugged and the computers’
+#. The crossover Ethernet cable may be unplugged and the computers'
    network configuration restored to its original settings.
 
 5.7 Where to go from here
@@ -880,13 +840,13 @@
 
 .. [NDNNFDusage] *NFD usage*, http://named-data.net/doc/NFD/current/manpages/nfd.html, May 2018.
 
-.. [Chronosync] Z. Zhu and A. Afanasyev. *Let’s ChronoSync: Decentralized dataset state synchronization in Named Data Networking*, in IEEE ICNP, October 2013.
+.. [Chronosync] Z. Zhu and A. Afanasyev. *Let's ChronoSync: Decentralized dataset state synchronization in Named Data Networking*, in IEEE ICNP, October 2013.
 
 .. [PSync] M. Zhang, V. Lehman, and L. Wang. *Scalable Name-based Data Synchronization for Named Data Networking*, in IEEE INFOCOM, May 2017.
 
 .. [NLSRsecconf] *NLSR Security Configuration*, http://named-data.net/doc/NLSR/current/SECURITY-CONFIG.html June 2018.
 
-.. [NLSRdevguide] V. Lehman, M. Chowdhury, N. Gordon, A. Gawande. *NLSR Developer’s Guide*, University of Memphis, November 2017.
+.. [NLSRdevguide] V. Lehman, M. Chowdhury, N. Gordon, A. Gawande. *NLSR Developer's Guide*, University of Memphis, November 2017.
 
 .. [NLSRrtrconf] *NLSR Router Configuration*, http://named-data.net/doc/NLSR/current/ROUTER-CONFIG.html, April 2018.