При установке 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).
Как проверить текущие источники пакетов
Прежде чем что-то менять, посмотрите, какие секции уже активны. Откройте файл источников командой:
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
⚠️ Внимание: для 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 покажет, какие источники реально активны.