Удаление драйвера принтера в Linux часто становится головной болью для пользователей, особенно когда система продолжает «видеть» старый драйвер после его предполагаемого удаления. В отличие от Windows, где достаточно воспользоваться диспетчером устройств, в Linux процесс зависит от способа установки драйвера, типа принтера (HP, Canon, Epson или Brother) и используемого дистрибутива. Ошибки здесь чреваты не только сбоями печати, но и конфликтами ядра, если речь идёт о проприетарных модулях.

В этой статье мы разберём все возможные сценарии: от удаления драйверов через CUPS (стандартную систему печати Linux) до ручного очищения проприетарных пакетов и модулей ядра. Особое внимание уделим «подводным камням» — например, почему после удаления пакета hplip принтер HP LaserJet может всё ещё определяться системой, или как правильно «отвязать» принтер от SANE (системы сканирования). Если вы столкнулись с ошибками вроде Filter failed или Unable to locate printer — здесь вы найдёте решение.

Прежде чем приступить, убедитесь, что у вас есть права sudo — без них большинство команд просто не сработает. Также подготовьте модель вашего принтера: алгоритм удаления для Canon PIXMA MG3640 и Brother HL-L2350DW будет отличаться из-за разных типов драйверов (PPD-файлы vs проприетарные .deb/.rpm пакеты).

📊 Какой дистрибутив Linux вы используете?
Ubuntu/Debian
Fedora/RHEL
Arch Linux
OpenSUSE
Другой

1. Удаление драйвера через CUPS (универсальный метод)

CUPS (Common Unix Printing System) — это «сердце» печати в Linux, и большинство драйверов принтеров регистрируются именно здесь. Даже если вы устанавливали драйвер через пакетный менеджер, его следы остаются в конфигурациях CUPS. Чтобы удалить драйвер полностью, нужно работать с двумя компонентами: очередью печати и PPD-файлом (описанием драйвера).

Откройте веб-интерфейс CUPS, перейдя по адресу http://localhost:631 в браузере. Если страница не открывается, запустите службу командой:

sudo systemctl start cups

Далее выполните шаги:

  • 🔍 В разделе Printers найдите свой принтер и нажмите Delete Printer. Это удалит очередь печати, но не сам драйвер.
  • 📄 Перейдите в Administration → Manage Printers → Add Printer. В списке моделей не должно остаться вашего принтера. Если он там есть — драйвер не удалён.
  • 🗑️ Удалите PPD-файл вручную (если принтер всё ещё определяется). Файлы хранятся в /etc/cups/ppd/. Найдите файл с именем вашего принтера и удалите его:
sudo rm /etc/cups/ppd/Ваш_принтер.ppd

После этого перезапустите CUPS:

sudo systemctl restart cups

Удалить принтер из веб-интерфейса CUPS|Проверить отсутствие PPD-файла в /etc/cups/ppd/|Перезапустить службу CUPS|Проверить, что принтер не отображается в lpstat -p

-->

⚠️ Внимание: Если после удаления принтер всё равно появляется в списке устройств, проверьте автообнаружение в /etc/cups/cups-browsed.conf. Иногда драйвер восстанавливается из кэша сетевых принтеров. Отключите опцию BrowseRemoteProtocols, если принтер подключён локально.

2. Удаление пакетов драйверов через пакетный менеджер

Если драйвер устанавливался через apt, dnf, pacman или zypper, его нужно удалить стандартными средствами дистрибутива. Однако здесь кроется подвох: многие драйверы (например, HPLIP для принтеров HP) тянут за собой зависимости, которые могут остаться в системе и конфликтовать с новыми драйверами.

Ниже — команды для популярных дистрибутивов. Важно: перед удалением проверьте точные имена пакетов командой apt list --installed | grep принтер (для Debian/Ubuntu) или аналогичной для вашего дистрибутива.

ДистрибутивКоманда для поиска пакетовКоманда для удаления
Debian/Ubuntuapt list --installed | grep -i printersudo apt purge пакет_драйвера
Fedora/RHELdnf list installed | grep -i printersudo dnf remove пакет_драйвера
Arch Linuxpacman -Q | grep -i printersudo pacman -Rns пакет_драйвера
OpenSUSEzypper se --installed-only | grep -i printersudo zypper remove пакет_драйвера

Примеры имен пакетов для популярных брендов:

  • 🖨️ HP: hplip, hplip-gui, printer-driver-hpcups
  • 🖨️ Canon: cnijfilter2, scangearmp2 (для сканера)
  • 🖨️ Epson: epson-inkjet-printer-escpr, iscan
  • 🖨️ Brother: brother-lpr-drivers, brscan4
