Ошибка DPKG при установке bcmwl-kernel-source на Ubuntu 16.04

Вопрос или проблема

Я удалял bcmwl-kernel-source, но случайно прервал процесс. Теперь, когда я пытаюсь установить его снова с помощью sudo apt-get install bcmwl-kernel-source, я получаю следующую ошибку

0 обновлено, 0 новых установлено, 0 для удаления и 393 не обновлено.
1 не полностью установлено или удалено.
После этой операции будет использовано 0 Б дополнительного дискового пространства.
Настройка bcmwl-kernel-source (6.30.223.271+bdcom-0ubuntu1~1.2) ...
Удаление старых файлов DKMS bcmwl-6.30.223.271+bdcom...
Загрузка новых файлов DKMS bcmwl-6.30.223.271+bdcom...
Ошибка! Дерево DKMS уже содержит: bcmwl-6.30.223.271+bdcom
Вы не можете добавить один и тот же модуль/версию более одного раза.
dpkg: ошибка при обработке пакета bcmwl-kernel-source (--configure):
 подпроцесс установленного постустановочного скрипта вернул код выхода с ошибкой 3
Ошибки были обнаружены при обработке:
 bcmwl-kernel-source
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (1)

Если кто-то все еще сталкивается с этой проблемой на Ubuntu 20.04, попробуйте следующее:

apt purge bcmwl-kernel-source
apt-get install broadcom-sta-source
apt-get install broadcom-sta-dkms
apt-get install broadcom-sta-common

Спасибо Рафаэлю Сантосу (rafae-s) по ссылке ниже

https://bugs.launchpad.net/ubuntu/+source/bcmwl/+bug/1878045

Для тех, кто не может использовать

sudo apt install bcmwl-kernel-source

Вы можете вручную собрать из их исходного кода (с применением патчей для сборки под ядро 6.x).

!примечание: у меня ядро 6.5, тест прошел успешно.

Сначала клонируем исходный код:

git clone https://git.launchpad.net/ubuntu/+source/bcmwl/

(для детализации, мой последний коммит cd76516d116a73018ca4cbe6b580bfd603465cb9, вы можете ‘git checkout cd76516d116a73018ca4cbe6b580bfd603465cb9’, если хотите иметь ту же ветку, что и я)

Зайдите в исходный код, вы увидите Makefile, README, debian и src, переместите Makefile в папку src

mv Makefile ./src/

Теперь создайте скрипт в каталоге src для применения патчей (уже в исходном коде)

#!/bin/bash

# путь к вашим патчам (измените, если хотите абсолютный путь)
PATCH_DIR="../debian/patches"

PATCHES=(
    "0002-Makefile.patch"
    "0003-Make-up-for-missing-init_MUTEX.patch"
    "0010-change-the-network-interface-name-from-eth-to-wlan.patch"
    "0013-gcc.patch"
    "0019-broadcom-sta-6.30.223.248-3.18-null-pointer-fix.patch"
    "0020-add-support-for-linux-4.3.patch"
    "0021-add-support-for-Linux-4.7.patch"
    "0022-add-support-for-Linux-4.8.patch"
    "0023-add-support-for-Linux-4.11.patch"
    "0024-add-support-for-Linux-4.12.patch"
    "0025-add-support-for-Linux-4.14.patch"
    "0026-add-support-for-Linux-4.15.patch"
    "0027-add-support-for-linux-5.1.patch"
    "0028-add-support-for-linux-5.6.patch"
    "0029-Update-for-set_fs-removal-in-Linux-5.10.patch"
    "0040-add-support-for-linux-5.18.patch"
    "0041-dev-addr-access.patch"
    "0042-add-support-for-linux-6.x.patch"
)

# Применить все
for PATCH in "${PATCHES[@]}"; do
    echo "Применение патча: $PATCH"
    patch -p1 < "$PATCH_DIR/$PATCH"

    if [ $? -ne 0 ]; then
        echo "Не удалось применить $PATCH, пропускаем."
    fi
done

echo "Все патчи успешно применены."

Теперь мы можем собрать

make -C /lib/modules/$(uname -r)/build M="$(pwd)"

или просто :

make

После сборки мы можем установить с помощью команды:

sudo make install
sudo modprobe -r wl
sudo modprobe wl
lsmod |grep wl

Если есть wl, вы можете увидеть, что wifi работает.


Для всех желающих использовать dkms для сборки:
Вам нужно получить исходный код и применить патч, как выше.
Скопируйте папку src в

/var/lib/dkms/bcmwl/6.30.223.271+bdcom/source

Теперь проверьте, нет ли установленного dkms ранее, нам нужно удалить его:

