Installing Non-free Software In Debian

  1. Debian Install Non Free Software
  2. Installing Non-free Software In Debian

Tip: If you can't find any graphical package manager, consider installing one through the command line, for example, one of the following: KPackage, Klik, Autopackage, Bitnami, Click N Run. It's the magnifying glass icon near the top of the window. Search for the software you want to install. If you.must. have the latest software at all times, Debian is not for you. Depending on your political/philosophical standpoints: No non-free software by default - and it contains systemd. But this installation will include non-free firmware in order to work for hardware that in many cases will fail with the official installation media. The contrib and non-free repos include non-free and third-party software, such as Adobe Flash and the Nvidia binary graphics driver. We’ll walk through the excellent, easy Debian way of installing these in a moment. Installing Debian. Steam app installation on Debian 10 or 11 Linux – Step by step. Add “non-free” component to the official repo. Enable Multi-Arch or 32-bit support. Run system update. Command to Install Steam Application on your Debian 10 or 11.

Part ofNew life for an old laptop as a Linux home server

Install Software Using Dpkg Command. Dpkg is a package manager for Debian and its derivatives such as Ubuntu and Linux Mint. It is used to install, build, remove and manage.deb packages. But unlike other Linux package management systems, it cannot automatically download and install packages with their dependencies.

Debian 10 aka 'buster' is the latest stable release of the popular Linux operating system. I use Debian's (unofficial) network installer image (which includes non-free firmware for pesky wifi cards) to create a minimal, console-only base configuration that can be customized for various tasks, servers, and desktops.

Let's go!

Debian GNU/Linux is an operating system created by volunteers of one of the largest and longest-running free software projects in the world. There are 3 release branches: stable (code-named 'buster'), testing ('bullseye'), and unstable ('sid').

Below is a visual walk-through of an installation that makes use of the entire disk divided into two partitions: a small boot partition, and a second partition where all the remaining storage is encrypted using Linux Unified Key Setup (LUKS). Later, that encrypted storage is used by the Logical Volume Manager (LVM) to create “virtual partitions” (Logical Volumes or LVs) for separate root and home filesystems. Installing LVM on top of the encrypted partition allows the creation of multiple LVs protected by a single passphrase, and dynamic resizing of LVs as needed.

Sample configuration below uses BIOS MBR and boots in legacy boot mode. If using Debian's guided partitioning option, all the necessary partition arrangements are auto-configured whether the computer boots using MBR or UEFI.

Prepare install media

Download and verify firmware-10.10.0-amd64-netinst.iso ...

Write the installer to an unmounted USB storage device using the dd command as root.


Example: On a Linux system, if a USB stick appears as sde1, then write the installer to sde (no partition number) ...

Update: I now use Ventoy to setup the USB install medium.



Select the guided partitioning option to make use of the entire disk configured with LVM on LUKS. I also recommend creating a separate home. By default, this creates:

  • a small, unencrypted boot (plus a separate boot/efi partition if using UEFI to boot)
  • remaining storage dedicated to a LUKS-encrypted partition with LVM
  • logical volumes created for root, swap, and home

Settings can be altered (alternate filesystems, mount options, etc) before writing the partition layout to disk. 1 If finer-grained control is desired, select manual partitioning.

Install packages and finish up

Use the Debian global mirrors service ...

Select only [*] standard system utilities and leave the remaining tasks 2 unmarked ...

Packages are downloaded and the installer makes its finishing touches ...

First boot

GRUB menu ...

User is prompted for the passphrase to unlock the encrypted partition ...

Login and welcome to Debian!


Check which network interfaces are detected and settings ...

Wired interfaces are usually auto-configured by default and assigned an IP address courtesy of DHCP.

To assign a static address, deactivate the wired interface and create a new entry in /etc/network/interfaces. 3 Sample entry for enp3s0 ...

Bring up down interface with if{up,down} enp3s0.

To create a wireless interface connection to WPA2-encrypted access points 4 using DHCP ...

Optional: Once a link is established, install a network manager utility. Packages network-manager and network-manager-gnome provide the console nmcli and graphical nm-applet clients respectively . Comment out (deactivate) any entries in interfaces that will be managed by network-manager.


Install any upgrades ...


If you desire a different default language/keymap, either modify /etc/default/keyboard or run ...

Console fonts

Discover available fonts in /usr/share/consolefonts. Set and display a font (example: Lat15-Terminus20x10) for the current session ...

To make the selection persistent, either modify /etc/default/console-setup or run ...

Debian Install Non Free Software


Install sudo to temporarily provide your non-root user (example: foo) account with root privileges ...

To allow foo to execute superuser commands without being prompted for a password, create the file /etc/sudoers.d/foo containing ...


If a non-root user runs dmesg to read the contents of the kernel message buffer they will see ...

Turns out it is a security feature not a bug!