💡

Если после удаления пакета принтер всё равно работает, проверьте наличие «сиротских» зависимостей командой deborphan (Ubuntu/Debian) или pacman -Qdt (Arch). Эти пакеты могут содержать оставшиеся модули драйвера.

⚠️ Внимание: При удалении пакетов вроде hplip может пропасть поддержка сканирования через SANE. Если вам нужно сохранить функцию сканирования, удаляйте только пакеты с префиксом printer-driver-, а не весь hplip.

3. Ручное удаление проприетарных драйверов

Некоторые производители (например, Brother или Xerox) распространяют драйверы в виде бинарных пакетов, которые устанавливаются через скрипты-инсталляторы. Такие драйверы не попадают в пакетный менеджер и требуют ручного удаления. Обычно они размещаются в /opt/ или /usr/local/.

Алгоритм действий:

  1. Найдите папку с драйвером:
    ls -l /opt/ | grep -i brother  # пример для Brother
    

    ls -l /usr/local/ | grep -i epson

  2. Удалите папку драйвера (например, для Brother HL-L2350DW):
    sudo rm -rf /opt/brother/
  3. Проверьте наличие символических ссылок в /usr/lib/cups/filter/ и удалите их:
    sudo rm /usr/lib/cups/filter/brlpdwrapper*
  4. Обновите кэш CUPS:
    sudo cupsctl --debug-logging
    

    sudo systemctl restart cups

Для принтеров Epson также может потребоваться удалить файлы из /usr/share/ppd/Epson/:

sudo rm -f /usr/share/ppd/Epson/Ваша_модель.ppd
Что делать, если после удаления останутся «призрачные» принтеры?

Иногда CUPS сохраняет информацию о принтерах в /etc/cups/printers.conf. Откройте файл:

sudo nano /etc/cups/printers.conf

Удалите блоки с упоминанием вашего принтера (они начинаются с <Printer имя_принтера>), сохраните файл и перезапустите CUPS.

4. Удаление модулей ядра (для USB/сетевых принтеров)

Некоторые принтеры (особенно старые модели HP или Lexmark) требуют загрузки специальных модулей ядра, таких как usblp или lp. Если после удаления драйвера принтер всё равно блокируется системой, проблема может быть в этих модулях. Проверьте загруженные модули командой:

lsmod | grep -E 'usblp|lp|printer'

Чтобы временно отключить модуль (например, usblp, который часто конфликтует с HPLIP):

sudo rmmod usblp

Для постоянного отключения добавьте модуль в чёрный список:

echo "blacklist usblp" | sudo tee /etc/modprobe.d/blacklist-printer.conf

sudo update-initramfs -u # для Debian/Ubuntu

sudo dracut --force # для RHEL/Fedora

💡

Отключение модуля usblp может решить проблему с «зависанием» принтера при печати, но после этого некоторые старые модели перестанут работать через USB. Используйте этот метод только если принтер подключён по сети или у вас современная модель с поддержкой libusb.

5. Очистка конфигурационных файлов и кэша

