Вопрос или проблема
Я удалял 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: Удаление неполной установки
Во-первых, необходимо удалить все файлы, связанные с неполной установкой драйвера:
-
Удалите пакет
bcmwl-kernel-source
:sudo apt-get remove --purge bcmwl-kernel-source
-
Удалите все временные файлы DKMS:
sudo rm -rf /var/lib/dkms/bcmwl sudo rm -rf /usr/src/bcmwl-6.30.223.271+bdcom
-
Если у вас установлен DKMS, его также можно удалить:
sudo apt-get purge dkms
Шаг 2: Повторная установка
После удаления всех следов предыдущей установки, можно снова попробовать установить bcmwl-kernel-source
:
sudo apt-get update
sudo apt-get install bcmwl-kernel-source
Альтернативный вариант: Установка через DKMS
Если стандартная установка по-прежнему вызывает проблемы, можно попробовать ручное создание и установку модуля через DKMS. Для этого выполните следующие шаги:
-
Убедитесь, что все старые версии модуля удалены:
dkms status sudo dkms remove bcmwl/6.30.223.271+bdcom --all
-
Скачайте исходный код:
git clone https://git.launchpad.net/ubuntu/+source/bcmwl/ cd bcmwl
-
Переместите файл Makefile в соответствующую директорию:
mv Makefile ./src/
-
Создайте скрипт для применения патчей (как указано в вашем примере) и выполните его.
-
Соберите и установите модуль:
make sudo make install
-
Загрузите модуль:
sudo modprobe -r wl sudo modprobe wl
-
Проверьте, загружен ли модуль:
lsmod | grep wl
Заключение
Следуя приведённым инструкциям, вы сможете успешно решить проблему с установкой bcmwl-kernel-source
на Ubuntu 16.04. Если ошибки продолжают возникать, убедитесь, что ваша система обновлена и что вы используете совместимую версию ядра. В случае возникновения дополнительных вопросов или трудностей, рекомендуется обратиться за помощью на форумы сообщества Ubuntu или техническую поддержку.