- Вопрос или проблема
- Ответ или решение
- Шаг 1: Проверка наличия установленных пакетов
- Шаг 2: Устранение проблем с зависимостями
- Шаг 3: Очистка кэша apt
- Шаг 4: Исправление поврежденных пакетов
- Шаг 5: Переустановка nodejs
- Шаг 6: Установка nginx
- Шаг 7: Проверка статуса установки
- Дополнительные шаги при проблемах
- Удаление пакетов вручную (в крайнем случае)
- Способы установки nginx из исходников
- Заключение
Вопрос или проблема
Пытаюсь установить nginx:
-
Сначала:
sudo curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
Результат:
Всё выглядит нормально:
> ## Запустите `sudo apt-get install -y nodejs`, чтобы установить Node.js 16.x и npm > ## Вам также могут понадобиться инструменты разработки для сборки нативных добавлений: > sudo apt-get install gcc g++ make > ## Чтобы установить менеджер пакетов Yarn, выполните: > curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null > echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee > /etc/apt/sources.list.d/yarn.list > sudo apt-get update && sudo apt-get install yarn
-
Затем:
sudo apt install -y nodejs nano nginx
Всё выглядит нормально, но предложили выполнить
apt --fix-broken install
Возможно, вам стоит запустить 'apt --fix-broken install', чтобы исправить это. Следующие пакеты имеют неудовлетворенные зависимости: nginx : Зависит: nginx-core (< 1.18.0-6ubuntu11.1~), но он не будет установлен или nginx-full (< 1.18.0-6ubuntu11.1~), но он не будет установлен или nginx-light (< 1.18.0-6ubuntu11.1~), но он не будет установлен или nginx-extras (< 1.18.0-6ubuntu11.1~), но он не будет установлен Зависит: nginx-core (>= 1.18.0-6ubuntu11), но он не будет установлен или nginx-full (>= 1.18.0-6ubuntu11), но он не будет установлен или nginx-light (>= 1.18.0-6ubuntu11), но он не будет установлен или nginx-extras (>= 1.18.0-6ubuntu11), но он не будет установлен E: Неудовлетворенные зависимости. Попробуйте 'apt --fix-broken install' без пакетов (или укажите решение).
-
Запустите:
apt --fix-broken install
Есть ошибки:
dpkg: ошибка обработки архива /var/cache/apt/archives/nodejs_16.13.0-deb-1nodesource1_amd64.deb (--unpack): пытаюсь перезаписать '/usr/share/doc/nodejs/api/fs.html', который также содержится в пакете nodejs-doc 12.22.5~dfsg-5ubuntu1 dpkg-deb: ошибка: процесс вставки был убит сигналом (Broken pipe) Ошибки возникли при обработке: /var/cache/apt/archives/nodejs_16.13.0-deb-1nodesource1_amd64.deb needrestart пропускается, так как dpkg не завершился успешно E: Подпроцесс /usr/bin/dpkg вернул код ошибки (1)
Я не знаю, что делать дальше, но, похоже, nginx не установлен
Вы сказали, что не могли даже выполнить apt-get install nginx
. У меня была такая же проблема, и в моем случае я не мог даже удалить, пока не удалил вручную все существующие экземпляры nginx. Похоже, я когда-то пытался установить nginx, но не помню об этом, и моя установка оказалась в беспорядке. Попробуйте
$ whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz
Я сделал так: принудительно удалил все с помощью rm -rf
и затем удалил существующие символические ссылки, которые нашёл. После этого я наконец смог удалить все упомянутые пакеты, связанные с nginx, и действительно переустановить nginx.
wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/nginx/1.18.0-6ubuntu11/nginx_1.18.0.orig.tar.gz
# извлечь
cd nginx_1.18.0.orig/nginx-1.18.0/
./configure
make
Я установил из источника (что не мог сделать, пока не удалил все предыдущие материалы), но также должно быть возможно использовать apt-get install nginx
.
Ответ или решение
Чтобы решить проблему с установкой nginx и ошибками dpkg, следует выполнить несколько шагов для устранения конфликтов зависимостей и чистки системных пакетов. Вот подробная инструкция:
Шаг 1: Проверка наличия установленных пакетов
Сначала, давайте проверим, установлены ли у вас какие-либо версии nginx или nodejs:
whereis nginx
whereis nodejs
Шаг 2: Устранение проблем с зависимостями
Если вы видите, что установлены конфликтующие пакеты (например, nodejs-doc
), попробуйте удалить их:
sudo apt remove nodejs-doc
Шаг 3: Очистка кэша apt
Иногда кэшированные пакеты могут вызвать дополнительные проблемы. Выполните очистку кэша:
sudo apt clean
Шаг 4: Исправление поврежденных пакетов
Запустите команду для исправления поврежденных установок:
sudo apt --fix-broken install
Если эта команда выдаст ошибки, связанные с конкретными файлами или пакетами, вы можете попробовать удалить упоминаемые пакеты принудительно:
sudo dpkg --remove --force-remove-reinstreq nodejs
sudo dpkg --remove --force-remove-reinstreq nodejs-doc
Шаг 5: Переустановка nodejs
Теперь загрузим и установим nodejs заново с помощью следующей команды:
sudo apt install -y nodejs
Шаг 6: Установка nginx
После успешно установленного nodejs, вы можете попробовать снова установить nginx:
sudo apt update
sudo apt install -y nginx
Шаг 7: Проверка статуса установки
Проверьте, установлен ли nginx и запущен ли он:
sudo systemctl status nginx
Дополнительные шаги при проблемах
Если предыдущие шаги не помогли, возможно, потребуется вручную удалить остатки старых установок nginx или других пакетов. В этом случае вы можете использовать команды:
sudo rm -rf /usr/sbin/nginx
sudo rm -rf /usr/lib/nginx
sudo rm -rf /usr/share/nginx
sudo rm -rf /usr/share/doc/nodejs
Удаление пакетов вручную (в крайнем случае)
Если все указанные выше действия не помогли, вы можете попробовать удалить пакеты вручную с помощью dpkg
:
sudo dpkg --remove --force-remove-reinstreq имя_пакета
Способы установки nginx из исходников
Если после всех попыток вы по-прежнему не можете установить nginx через apt, вы можете установить его из исходников:
- Скачайте исходный код nginx:
wget https://nginx.org/download/nginx-1.18.0.tar.gz
- Распакуйте архив:
tar -xzvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
- Соберите и установите nginx:
./configure
make
sudo make install
Заключение
Следуя приведенным выше шагам, вы должны были разрешить проблемы с установкой nginx и nodejs. Если у вас возникли дополнительные вопросы, не стесняйтесь обращаться за помощью!