Даже после удаления пакетов и PPD-файлов следы драйвера могут оставаться в конфигурационных файлах. Проведите полную очистку:

  • 📂 Удалите кэш CUPS:
    sudo rm -rf /var/cache/cups/*
    

    sudo rm -rf /var/spool/cups/*

  • 🔧 Проверьте файлы конфигурации в /etc/cups/:
    sudo grep -r "Ваша_модель_принтера" /etc/cups/

    Удалите или отредактируйте файлы, где упоминается принтер (кроме cupsd.conf — его трогать не нужно).

  • 🔄 Сбросьте права доступа к CUPS (иногда они сбиваются после ручного удаления):
    sudo chown -R root:lp /etc/cups/
    

    sudo chmod -R 755 /etc/cups/

Если принтер подключён по сети, очистите также кэш Avahi (системы автообнаружения устройств):

sudo systemctl restart avahi-daemon

6. Проверка и устранение конфликтов

После удаления драйвера могут возникнуть новые проблемы: от ошибок печати до полного исчезновения принтера из системы. Вот как диагностировать и исправить типичные конфликты:

  • 🔴 Ошибка: Filter failed при попытке печати.

    Решение: Удалите оставшиеся фильтры CUPS:

    sudo rm -f /usr/lib/cups/filter/ваша_модель

  • 🔴 Ошибка: Принтер определяется как Unknown или Generic.

    Решение: Удалите «призрачные» правила udev:

    sudo rm /etc/udev/rules.d/printer
    

    sudo udevadm control --reload-rules

  • 🔴 Ошибка: Сканер перестал работать после удаления драйвера принтера.

    Решение: Переустановите пакеты SANE:

    sudo apt install --reinstall sane sane-utils libsane-extras

Если принтер всё ещё не работает, проверьте логи CUPS:

sudo tail -n 50 /var/log/cups/error_log
⚠️ Внимание: После удаления драйверов для принтеров Samsung (особенно моделей ML-2165W или SCX-3405W) может потребоваться вручную удалить файлы из /usr/share/ppd/Samsung/ и перезагрузить систему. Эти принтеры часто оставляют «хвосты» в виде скриптов в /usr/local/bin/.

7. Альтернативные методы: когда ничего не помогает

Если стандартные способы не сработали, попробуйте радикальные меры:

  • 🔄 Сброс CUPS к заводским настройкам:
    sudo cupsctl --no-debug-logging
    

    sudo systemctl stop cups

    sudo rm -rf /etc/cups/*

    sudo systemctl start cups

    ⚠️ После этого все принтеры и настройки печати будут утеряны!

  • 🐧 Пересборка базы данных пакетов (для Debian/Ubuntu):
    sudo dpkg --configure -a
    

    sudo apt install -f

  • 📦 Удаление через synaptic (GUI):

    Установите synaptic и найдите все пакеты, связанные с принтером. Иногда графический интерфейс показывает зависимости яснее, чем терминал.

Для принтеров Ricoh или Xerox, которые используют проприетарные системы печати (например, RICOH ProcessDirector), может потребоваться удаление через их собственные утилиты. Обычно они устанавливаются в /opt/Ricoh/ и имеют скрипт удаления:

sudo /opt/Ricoh/uninstall.sh

Частые вопросы (FAQ)

После удаления драйвера принтер всё равно отображается в списке устройств. Что делать?

Это типичная проблема с кэшем CUPS. Выполните:

  1. Удалите принтер через веб-интерфейс CUPS (http://localhost:631).
  2. Очистите кэш:
    sudo rm -f /var/cache/cups/*
  3. Проверьте наличие «призрачных» правил в /etc/cups/printers.conf и удалите их.
  4. Перезапустите службу:
    sudo systemctl restart cups

Если принтер подключён по USB, отключите и снова подключите его физически.

Можно ли удалить драйвер принтера без прав sudo?

Нет, для большинства операций (удаление пакетов, редактирование /etc/cups/, перезапуск служб) требуются права администратора. Однако вы можете:

  • Удалить принтер из своего пользовательского профиля через lpoptions -x имя_принтера (это не удалит драйвер, но скроет принтер из вашего списка).
  • Очистить личный кэш CUPS в ~/.cups/.

Для полного удаления драйвера права sudo обязательны.

Как удалить драйвер для принтера Canon PIXMA MG3640?

Для этой модели нужно:

  1. Удалить пакеты:
    sudo apt purge cnijfilter2 scangearmp2
  2. Удалить PPD-файл:
    sudo rm /etc/cups/ppd/Canon_MG3600_series.ppd
  3. Очистить фильтры:
    sudo rm /usr/lib/cups/filter/pstocanonij*
  4. Перезапустить CUPS и SANE:
    sudo systemctl restart cups sane-daemon

Если принтер подключён по Wi-Fi, также удалите его из сети в настройках роутера (иногда CUPS «видит» его через mDNS).

Почему после удаления драйвера hplip сканер HP перестал работать?

Пакет hplip включает в себя и драйверы для сканеров (SANE-бэкенды). Чтобы сохранить сканирование:

  1. Удалите только пакеты печати:
    sudo apt purge printer-driver-hpcups hplip-gui
  2. Сохраните пакеты для сканирования:
    sudo apt install --reinstall sane-airscan libsane-hpaio
  3. Проверьте, что сканер определяется:
    scanimage -L

Если сканер всё равно не работает, переустановите hplip с флагом --disable-printing (если поддерживается вашей версией).

Как удалить драйвер для сетевого принтера Brother HL-L2350DW?

Для сетевых принтеров Brother:

  1. Удалите пакеты:
    sudo apt purge brother-lpr-drivers-3.0.1-1
  2. Удалите файлы из /opt/brother/:
    sudo rm -rf /opt/brother/Print/hl2350dw/
  3. Очистите фильтры CUPS:
    sudo rm /usr/lib/cups/filter/brlpdwrapperhl2350dw
  4. Удалите принтер из CUPS и перезагрузитесь.

Если принтер всё ещё виден в сети, отключите его на 10 минут — иногда DHCP-кэш роутера сохраняет его адрес.