NetworkManager-1.20.0

#### Beyond Linux® From Scratch (systemd Edition) - Version 9.0

### Chapter 16. Networking Utilities

- Prev

  BIND Utilities-9.14.5

- Next

  Nmap-7.80

- Up
- Home

# NetworkManager-1.20.0

## Introduction to NetworkManager

NetworkManager is a set of co-operative tools that make networking simple and straightforward. Whether you use WiFi, wired, 3G, or Bluetooth, NetworkManager allows you to quickly move from one network to another: Once a network has been configured and joined once, it can be detected and re-joined automatically the next time it's available.

This package is known to build and work properly using an LFS-9.0 platform.

### Note

Make sure that you disable the systemd-networkd service or configure it not to manage the interfaces you want to manage with NetworkManager.

### Package Information

- Download (HTTP): http://ftp.gnome.org/pub/gnome/sources/NetworkManager/1.20/NetworkManager-1.20.0.tar.xz

- Download (FTP): ftp://ftp.gnome.org/pub/gnome/sources/NetworkManager/1.20/NetworkManager-1.20.0.tar.xz

- Download MD5 sum: 109df9b0813755a98735206f5b2d68da

- Download size: 4.6 MB

- Estimated disk space required: 872 MB (with tests)

- Estimated build time: 1.8 SBU (with tests)

### NetworkManager Dependencies

#### Required

dbus-glib-0.110 and libndp-1.7

#### Recommended

cURL-7.65.3, dhcpcd-8.0.3 or DHCP-4.4.1 (client only), gobject-introspection-1.60.2, Iptables-1.8.3, jansson-2.12, newt-0.52.21 (for nmtui), NSS-3.45, Polkit-0.116, PyGObject-3.32.2, Systemd-241, UPower-0.99.10, Vala-0.44.7, and wpa_supplicant-2.9 (built with D-Bus support),

#### Optional

BlueZ-5.50, D-Bus Python-1.2.8 (for the test suite), GnuTLS-3.6.9 (used if NSS-3.45 is not found), GTK-Doc-1.32, libpsl-0.21.0, Qt-5.13.0 (for examples), ModemManager-1.10.4, Valgrind-3.15.0, dnsmasq, libaudit, libteam, PPP, and RP-PPPoE

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/NetworkManager

## Installation of NetworkManager

If Qt-5.13.0 is installed and the Qt based examples are desired, fix the configure script:

    sed -e '/Qt[CDN]/s/Qt/Qt5/g'       \
        -e 's/-qt4/-qt5/'              \
        -e 's/moc_location/host_bins/' \
        -i examples/C/qt/meson.build

Fix a missing meson.build file for initrd hooks (not used in BLFS):

    sed '/initrd/d' -i src/meson.build

Fix the python scripts so that they use Python 3:

    grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'

Install NetworkManager by running the following commands:

    mkdir build &&
    cd    build    &&

    CXXFLAGS+="-O2 -fPIC"            \
    meson --prefix /usr              \
          --sysconfdir /etc          \
          --localstatedir /var       \
          -Djson_validation=false    \
          -Dlibaudit=no              \
          -Dlibpsl=false             \
          -Dnmtui=true               \
          -Dovs=false                \
          -Dppp=false                \
          -Dselinux=false            \
          -Dqt=false                 \
          -Dudev_dir=/lib/udev       \
          -Dsession_tracking=systemd \
          -Dmodem_manager=false      \
          -Dsystemdsystemunitdir=/lib/systemd/system \
          .. &&
    ninja

An already active session with bus address is necessary to run the tests. To test the results, issue: ninja test.

Now, as the `root` user:

    ninja install &&
    mv -v /usr/share/doc/NetworkManager{,-1.20.0}

## Command Explanations

`CXXFLAGS="-O2 -fPIC"`: These compiler options are necessary to build the Qt5 based examples.

`-Ddocs=true`: Use this switch to enable building man pages and documentation if GTK-Doc-1.32 is installed.

`-Dnmtui=true`: This parameter enables building nmtui.

`-Djson_validation=false`, `-Dlibpsl=false`, and `-Dovs=false`: These switches disable building with the respective libraries. Remove if you have the needed libraries installed.