To allow users to read the kernel log without being prompted for a password, modify /etc/sysctl.conf by adding ...

... and reload the configuration ...

Main, non-free, contrib, and backports

Debian uses three archives to distinguish between software packages based on their licenses. Main is enabled by default and includes everything that satisfies the conditions of the Debian Free Software Guidelines. Non-free contains packages that do not meet all the conditions of the DFSG but can be freely distributed, and contrib packages are open-source themselves but rely on software in non-free to work.

Backports contains packages drawn from the testing (and sometimes unstable) archive and modified to work in the current stable release. All backports are disabled by default (to prevent unintended system upgrades) and are installed on a per PACKAGE basis by running ...

Modify /etc/apt/sources.list to add contrib, non-free, and backports ...

Any time sources.list is modified its necessary to update the package database ...

I add the alias aaa to my ~/.bashrc that combines, in a single command:

  • updating the package database
  • running a full upgrade
  • removing package files that can no longer be downloaded, and are largely useless
  • prompting to remove packages automatically installed to satisfy dependencies for other packages and are now no longer needed

Add ...

Reload the new settings, and run ...

Command not found

Automatically search the official repositories when entering an unrecognized command, courtesy of the command-not-found package ...

Re-login to activate.


Periodic TRIM optimizes performance on SSD storage. Enable a weekly task that discards unused blocks on the drive ...


Setup the locate command and database for finding files ...

Dot bashrc

Installing Non-free Software In Debian

Modify ~/.bashrc and create a colourful custom prompt ...

Add aliases and functions, enable unlimited history, and more. Example: my .bashrc.


Intel and AMD processors may periodically need updates to their microcode firmware. Microcode can be updated (and kept in volatile memory) during boot by installing either intel-microcode or amd64-microcode (AMD) ...

Installing Non-free Software In Debian

Sample output from my laptop before reboot ...

... and after reboot ...

Link: Microcode

Secure access using SSH keys

Create cryptographic keys, install the OpenSSH server, and configure remote access.


  • The Debian Administrator's Handbook
    • In-depth guide to becoming a Debian power-user/sysadmin. Read online or download the ebook.
  • Debian Package Tracker
    • A searchable interface that packs a lot of information about a given package on a single page.
  • r/debian
    • Reddit forum for Debian.
  • The Linux Command Line
    • Command line use, programs, and shell scripting. Free ebook download.
  • ArchWiki
    • Dedicated to Arch Linux, but contains many excellent HOWTOs relevant to all Linux distros.

Where to go next ...

... is up to YOU. I use Ansible to setup my own Debian machines, usually with Openbox for desktops, plus some favourite applications.

Happy hacking!

  • GPL-2.0+ image of “bestFriend” courtesy ofAlex Makas.



Reserved blocks can be used by privileged system processes to write to disk - useful if a full filesystem blocks users from writing - and reduce disk fragmentation. On large non-root partitions, extra space can be gained by reducing this reserve. Example: Highlight and select /home partition, select Reserved blocks: and reduce the default 5% reserve set aside by Debian to 1%.


Task selection menu can be used post-install by running the command tasksel.


Problem: Setting the network interface to static address can result in /etc/resolv.conf being overwritten every few minutes with an IPv6 address that breaks DNS. The 'fix' is to maually set nameserver in resolv.conf and install the resolvconf package. Note that dns-nameservers entries are ignored if resolvconf is not installed.


Multiple wireless static IP address setups can be created with iface wlp1s0_NAME inet static and [de]activated with if{up.down} wlp1s0=wlp1s0_NAME.

« Earlier: New life for an old laptop as a Linux home server

Last updated on July 1, 2020 by Dan Nanni

Question: I need to install some proprietary device driver on Debian, which is part of a non-free package. However, I cannot find and install the package in my Debian box. How can I install non-free packages on Debian?

The Debian project is distributed as a collection of packages, 90,000 of them, as of Debian 10 'buster' release. These packages are categorized into three areas: main, contrib and non-free, mainly based on licensing requirements, e.g., Debian Free Software Guidelines (DFSG).

The main area contains free software that complies with DFSG. The contrib area contains free software that complies with DFSG, but relies on non-free software for compilation or execution. Finally, the non-free area contains non-free packages that are not compliant with DFSG but redistributable. The main repository is considered a part of Debian, but neither contrib or non-free repository is. The latter two are maintained and provided only as a convenience to users.

Enable Contrib and Non-free Repositories on Debian

If you want to install any non-free package maintained by Debian, you need to enable contrib and non-free repositories. To do so, open /etc/apt/sources.list with a text editor, and append 'contrib non-free' to each source.

The following is an example of /etc/apt/sources.list for Debian 10 'buster' Release.

After modifying sources of packages, run the following command to download package index files for contrib and non-free repositories.

If you are using aptitude, run the following instead.

Now you are ready to search and install any non-free package on Debian.