| Summary: | GeoIP не работает | ||
|---|---|---|---|
| Product: | [ROSA-based products] ROSA Fresh | Reporter: | Vladimir Potapov <v.potapov> |
| Component: | Packages from Main | Assignee: | ROSA Linux Bugs <bugs> |
| Status: | VERIFIED FIXED | QA Contact: | ROSA Linux Bugs <bugs> |
| Severity: | normal | ||
| Priority: | Normal | CC: | andrey.bondrov, denis.silakov, konstantin.vlasov |
| Version: | Fresh | Flags: | v.potapov:
qa_verified+
denis.silakov: published+ |
| Target Milestone: | 2014 KDE R6 | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Platform: | --- | ROSA Vulnerability identifier: | |
| RPM Package: | ISO-related: | ||
| Bad POT generating: | Upstream: | ||
| Attachments: |
log
log2 |
||
|
Description
Vladimir Potapov
2014-09-23 09:42:08 MSK
имеется ввиду в инсталляторе. У меня все разы работало нормально. Видимо, качество канала тут критично. С этой проблемой уже пытались разобраться. Единственным рабочим решением оказалось добавление задержки инициализации инсталлятора на десяток, а то и больше секунд. Для большинства пользователей это, увы, неприемлемо. а нельзя просто дальше тоже выбор делать? Насколько понимаю, там инфа приходит, когда уже язык выбран. Но страну и город-то можно еще раз по этой инфе поставить? Нет. Сам язык ведь тоже определяется по GeoIP. А дальше, если пользователь уже сам выбирает язык, то дальнейшие шаги определяются его выбором. Можно, конечно, попробовать пускануть определялку параллельно, авось к какому-то шагу что-то и появится... Но у тех, кто сталкивался с этой проблемой на форуме, задержка составляла не меньше 7 секунд (более длительные паузы не тестировал, т. к. уже не было смысла), за это время большая часть GeoIP-зависимых шагов и так уже будет пройдена пользователем. Понимаешь, я вот в Иркутске живу - и каждый раз честно ставлю. Там далеко не 7 секунд. Попробуй, поймешь :-) Регулярно ставлю без GeoIP (то старые образы, но на ноут с вайфаем). Набрать первые несколько букв - очень быстро. В общем, я ещё подумаю, но во-первых, это явно не приоритетная задача, а во-вторых, у меня всё ещё большие сомнения, что стоит реализовывать таким непредсказуемым образом. Сейчас либо есть GeoIP, либо нет. А тут будет: один раз пользователь запустил - получил язык не определился, а город и таймзона определились. Второй раз загружается - всё определилось сразу. Третий раз - ничего не успеет... Для пользователя это будет выглядеть как серьёзный баг. Более серьёзный и более странный, чем просто отсутствие GeoIP. Так оно и сейчас так. То определяется, то нет. Сейчас - либо всё, либо ничего. Если ничего - то понятно, что проблема с сетью. А так будет, что половина определилась, половина - нет, и гадай, что произошло. То ли инициализация GeoIP поздно запустилась, то ли канал тормозной, то ли образ криво собран, то ли инсталлятор закосячил... На Косте сейчас куда более важные баги висят, не стоит его отвлекать этой проблемой, IMHO. *** Bug 4006 has been marked as a duplicate of this bug. *** Как выяснилось, geoIP в виртуалке НЕ работает если выделить одно ядро, а с двумя работает. Возможно, проблема с порядком выполнения операций в systemd Так и не работает - даже с новым быстрым каналом и пингом менее 20. Нужно смотреть порядок запуска в systemd Это общая беда, она есть и в ночных образах KDE. Я хочу отвязать этот баг от GNOME. Возможно стоит подцепить этот баг к тестированию нового инсталлятора. Created attachment 4073 [details]
log
Эксперимент первый, просто лог при загрузке в лайве (автовыбора не было ни на одном этапе)
Эксперимент второй. Остановился, проверил интернет, посмотрел базу - она не обновляется. Подождал пять минут - не обновляется. И сейчас смотрю на базу GeoIP - она от 29 августа 2014 года, хотя уже в багзилле авторизовался и эти строки пишу из-под лайва (In reply to comment #17) > Эксперимент второй. Остановился, проверил интернет, посмотрел базу - она не > обновляется. Подождал пять минут - не обновляется. > И сейчас смотрю на базу GeoIP - она от 29 августа 2014 года, хотя уже в > багзилле авторизовался и эти строки пишу из-под лайва и да, по той базе мой IP конечно не пробивается. Created attachment 4074 [details]
log2
Кажется, нашел виновника #geoipupdate -v Opened License file /etc/GeoIP.conf Read in license key YOUR_LICENSE number of product ids 1 Connecting to MaxMind GeoIP server via Host or Proxy Server: api.maxmind.com:80 sending request GET /app/update_getfilename?product_id=106 HTTP/1.0 Host: updates.maxmind.com database product id 106 database file name /usr/share/GeoIP/GeoIP.dat MD5 Digest of installed database is 76c84de5283fabbe37eeb3b0a1c35863 MD5 sum of database /usr/share/GeoIP/GeoIP.dat is 76c84de5283fabbe37eeb3b0a1c35863 Connecting to MaxMind GeoIP Update server sending request GET /app/update_getipaddr HTTP/1.0 Host: updates.maxmind.com client ip address: 91.246.1.26 md5sum of ip address and license key is d9ab816924506c764c0015247195ec9b sending request GET /app/update_secure?db_md5=76c84de5283fabbe37eeb3b0a1c35863&challenge_md5=d9ab816924506c764c0015247195ec9b&user_id=&edition_id=106 HTTP/1.0 Host: updates.maxmind.com Downloading gzipped GeoIP Database... Done Updating /usr/share/GeoIP/GeoIP.dat Saving gzip file to /usr/share/GeoIP/GeoIP.dat.gz ... download data to a gz file named /usr/share/GeoIP/GeoIP.dat.gz Done Uncompressing gzip file ... Done Performing sanity checks ... Database type is 1 database_info FAIL null Received Error -21 (Sanity check database_info string failed) when attempting to update GeoIP Database хотя нет - под установленной Росой так же, да и раньше Иркутск определяло по моему IP нормально. В скачиваемом файлике одна строчка: "Invalid user ID" У нас автообновление происходит не через geoipupdate, а собственным скриптом /etc/cron.monthly/geoip. Этот скрипт просто скачивает два файла напрямую, а не через API. Но, поскольку с кроном я практически не знаком, то я не знаю, как система определяет, в какой момент надо запускать задание. Может быть, она трактует его сразу как пропущенное и пускает при первой возможности, может быть, смотрит, что это ежемесячный запуск и решает ждать ещё один месяц... А может быть, делает то так, то эдак, в зависимости от фазы луны. Короче, я занимаюсь обновлением базы (а заодно, если получится, и самого geoip). Когда попадёт в образ, эта проблема уйдёт сама собой. Доработок в инсталляторе поэтому больше не планирую. А можно просто вручную этот скрипт запустить и подождать три секунды? Через крон при старте инсталлятора это несколько извращение. (In reply to comment #24) > А можно просто вручную этот скрипт запустить и подождать три секунды? Тремя секундами дело не обойдётся, база городов довольно объёмная, да и тамошний сервер далеко не всегда на полной скорости данные отдаёт. > Через крон при старте инсталлятора это несколько извращение. Да никто его через крон и не собирается запускать при старте инсталлятора. Это просто системное задание. Случайно получилось так, что запустил его крон сразу при старте системы - ну получилось, и получилось. А не запустил - ну и фиг с ним. Гм. Я тут посмотрел - а у нас кажется поломался крон. Во всех новых моих системах, с начала мая стоят старые геоданные. С кроном надо разбираться отдельно, а пока попробуй этот образ, в нём базы обновлены. https://abf.rosalinux.ru/platforms/rosa2014.1/products/111/product_build_lists/11502 Если опять что-то пойдёт не так, то скинь лог, как раньше (логирование в этом образе присутствует). а инсталлер в этом образе новый? Чтоб не качать несколько раз. По функциональности - да, но пакет тут отличается от того, что отправлен на QA: здесь добавлено логирование GeoIP, которое в релиз идти не должно (собирал из персональной тестовой ветки, надстроенной "поверх" последней текущей версии инсталлятора). А, стоп, по функциональности всё же отличается. Я в это логирование запихивал принудительное присвоение IP (чтобы проверить гипотезу, что IP передавался с лишними символами, и они мешали найти запись в базе), поэтому у всех пользователей город будет определяться как Иркутск. :-) Так что образ этот лучше не распространять. Сейчас запущу сборку более "чистого". Закрываю, работает Но странно, что в последних образах, которые я собирал с Plasma 5, в первом GeoIP выдало мне Москву, во втором Владивосток, а в третьем снова Москву. Какой-то плавающий баг появился на неделе. (In reply to comment #33) > Но странно, что в последних образах, которые я собирал с Plasma 5, в первом > GeoIP выдало мне Москву, во втором Владивосток, а в третьем снова Москву. > Какой-то плавающий баг появился на неделе. Может, оно в каких-то случаях успевает обновляться, а в каких-то нет (In reply to comment #33) > Но странно, что в последних образах, которые я собирал с Plasma 5, в первом > GeoIP выдало мне Москву, во втором Владивосток, а в третьем снова Москву. > Какой-то плавающий баг появился на неделе. Если образы всё ещё у тебя, то сравни в них версии пакета geoip. Если 1.5.1-3, то базы старые, и могло так оказаться, что в них отсутствует твой IP (как было у Владимира с Иркутском). В 1.5.1-4 базы обновлены. (In reply to comment #35) > (In reply to comment #33) > > Но странно, что в последних образах, которые я собирал с Plasma 5, в первом > > GeoIP выдало мне Москву, во втором Владивосток, а в третьем снова Москву. > > Какой-то плавающий баг появился на неделе. > > Если образы всё ещё у тебя, то сравни в них версии пакета geoip. Если > 1.5.1-3, то базы старые, и могло так оказаться, что в них отсутствует твой > IP (как было у Владимира с Иркутском). В 1.5.1-4 базы обновлены. Во всех случаях В 1.5.1-4. Но странно даже другое, сейчас я перепроверил и у меня на проблемном образе Владивосток вместо Москвы определился уже. Получается, что баг плавающий не от образа к образу, а в рамках одного образа даже. (In reply to comment #36) > Во всех случаях В 1.5.1-4. Но странно даже другое, сейчас я перепроверил и у > меня на проблемном образе Владивосток вместо Москвы определился уже. > Получается, что баг плавающий не от образа к образу, а в рамках одного > образа даже. В голову приходят только два варианта: а) очень долго поднимающаяся сеть и б) в опакеченной базе твоего IP всё же не оказалось, но за 10 дней, прошедшие с момента обновления пакета, IP был добавлен в онлайн-базу. Для проверки проделай следующее: 1) Загрузись с образа до первого диалога, зайди в терминал Ctrl+Alt+F2, проверь свой внешний IP командой wget --output-document=- --output-file=/tmp/myip-wget.log --server-response --timeout=3 --tries=1 http://www.rosalab.ru/myip Если сети ещё нет, дождись появления и повтори команду. 2) Запиши IP, отключи сетевой кабель. Теперь снова перезагрузись с образа и зайди в терминал. Выполни команду: geoiplookup -f /usr/share/GeoIP/GeoLiteCity.dat 93.182.24.157 подставив сюда свой адрес. Проверь, что выводится. 3) Выполни команду: md5sums /usr/share/GeoIP/GeoLiteCity.dat и забрось куда-нибудь полученный хэш. Ну или забэкапь сам файл для последующего сравнения. 4) Подключи сеть, дождись инициализации и коннекта в Интернет. Выполни команду: /etc/cron.monthly/geoip дождись завершения, по выводу скрипта проследи, чтобы файл GeoLiteCity.dat был корректно скачан и распакован. 5) После завершения обновления GeoIP-базы проверь md5-сумму для /usr/share/GeoIP/GeoLiteCity.dat (или сравни сами файлы, если делал бэкап) - это покажет, отличается ли онлайн-версия базы от пакетной. Если отличается, то снова выполни geoiplookup. Выложи сюда выводы всех команд. (In reply to comment #37) > 1) Загрузись с образа до первого диалога, зайди в терминал Ctrl+Alt+F2, > проверь свой внешний IP командой > wget --output-document=- --output-file=/tmp/myip-wget.log --server-response > --timeout=3 --tries=1 http://www.rosalab.ru/myip > Если сети ещё нет, дождись появления и повтори команду. 89.107.82.201 для хоста и для гостя. > 2) Запиши IP, отключи сетевой кабель. Теперь снова перезагрузись с образа и > зайди в терминал. Выполни команду: > geoiplookup -f /usr/share/GeoIP/GeoLiteCity.dat 93.182.24.157 > подставив сюда свой адрес. Проверь, что выводится. С новым GeoIP: $ geoiplookup -f /usr/share/GeoIP/GeoLiteCity.dat 89.107.82.201 GeoIP City Edition, Rev 1: RU, N/A, N/A, N/A, N/A, 55.750000, 37.616600, 0, 0 С базой GeoIP из rosa2014.1/main/release: $ geoiplookup -f /usr/share/GeoIP/GeoLiteCity.dat 89.107.82.201 GeoIP City Edition, Rev 1: RU, 59, Primor'ye, Vladivostok, N/A, 43.133301, 131.899994, 0, 0 > 5) После завершения обновления GeoIP-базы проверь md5-сумму для > /usr/share/GeoIP/GeoLiteCity.dat (или сравни сами файлы, если делал бэкап) - > это покажет, отличается ли онлайн-версия базы от пакетной. Если отличается, > то снова выполни geoiplookup. Выложи сюда выводы всех команд. Не отличается от текущей пакетной. Но текущая онлайн-версия (она же текущая пакетная) почти в два раза меньше той, что была у нас год назад. Ну тогда выбирайте с Владимиром, что важнее: Иркутск, который только в новой базе, или Владивосток, который только в старой. Или, если кто умеет мёрджить базы GeoIP, пусть сделает объединённую. (In reply to comment #39) > Ну тогда выбирайте с Владимиром, что важнее: Иркутск, который только в новой > базе, или Владивосток, который только в старой. Или, если кто умеет мёрджить > базы GeoIP, пусть сделает объединённую. Объединить было бы лучше всего. Посмотрю, смогу ли это сделать. Если не получится, то лучше будет откатиться до старых баз, т.к. если новая база городов стала в два раза меньше по объёму, то там не только у Владивостока проблемы, надо полагать. Не нашёл простого способа смержить базы, т.к. старая база у нас только в бинарном формате, а из конвертера из бинарного формата обратно в cvs я не нашёл. IMHO, лучше откатить базы до тех, которые в два раза больше. А в других дистрах посмотреть? (In reply to comment #42) > А в других дистрах посмотреть? Посмотри, если есть время :-) Я пока пересобрал со старыми базами: https://abf.rosalinux.ru/build_lists/2512168 https://abf.rosalinux.ru/build_lists/2512169 Посмотрел, везде (даже в магее) уже 1.6 версия. Думается, не надо на старые базы западать (они все равно обновятся и прекратят работать). Что есть, то есть. А вот на 1.6 бы перейти неплохо. (In reply to comment #45) > Посмотрел, везде (даже в магее) уже 1.6 версия. > Думается, не надо на старые базы западать (они все равно обновятся и > прекратят работать). Что есть, то есть. А вот на 1.6 бы перейти неплохо. 1.5 legacy уже. По-моему, там всё в ветке 1.x уже legacy. 1.5/1.6 - это версия API, нам она пока до лампочки. У нас всё упирается в файлы баз, а они от версии не зависят (не считая смены формата в версии 2, но это надо все языковые API адаптировать и пересобирать). Вообще, когда я занимался обновлением баз, я попытался заодно обновить и сам API до последней имеющейся легаси-версии - 1.6.5, но обнаружил, что там вынесли апдейтер в отдельный проект, и теперь он собирается без библиотеки libGeoIPUpdate.so. Я не знаю, требуется ли эта библиотека где-нибудь, а исследовать ещё и это, влезая всё глубже и глубже в побочный для меня проект, не было ни желания, ни, вообще говоря, необходимости, поэтому ограничился обновлением только самих баз. Если ОЧЕНЬ сильно надо, и имеется точная инфа, что та апдейтерская библиотека не нужна (или имеется инфа, как её собрать из нового проекта), то можно перейти на 1.6, почти готовый поправленный спек у меня в локальном гите остался. Как компромисс - в федоровском пакете GeoIP-1.5.1-6.fc21.i686.rpm нашел базу от 4 февраля, побольше чем наша и там есть и Владивосток, и Иркутск Правда т.к. у Андрея на одном и том же образе то работало, то не работало - значит в обновлениях его ip то появляется, то исчезает и с этим ничего поделать нельзя, разве что обновления отключить. (In reply to comment #49) > Правда т.к. у Андрея на одном и том же образе то работало, то не работало - > значит в обновлениях его ip то появляется, то исчезает и с этим ничего > поделать нельзя, разве что обновления отключить. Просто провайдер выдаёт разные IP. И какие-то из них есть в новой бесплатной базе, а каких-то нет. IMHO, они просто урезали новую бесплатную базу, чтобы было больше желающих купить платную. (In reply to comment #48) > Если ОЧЕНЬ сильно надо, и имеется точная инфа, что та апдейтерская > библиотека не нужна (или имеется инфа, как её собрать из нового проекта), то > можно перейти на 1.6, почти готовый поправленный спек у меня в локальном > гите остался. Не, сильно не надо. (In reply to comment #49) > Как компромисс - в федоровском пакете GeoIP-1.5.1-6.fc21.i686.rpm нашел базу > от 4 февраля, побольше чем наша и там есть и Владивосток, и Иркутск Попробуй, что там будет с адресом: $ geoiplookup -f /usr/share/GeoIP/GeoLiteCity.dat 89.107.82.201 Будет ли N/A или Vladivostok. geoiplookup -f /usr/share/GeoIP/GeoLiteCity.dat 89.107.82.201 GeoIP City Edition, Rev 1: RU, 59, Primor'ye, Vladivostok, N/A, 43.121101, 131.922607, 0, 0 (In reply to comment #53) > geoiplookup -f /usr/share/GeoIP/GeoLiteCity.dat 89.107.82.201 > GeoIP City Edition, Rev 1: RU, 59, Primor'ye, Vladivostok, N/A, 43.121101, > 131.922607, 0, 0 Тогда давай попробуем эту базу взять. Дай ссылку на RPM-пакет, где она была? Если так, то, наверное, имеет смысл выкинуть наш крон-обновлятор? А то он при первой же возможности стащит урезанную онлайн-базу. (In reply to comment #55) > Если так, то, наверное, имеет смысл выкинуть наш крон-обновлятор? А то он > при первой же возможности стащит урезанную онлайн-базу. Да, лучше выкинуть. Судя по размеру базы из пакета Федоры, там просто другие айпишники убрали. Может периодически новая бесплатная база случайным образом генерируется, берётся мегов 15 случайных адресов. Лучше оставим нашу старую. "Устарелость" тоже играет. Проверил по старой базе еще Урала в Самаре - его тоже не находит. А предлагаемая мной находит. Итого "старая" находит Владивосток, "новая" - Владивосток, Иркутск и Самару Проверил резервный мобильный канал. Старая большая база вообще не знает такой IP, предлагаемая определяет страну. Теоретически, можно написать прогу или скрипт, который тупо перечислит все айпишники в базе, вытащит данные и сбросит их в CSV-формат (или в какой удобно) для последующего мёрджа. Вроде, там даже есть функции по получению диапазонов, т. е. перебирать придётся не все 4 миллиарда значений, а скакать по целым диапазонам. Собрал тестовые пакеты с федоровской версией баз и с выкинутым крон-заданием. https://abf.rosalinux.ru/build_lists/2513075 https://abf.rosalinux.ru/build_lists/2513076 Тестовые образы: https://abf.rosalinux.ru/platforms/rosa2014.1/products/111/product_build_lists/11815 (64) https://abf.rosalinux.ru/platforms/rosa2014.1/products/111/product_build_lists/11816 (32) В пакете не та база. Не совпадает ни размер, ни дата с федоровской, ни ip АНдрея не пробивается. (In reply to comment #62) > В пакете не та база. Не совпадает ни размер, ни дата с федоровской, ни ip > АНдрея не пробивается. В груде сообщений не обратил внимания, что под "федоровской базой" подразумевалась не та, что сейчас в Федоре (и которую я стащил), а та, что в конкретной старой версии пакета. Пересобрал с базами из старого пакета: https://abf.rosalinux.ru/build_lists/2514930 https://abf.rosalinux.ru/build_lists/2514931 P.S. А даты файлов всегда будут отличаться: для сборки файл надо перезалить на файл-стор, и, разумеется, никакие метаданные при этом не сохраняются. Все нормально, только забыл релиз-версию поднять. Поскольку предыдущий вариант не был опубликован (даже в тестинг), я решил, что поднимать релиз нет необходимости. geoip-1.5.1-6 https://abf.rosalinux.ru/build_lists/2514930 https://abf.rosalinux.ru/build_lists/2514931 **************************** Advisory ****************************** New version without cron update ******************************************************************** QA Verified |