`-Dmodem_manager=false`: This switch is requried if ModemManager is not installed. Omit if you have built ModemManager.

`-Dsession_tracking=systemd`: This switch is used to set systemd-logind as the default program for session tracking.

`-Dsystemdsystemunitdir=/lib/systemd/system`: This switch is used to set the correct installation directory for systemd units.

`-Dppp=false`: This parameter disables PPP support in NetworkManager.

`-Dlibaudit=no` and `-Dselinux=false`: libaudit and SELinux are not used in BLFS.

`-Dqt=false`: disables the QT examples. Omit if you have QT available and wish to install the examples.

## Configuring NetworkManager

### Config Files

`/etc/NetworkManager/NetworkManager.conf`

### Configuration Information

For NetworkManager to work, at least a minimal configuration file must be present. Such file is not installed with make install. Issue the following command as the `root` user to create minimal `NetworkManager.conf` file:

    cat >> /etc/NetworkManager/NetworkManager.conf << "EOF"
    [main]
    plugins=keyfile
    EOF

This file should not be modified directly by users of the system. Instead, system specific changes should be made using configuration files in the `/etc/NetworkManager/conf.d` direcotry.

To allow polkit to manage authorizations, add the following configuration file:

    cat > /etc/NetworkManager/conf.d/polkit.conf << "EOF"
    [main]
    auth-polkit=true
    EOF

To use something other than the built-in dhcp client (recommended if using only nmcli), use the following configuration (valid values are dhclient, dhcpcd, and internal):

    cat > /etc/NetworkManager/conf.d/dhcp.conf << "EOF"
    [main]
    dhcp=dhclient
    EOF

To prevent NetworkManager from updating the `/etc/resolv.conf` file, add the following configuration file:

    cat > /etc/NetworkManager/conf.d/no-dns-update.conf << "EOF"
    [main]
    dns=none
    EOF

For additional configuation options, see man 5 NetworkManager.conf.

To allow regular users permission to configure network connections, you should add them to the `netdev` group, and create a polkit rule that grants access. Run the following commands as the `root` user:

    groupadd -fg 86 netdev &&
    /usr/sbin/usermod -a -G netdev <username>

    cat > /usr/share/polkit-1/rules.d/org.freedesktop.NetworkManager.rules << "EOF"
    polkit.addRule(function(action, subject) {
        if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("netdev")) {
            return polkit.Result.YES;
        }
    });
    EOF

### Systemd Unit

To start the NetworkManager daemon at boot, enable the previously installed systemd unit by running the following command as the `root` user:

### Note

If using Network Manager to manage an interface, any previous configuration for that interface should be removed, and the interface brought down prior to starting Network Manager.

    systemctl enable NetworkManager

NetworkManager also ships a systemd unit called `NetworkManager-wait-online.service` which can be used to prevent services that require network connectivity from starting until NetworkManager has established the connection. To enable it, run the following command as the `root` user:

    systemctl enable NetworkManager-wait-online

## Contents

Installed Programs: NetworkManager, nmcli, nm-online, nmtui, and, symlinked to nmtui: nmtui-connect, nmtui-edit, and nmtui-hostname
Installed Libraries: libnm.so and several modules under /usr/lib/NetworkManager
Installed Directories: /etc/NetworkManager, /usr/include/NetworkManager, /usr/lib/NetworkManager, /usr/share/doc/NetworkManager-1.20.0, /usr/share/gtk-doc/html/{libnm,NetworkManager} (if the documentation is built), and /var/lib/NetworkManager

### Short Descriptions

nmcli | is a command-line tool for controlling NetworkManager and getting its status.
nm-online | is a utility to find out whether you are online.
nmtui | is an interactive ncurses based interface for nmcli.
nmtui-connect | is an interactive ncurses based interface connection to activate/deactivate connections.
nmtui-edit | is an interactive ncurses based interface connection editor.
nmtui-hostname | is an interactive ncurses based interface hostname editor.
NetworkManager | is the network management daemon.
`libnm.so` | contains functions used by NetworkManager.

Last updated on 2019-08-18 18:01:59 -0700

- Prev

  BIND Utilities-9.14.5

- Next

  Nmap-7.80

- Up
- Home