Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Когда я запускал apt dist-upgrade на своём сервере с Ubuntu 16.04 LTS, unif перестал работать., UniFi Network
 
Привет, я работаю на ubuntu 16.04 LTS с установленным репозиторием:  
deb http://www.ubnt.com/downloads/unifi/debian unifi5 ubiquiti

Когда я около 20 минут назад запустил «apt update», а затем «apt dist-upgrade», обновление пакета unifi спросило, есть ли у меня резервная копия. Я ответил «нет», обновление unifi было отменено, остальные пакеты обновились.  

НО: unifi теперь, похоже, не запускается.  

В syslog вижу, как unifi стартует:  
Apr 11 14:06:42 workhorse unifi.init[1265]: * Starting Ubiquiti UniFi Controller unifi
Apr 11 14:06:43 workhorse unifi.init[1265]: ...done.
Apr 11 14:06:43 workhorse systemd[1]: Started unifi.

Смотрю в /var/log/unifi/server.log и вижу:  
[2017-04-11 14:18:48,110] <launcher> INFO system - ======================================================================
[2017-04-11 14:18:48,111] <launcher> INFO system - UniFi 5.4.11 (build atag_5.4.11_9184 - release) is started
[2017-04-11 14:18:48,112] <launcher> INFO system - ======================================================================
[2017-04-11 14:18:48,115] <launcher> INFO system - BASE dir:/usr/lib/unifi
[2017-04-11 14:18:48,148] <launcher> INFO system - Current System IP: 10.37.50.20
[2017-04-11 14:18:48,148] <launcher> INFO system - Hostname: workhorse
[2017-04-11 14:18:48,258] <launcher> INFO db - waiting for db connection...
[2017-04-11 14:18:48,758] <launcher> INFO db - Connecting to mongodb://127.0.0.1:27117
[2017-04-11 14:18:49,639] <db-server> ERROR system - unable to exec java.io.IOException: Cannot run program "bin/mongod" (in directory "/usr/lib/unifi"): error=2, No such file or directory
       at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)  
       at com.ubnt.ace.F.Object(Unknown Source)  
       at com.ubnt.ace.F.o00000(Unknown Source)  
       at com.ubnt.service.B.O.<C3><B4>O0000(Unknown Source)  
       at com.ubnt.service.B.O.super(Unknown Source)  
       at com.ubnt.service.B.O$1.run(Unknown Source)  
       at java.lang.Thread.run(Thread.java:745)  
Caused by: java.io.IOException: error=2, No such file or directory  
       at java.lang.UNIXProcess.forkAndExec(Native Method)  
       at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)  
       at java.lang.ProcessImpl.start(ProcessImpl.java:134)  
       at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)  
       ... 6 more  
[2017-04-11 14:18:49,668] <db-server> INFO db - DbServer stopped

Секция между [2017-04-11 14:18:49,639] и [2017-04-11 14:18:49,668] просто повторяется каждые 4 секунды.

Файла /usr/lib/unifi/bin/mongod, конечно же, нет — поэтому ошибка логична.  

К тому же на ubuntu запущен mongodb. Проблемой бы это было, но он слушает на другом порту.  

Так что же пошло не так? Пакетный менеджер удалил /usr/lib/unifi/bin/mongod ещё до того, как спросил меня об обновлении?  

Как это починить?  

Я могу принудительно обновиться, но для начала хочу сделать резервную копию, чтобы не рисковать. Кто-нибудь знает способ сделать бэкап mongo без наличия исполняемого файла mongod?  

--jason
 
Спасибо за отличное решение, jason! Всем, кто вручную копирует каталог ROOT из свежего .deb-пакета, эта ссылка может пригодиться: https://blog.packagecloud.io/eng/2015/10/13/inspect-extract-contents-debian-packages/
 
Эти инструкции просто супер; у меня тоже установка осталась в сломанном состоянии, когда я прервал обновление, указав пакету, что у меня нет резервной копии. Восстановление папки ROOT в ...webapps и /usr/lib/unifi/webapps/ и воссоздание символической ссылки на mongodb решили проблему. Огромное спасибо @mjb4450! Интересно, почему apt решил обновить unifi с версии 5.14.23 до 6.* (раньше для этого нужно было явно разрешать); похоже, UniFi переподключили репозиторий, чтобы разрешить обновление главной версии?
 
У меня была такая же проблема, как я её исправил, объясняю ниже. Обновление через cron зависло, потому что установщик Unifi остановился на экране, где нужен ручной ввод, а я в этот момент не сидел за компьютером. Более простой способ — доверить это системе apt:

1) Найдите и завершите любые запущенные процессы обновления apt, которые зависли на последнем обновлении:
ps aux | grep -i apt
Теперь убедитесь, что у вас действительно не идёт обновление, и завершите все зависшие процессы обновления:
ищите 'apt full-upgrade -y'
и завершайте соответствующий PID. Будьте осторожны, это может быть рискованно, если обновление действительно выполняется.

2) Подготовьте apt/dpkg к установке новых пакетов:
sudo dpkg --configure -a

3) Исправьте недостающие пакеты. Это должно заменить mongo и ROOT:
sudo apt --fix-missing install

4) Перезапустите unifi:
sudo service unifi restart

У меня это сработало. Обновление через cron зависло, потому что установщик Unifi остановился на экране, где нужен ручной ввод, а я в тот момент не сидел за компьютером.
 
Меня подвели с этим 29.12.2020. Почему это до сих пор не исправлено, или хотя бы кто-то не предложил решение для тех из нас, кто не эксперт в UNIX?  
-----  
Спасибо тем, кто выше помог, я смог кое-как сделать исправление, которое, кажется, работает. Вот что я сделал, пожалуйста, поправьте, если я что-то сделал не так.  

Пересоздать символическую ссылку:  
1) ln -s /usr/bin/mongod /usr/lib/unifi/bin/mongod  
2) Скачать deb-файл (с вашей версией)  
wget https://dl.ui.com/unifi/5.14.23/unifi_sysvinit_all.deb  
3) Распаковать версию контроллера unifi, которую я запускал ранее  
ar x unifi_5.14.23.deb  
4) Распаковать файлы, созданные на шаге 3  
tar xvf data.tar.xz  
5) Перейти в папку, где отсутствует папка ROOT  
cd usr/lib/unifi/webapps/  
6) Переместить эту папку куда надо  
mv ROOT /usr/lib/unifi/webapps/  
7) Отредактировал этот файл, чтобы закомментировать источник, чтобы это случайно больше не повторилось! Если есть более простой способ — очень прошу подсказать.  
/etc/apt/sources.list.d/100-ubnt-unifi.list  

**Даю это на всякий случай, чтобы кто-то ещё не застрял, как я. Позор тому, кто сделал автоматическое обновление и убил мой контроллер, не спросив, хочу ли я этого.  

Это у меня не сработало, потому что я не хочу НИЧЕГО обновлять, мне просто нужно вернуть контроллер в строй.  
apt --fix-missing install
 
Это всё ещё проблема! Сегодня снова с ней столкнулся :-(
 
Нужно больше лайков!
 
Проще всего было ввести 'sudo apt --fix-missing install'... сэкономило мне кучу времени.
 
Ты сэкономил мне часы на исправлениях!
 
@jason0

Вы спасли мои выходные, сэр. Спасибо вам!
Страницы: 1
Читают тему (гостей: 1)