dkms status
sudo dkms remove bcmwl/6.30.223.271+bdcom --all
dkms status

Перейдите в /var/lib/dkms/bcmwl/6.30.223.271+bdcom/source/dkms.conf и удалите все патчи:

PACKAGE_NAME="bcmwl"
PACKAGE_VERSION="#VERSION#"
CLEAN="rm -f *.*o"

BUILT_MODULE_NAME[0]="wl"
MAKE[0]="make -C $kernel_source_dir M=$dkms_tree/$PACKAGE_NAME/$PACKAGE_VERSION/build"
DEST_MODULE_LOCATION[0]="/updates"
AUTOINSTALL="yes"

Теперь все чисто, просто перейдите к сборке

sudo dkms build bcmwl/6.30.223.271+bdcom
sudo dkms install bcmwl/6.30.223.271+bdcom

или просто сделайте это:

sudo apt update
sudo apt install bcmwl-kernel-source

Теперь все работает нормально.

Это сработало для меня
rm -rf /usr/src/bcmwl-6.30.223.271+bdcom и затем rm -rf /var/lib/dkms/*, за которым следует apt-get purge dkms. После этого я просто выполнил apt-get install bcmwl-kernel-source, и он установился.

Для всех, кто сталкивается с этой проблемой на 20.04

Эта проблема возникает при попытке вручную установить "bcmwl-kernel-source" или использовать "Дополнительные драйверы".

Просто выполните эту команду
sudo apt-get remove --purge bcmwl-kernel-source

Ответ или решение

Решение проблемы с установкой bcmwl-kernel-source на Ubuntu 16.04

Введение

При установке пакета bcmwl-kernel-source на Ubuntu 16.04 многие пользователи сталкиваются с ошибками, возникающими в результате неправильного завершения предыдущей установки, вызванного прерыванием процесса управления пакетами. Данная статья поможет вам разобраться, как исправить ошибки dpkg, возникающие в процессе установки, и восстановить работоспособность драйвера.

Проблема

Согласно описанию проблемы, при попытке установить драйвер с помощью команды:

sudo apt-get install bcmwl-kernel-source

пользователь сталкивается со следующей ошибкой:

1 not fully installed or removed.
dpkg: error processing package bcmwl-kernel-source (--configure):
 subprocess installed post-installation script returned error exit status 3
...
E: Sub-process /usr/bin/dpkg returned an error code (1)

Это сообщение об ошибке указывает на то, что предыдущая установка bcmwl-kernel-source была прервана, и теперь система не может корректно завершить установку или удалить старые файлы драйвера.

Решение

Шаг 1: Удаление неполной установки

Во-первых, необходимо удалить все файлы, связанные с неполной установкой драйвера:

  1. Удалите пакет bcmwl-kernel-source:

    sudo apt-get remove --purge bcmwl-kernel-source
  2. Удалите все временные файлы DKMS:

    sudo rm -rf /var/lib/dkms/bcmwl
    sudo rm -rf /usr/src/bcmwl-6.30.223.271+bdcom
  3. Если у вас установлен DKMS, его также можно удалить:

    sudo apt-get purge dkms
Шаг 2: Повторная установка

После удаления всех следов предыдущей установки, можно снова попробовать установить bcmwl-kernel-source:

sudo apt-get update
sudo apt-get install bcmwl-kernel-source
Альтернативный вариант: Установка через DKMS

Если стандартная установка по-прежнему вызывает проблемы, можно попробовать ручное создание и установку модуля через DKMS. Для этого выполните следующие шаги:

  1. Убедитесь, что все старые версии модуля удалены:

    dkms status
    sudo dkms remove bcmwl/6.30.223.271+bdcom --all
  2. Скачайте исходный код:

    git clone https://git.launchpad.net/ubuntu/+source/bcmwl/
    cd bcmwl
  3. Переместите файл Makefile в соответствующую директорию:

    mv Makefile ./src/
  4. Создайте скрипт для применения патчей (как указано в вашем примере) и выполните его.

  5. Соберите и установите модуль:

    make
    sudo make install
  6. Загрузите модуль:

    sudo modprobe -r wl
    sudo modprobe wl
  7. Проверьте, загружен ли модуль:

    lsmod | grep wl

Заключение

Следуя приведённым инструкциям, вы сможете успешно решить проблему с установкой bcmwl-kernel-source на Ubuntu 16.04. Если ошибки продолжают возникать, убедитесь, что ваша система обновлена и что вы используете совместимую версию ядра. В случае возникновения дополнительных вопросов или трудностей, рекомендуется обратиться за помощью на форумы сообщества Ubuntu или техническую поддержку.

Оцените материал
Добавить комментарий

Капча загружается...