Debian non-free: назначение репозитория и его подключение

При установке Debian с официального образа часто обнаруживается, что Wi-Fi-адаптер не определяется, а в выводе apt update фигурируют только секции main — система работает, но без проприетарной прошивки и части драйверов. Причина почти всегда одна: в файле sources.list не подключены компоненты non-free и non-free-firmware, куда Debian выносит ПО, не соответствующее принципам свободного программного обеспечения (DFSG).

Эта статья разбирает, что именно лежит в ветке non-free, чем она отличается от contrib и non-free-firmware, как безопасно подключить эти репозитории на свежих и старых выпусках Debian и какие подводные камни встречаются на практике.

Что такое non-free в Debian

Debian исторически разделяет архив пакетов на несколько секций по лицензионному признаку. Секция main содержит только полностью свободное ПО, соответствующее Debian Free Software Guidelines. Всё, что распространяется под ограничительными лицензиями — без исходного кода, с запретом на модификацию или коммерческое использование, — попадает в non-free.

Типичное содержимое non-free: проприетарные драйверы (например, NVIDIA), некоторые кодеки, утилиты и документация с ограничительными лицензиями. Важно понимать: пакеты из non-free не входят в официальный «дистрибутив Debian» в строгом смысле — проект предоставляет их как сервис пользователям, но не гарантирует тот же уровень поддержки и аудита, что для main.

До выпуска Debian 12 Bookworm бинарные прошивки (firmware) тоже лежали внутри non-free. Начиная с Bookworm для них выделили отдельную секцию non-free-firmware — её нужно указывать отдельной строкой, иначе прошивки для сетевых карт и видеочипов не установятся.

Чем отличаются main, contrib, non-free и non-free-firmware

Путаница между секциями — частая причина ошибок вида «пакет не найден» после подключения только одной ветки. Различия сводятся к двум критериям: свободна ли лицензия самого пакета и зависит ли он от несвободных компонентов.

СекцияЛицензия пакетаЗависимостиПример содержимого
mainСвободная (DFSG)Только свободныеЯдро Linux, GNOME, Firefox ESR
contribСвободнаяТребует несвободные компонентыОбёртки для проприетарных драйверов
non-freeОграничительнаяЛюбыеДрайверы NVIDIA, некоторые утилиты
non-free-firmwareОграничительнаяЛюбыеПрошивки для Wi-Fi, GPU, Bluetooth

Обратите внимание на contrib: там лежат свободные программы, которые без несвободных зависимостей бесполезны. Поэтому на практике contrib и non-free подключают вместе — многие пакеты из contrib ищут свои зависимости именно в non-free.

  • 🔓 main — базовая секция, подключена всегда по умолчанию.
  • 🔗 contrib — свободное ПО, зависящее от несвободного.
  • 🔒 non-free — проприетарные программы и драйверы.
  • 💾 non-free-firmware — бинарные прошивки (с Debian 12).
📊 Подключаете ли вы non-free репозитории на своих системах Debian?
Да, всегда — нужны драйверы и прошивки
Только non-free-firmware для железа
Нет, использую только свободное ПО
Зависит от задачи и оборудования

Как проверить текущие источники пакетов

Прежде чем что-то менять, посмотрите, какие секции уже активны. Откройте файл источников командой:

cat /etc/apt/sources.list

В свежих установках Debian 12 файл может отсутствовать или быть пустым — источники тогда описаны в формате deb822 в файле /etc/apt/sources.list.d/debian.sources. Проверьте и его:

cat /etc/apt/sources.list.d/debian.sources

Найдите строки, начинающиеся с deb (или поле Components: в формате deb822). Если в конце строки указано только main, значит, non-free-компоненты не подключены. Дополнительно проверить, какие пакеты вообще видит система, можно командой apt policy — она выведет список активных репозиториев с приоритетами.

Подключение non-free и non-free-firmware

Есть два корректных способа: вручную отредактировать файл источников или воспользоваться штатной утилитой. Начиная с Debian 12 доступен инструмент apt-add-repository (пакет software-properties-common), который правильно дописывает компоненты без ручного редактирования:

sudo apt-add-repository --component non-free-firmware non-free contrib

Для ручного способа откройте /etc/apt/sources.list в редакторе с правами root и допишите компоненты в конец каждой строки deb. Строка для Debian 12 Bookworm будет выглядеть примерно так:

deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware

Не забудьте проделать то же самое для строк bookworm-updates и bookworm-security, если они присутствуют, — обновления безопасности для non-free-пакетов приходят именно через них. После правки обновите индекс пакетов:

sudo apt update

☑️ Подключение non-free в Debian

Выполнено: 0 / 5

⚠️ Внимание: для Debian 11 (Bullseye) и более ранних выпусков секции non-free-firmware не существовало — прошивки входили в обычный non-free. Если скопировать строку от Bookworm на старую систему, apt update завершится ошибкой о несуществующем репозитории. Всегда сверяйте кодовое имя выпуска и набор секций с вашей версией.

Установка прошивок и драйверов из non-free

После подключения репозиториев типовая задача — доустановить прошивки для оборудования, которое не заработало из коробки. Универсальный метапакетов «на всё железо» нет, поэтому сначала определите, чего не хватает системе. Посмотреть сообщения ядра о запрошенных, но не найденных прошивках можно так:

sudo dmesg | grep -i firmware

Для распространённых случаев существуют отдельные пакеты: firmware-linux, firmware-iwlwifi (беспроводные адаптеры Intel), firmware-realtek, firmware-amd-graphics. Установка выполняется стандартно:

sudo apt install firmware-iwlwifi

Для видеокарт NVIDIA в non-free лежит проприетарный драйвер nvidia-driver. Перед его установкой стоит проверить, какой драйвер рекомендует сама система, — утилита nvidia-detect (из одноимённого пакета) определит модель карты и подскажет подходящую ветку драйвера. Это надёжнее, чем ставить пакет вслепую.

Почему Wi-Fi не работал сразу после установки

Официальные установочные образы Debian раньше не включали несвободные прошивки, поэтому адаптеры Intel, Realtek и Broadcom часто оставались без драйвера. Начиная с Debian 12 официальные образы включают non-free-firmware, и проблема встречается реже. На старых выпусках нужно было либо использовать неофициальный образ с прошивками, либо подключать non-free после установки через проводное соединение.

⚠️ Внимание: после установки пакетов прошивок перезагрузите систему или хотя бы выгрузите и заново загрузите соответствующий модуль ядра. Прошивка подхватывается драйвером в момент его инициализации — без перезагрузки модуля адаптер может продолжать не работать, создавая ложное впечатление, что установка не помогла.

Зеркала, backports и типичные ошибки

Если apt update после правки sources.list выдаёт ошибки, причина обычно в одном из трёх: опечатка в кодовом имени выпуска, указана секция, которой нет в данном выпуске, или недоступно конкретное зеркало. Проверить кодовое имя системы поможет команда cat /etc/os-release — сверьте значение VERSION_CODENAME со строками в источниках.

Отдельный случай — репозиторий backports (например, bookworm-backports), где публикуются более свежие версии пакетов. Он тоже имеет деление на секции, и если вам нужен свежий несвободный пакет оттуда, компоненты contrib non-free non-free-firmware нужно дописать и в строку backports.

  • 🧩 Ошибка «не удалось найти пакет» — чаще всего не выполнен apt update после правки файла.
  • 🌐 Ошибка получения индекса — проверьте доступность зеркала или смените его на другое.
  • 🔤 Ошибка о несуществующей секции — non-free-firmware указана на Debian 11 или старше.
  • 📦 Пакет находится, но ставится старая версия — проверьте приоритеты через apt policy.

Правовые и практические аспекты использования non-free

Подключение non-free не нарушает никаких правил — это штатная возможность, предусмотренная проектом. Однако стоит понимать последствия. Пакеты из этой секции не проходят тот же аудит, что main; исходный код закрыт, поэтому исправить ошибку или проверить поведение программы сообщество не может. Обновления безопасности для non-free выпускаются по остаточному принципу и зависят от готовности правообладателя.

Если вы администрируете серверы или собираете образы для распространения, учтите: некоторые лицензии из non-free ограничивают редистрибуцию. Перед включением таких пакетов в публично распространяемый образ сверьтесь с текстом лицензии конкретного пакета — она лежит в /usr/share/doc/имя_пакета/copyright после установки.

Для домашней системы прагматичный подход такой: подключить non-free-firmware почти всегда оправданно (без прошивок железо просто не работает), а полный non-free и contrib — по необходимости, когда требуется конкретный проприетарный драйвер или программа.

Часто задаваемые вопросы

Чем non-free отличается от contrib?

В non-free лежат пакеты с ограничительными лицензиями. В contrib — свободные программы, которые для работы требуют несвободные компоненты. На практике их подключают вместе, так как пакеты из contrib ищут зависимости в non-free.

Нужно ли подключать non-free-firmware на Debian 11?

Нет. Отдельная секция non-free-firmware появилась только в Debian 12 Bookworm. В Debian 11 и ранее прошивки входили в обычную секцию non-free, и её достаточно.

Безопасно ли использовать пакеты из non-free?

Пакеты проходят стандартную инфраструктуру сборки Debian, но их исходный код закрыт, поэтому аудит сообществом невозможен. С точки зрения стабильности системы они безопасны, однако обновления безопасности для них не гарантированы в том же объёме, что для main.

Как вернуть систему к полностью свободному состоянию?

Удалите компоненты contrib, non-free и non-free-firmware из sources.list, выполните apt update, затем найдите установленные несвободные пакеты — например, с помощью утилиты vrms — и удалите их. Учтите, что часть оборудования после этого может перестать работать.

Почему после подключения non-free пакет всё равно не находится?

Чаще всего не выполнена команда apt update после правки файла источников. Также проверьте кодовое имя выпуска в строках репозитория и убедитесь, что пакет существует для вашей архитектуры — apt policy покажет, какие источники реально активны.