Автор Тема: пакет с Kiwix ("читалка" офлайн версии Википедии и др.)  (Прочитано 10419 раз)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 168
    • Домашняя страница
Отправил в Sisyphus. Как доедет, скопирую в p7. Завтра с утра можете ставить:

apt-get update
apt-get install kiwix

Пожелания принимаются в багзилле.
Андрей Черепанов (cas@)

Оффлайн EasyLinuxoid

  • Участник
  • *
  • Сообщений: 51
Быстро! я думал, через несколько недель  даже при благожелательном раскладе появится пакет в Сизифе. СПАСИБО!
А можете рассказать как  это всё проделали, какие встретили препятствия и как их обошли?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 168
    • Домашняя страница
А можете рассказать как  это всё проделали, какие встретили препятствия и как их обошли?
1. Посмотрел, что проект собирается из Git. Это большой плюс, так как легче установить свежую версию (в git уже rc3), потом обновлять и тянуть интересные патчи. Склонировал себе:
git clone git://git.code.sf.net/p/kiwix/kiwix
2. Написал двустрочное правило .gear/rules для создания архива исходников, из которого уже будет собираться пакет через gear-hsh и основную сборочницу, и нестандартного расположения спека (в подкаталоге .gear)

3. Взял src.rpm от уважаемого YYY на предмет заготовки спека (всё равно его нужно упрощать и убирать хаки). Оттуда взял основные поля и зависимости.
Первым делом поменял %release. Так как версия rc3, она переносится из номера версии в номер релиза, а номер уменьшается до alt0 (выпущенная версия имела бы релиз alt1) и добавляем короткий номер последнего коммита Git (см. git log --oneline). Для удобства коммит указываем сверху спека через %define.

4. На официальном сайте kiwix посмотрел нормальное описание (summary и description) и заменил его в спеке. Там же посмотрел список зависимостей и добавил нужное в спек, подсматривая packages.altlinux.org (ссылка «Пакеты» вверху форума).

5. Начал приводить секцию %build к унифицированным макросам. Так как используется configure, нужно добавить макрос %autoreconf.
Запускаю сборку, automake обламывается на отсутствии файлов NEWS и ChangeLog (помним, что в UNIX имена файлов чувствительны к регистру!). В %prep добавляем:
touch NEWS
mv CHANGELOG ChangeLog

6. Прочитал COMPILE, сглупил и из COMPILE к configure добавил красивые опции --enable-compileall --disable-android
Опцию --enable-staticbins не стал брать — статические бинарники в нормальном репозитории не нужны.
И вот тут я конкретно встрял, так как Gecko не определялся.

Совет: не вставлять незнакомых опций!

7. Нашёл в исходниках спек для Fedora. Взял оттуда --with-gecko-sdk=%_libdir/xulrunner-devel. Не помогло.
Методом исключения убрал --enable-compileall и, ура!, сборка пошла. До ошибке об отсутствующих зависимостях.

8. Далее нудно в несколько заходов запускаем hsh-install <пакет> && hsh-shell и там configure.

9. Выяснилось, что в ALT Linux вообще не собраны zimlib и pugixml. Собрал отдельно zimlib из Fedora (по полиси библиотеки в ALT Linux должны начинаться с lib..., поэтому переименовал в libzim) и с autoimports.altlinux.org взял pugixml. Вот с ним пришлось повозиться.

10. При сборке выяснилось, что софт хочет aria2c (а у нас есть только бинарник aria2). Благо, есть опция у configure.

Совет: перед хаками посмотрите, нет ли параметра у configure (./configure --help)

11. При сборке с xulrunner она не нашла заголовочных файлов nspr (они в ALT Linux в подкаталоге лежат). Добавляем -I/usr/include/nspr к CXXFLAGS. Проще всего это сделать макросом (сразу после %build):
%add_optflags -I/usr/include/nspr
12. Заменяем запуск сборки и установки на стандартные макросы: %make_build и %makeinstall_std
Стандартные макросы хороши тем, что подставляют всё что нужно и программы собираются и ставятся как надо и куда надо.

Совет: лучше всегда использовать готовые макросы в спеке.

Полученная секция %build (для красоты параметры configure указывается по одному в строке с отступом (не забываем про \ в конце переводимой строки):
%build
%add_optflags -I/usr/include/nspr
%autoreconf
%configure --disable-android \
           --with-gecko-sdk=%_libdir/xulrunner-devel \
           --with-aria2=%_bindir/aria2
%make_build

13. Убираем секции %post и %posun — триггеры в ALT Linux умны настолько, чтобы не заморачиваться с прописыванием библиотек и обновлением значков. Эти секции используются только в настоящих хаках и создании пользователей для служб.

14. Убираем федорные атавизмы типа %defattr(-,root,root) в секции %files

15. Я люблю более читаемый код и потому фигурные скобки в именах макросов RPM используют только когда без них не обойтись. То есть заменяю: %{_sysconfdir}/* на %_sysconfdir/*

16. Тихий ужас в виде %{_datadir}/* оставлять нельзя, лучше прописать все установленные каталоги явно. Для этого удаляем эту запись и смотрим, какие файлы не упакованы. Вместо %{_datadir}/* получаем:
%_desktopdir/%name.desktop
%_datadir/application-registry/%name.applications
%_datadir/%name
%doc %_man1dir/*
%doc %_mandir/fr/man1/*
%_xdgmimedir/packages/%name.xml
%_iconsdir/%name
%_pixmapsdir/*
Обратите внимание на использование макросов %_desktopdir %_man1dir %_iconsdir %_pixmapsdir %_xdgmimedir. Они повышают читаемость, так как не нужно указывать весь путь.
Ещё интересен макрос %doc в начале строки — он помечает файлы как документацию (показываются командой rpm -qd <имя пакета>).

17. Заключительным этапом добавляем запись в %changelog. Я это делаю командой \ac в vim (при установленном пакете vim-plugin-spec_alt-ftplugin). Есть утилита add_changelog (пакет rpm-utils).

18. Собираю командой gear-hsh $TMPDIR --commit  до тех пор, пока сборка не проходит, потерянных файлов нет и всё в порядке.

19. Коммитим нашу работу и делаем тег:
gear-commit -a
gear-create-tag
Эти утилиты пропишут правильное описание коммита и верный номер тега из номера версии и релиза спека.

20. Добавляем remote и пушим на git.altlinux.org:
ssh git.alt init-db kiwix
git remote add origin git.alt:packages/kiwix
git push origin <бранч> <тег>
Я обычно бранч переименовываю в sisyphus, а текущий тег подставляет скриптик.

21. Сборка в сборочнице:
ssh git.alt build kiwix <тег>
Всё, пакет в репозитории! :)
« Последнее редактирование: 15.01.2014 12:06:57 от Skull »
Андрей Черепанов (cas@)

Оффлайн EasyLinuxoid

  • Участник
  • *
  • Сообщений: 51
Отправил в Sisyphus. Как доедет, скопирую в p7. Завтра с утра можете ставить:

apt-get update
apt-get install kiwix

Пожелания принимаются в багзилле.
Извиняюсь за задержку с ответом, хотя кивикс из репозитория поставил на следующий день.
Пока не знаю как написать в багзиллу, пишу здесь.
1)Проблем с устновкой из репозитория никаких не обнаружилось.
2)В меню в разделе "Образование" появился значок запуска Kiwix
3) Запуск под обычным пользователем выдаёт ошибку "Не удалось выполнить команду <kiwix %f> (Не удалось выполнить процесс-потомок <kiwix>(Нет такого файла или каталога).
4) В терминале если запустить /usr/lib64/kiwix/kiwix то он запускается, но при попытке скачать из библиотеки новые zim файлы ничего не получается- скачивание происходит с помощью aria2с и хотя она в системе установлена, но почему-то не скачивается.

5) Если добавить путь /usr/lib64/kiwix в переменную path, то kiwix из консоли запускается !
« Последнее редактирование: 18.01.2014 22:16:02 от EasyLinuxoid »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 168
    • Домашняя страница
4) В терминале если запустить /usr/lib64/kiwix/kiwix то он запускается, но при попытке скачать из библиотеки новые zim файлы ничего не получается- скачивание происходит с помощью aria2с и хотя она в системе установлена, но почему-то не скачивается.
Даже если поставить пакет aria2 и сделать симлинк aria2c, всё равно скачиваться не будет.
Андрей Черепанов (cas@)

Оффлайн EasyLinuxoid

  • Участник
  • *
  • Сообщений: 51
Даже если поставить пакет aria2 и сделать симлинк aria2c, всё равно скачиваться не будет.
Нужно обязательно интегрировать aria2c в Kiwix?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 168
    • Домашняя страница
Даже если поставить пакет aria2 и сделать симлинк aria2c, всё равно скачиваться не будет.
Нужно обязательно интегрировать aria2c в Kiwix?
Я уже сделал запрос о переименовании исполняемого файла. Но там проблема в другом. Причём через strace её отлаживать при ураганной сетевой активности (а логов нормальных она не ведёт) — дело муторное. В профиле вижу, что пытается локально постучаться, а ссылку из библиотеки вообще не ставит в очередь. Стойкое ощущение, что программное обеспечение писали русские (или прикладывали к нему руку). А уж локализация на русский язык там просто убийственная. Так и 10 лет назад уже не переводили.
Андрей Черепанов (cas@)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 168
    • Домашняя страница
Отправил в Sisyphus kiwix-0.9-alt0.rc3.git3704cdd.1 с исправлениями замечаний (кроме починки собственно скачивания)+локализация в меню. Как починю скачивание, отправлю в p7.
Андрей Черепанов (cas@)

Оффлайн EasyLinuxoid

  • Участник
  • *
  • Сообщений: 51
ссылку из библиотеки вообще не ставит в очередь. Стойкое ощущение, что программное обеспечение писали русские (или прикладывали к нему руку). А уж локализация на русский язык там просто убийственная. Так и 10 лет назад уже не переводили.
Можно взять версию с сайта и по ней посмотреть что ей требуется и куда она лезет. Она сначала должна посмотреть на официальный сайт есть ли новые zim файлы, и если есть, то предложить  посмотреть их пользователю.  Кивикс  я так понимаю поддерживается швейцарским фондом Викимедиа   и другими Викимедиа Фондами( Франции и тд). Wikimedia CH . Основной разработчик Энгельхарт (кроме него не видел, чтобы кто-то ещё отвечал на форумах), хотя по той же ссылке их несколько прописано. Перевод программы я видел, что не полный, и может не совсем верный, но посчитал его сносным, и перевёл в первую очередь основные страницы сайта Кивикс на русский язык. Тот факт, что по русски не было ни слова на сайте говорит о том, что русских там не было совсем при разработке!

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 168
    • Домашняя страница
ссылку из библиотеки вообще не ставит в очередь. Стойкое ощущение, что программное обеспечение писали русские (или прикладывали к нему руку). А уж локализация на русский язык там просто убийственная. Так и 10 лет назад уже не переводили.
Можно взять версию с сайта и по ней посмотреть что ей требуется и куда она лезет. Она сначала должна посмотреть на официальный сайт есть ли новые zim файлы, и если есть, то предложить  посмотреть их пользователю.
Там всё хитрее:
1. aria2c не распознаёт код HTTP 302 (в отличие от wget) и не скачивает сам бинарный файл .zim с офсайта.
2. Если его скачать wget, то он прекрасно открывается как локальный файл.
3. Это не отменяет тот факт, что происходит затык при скачивании (похоже, даже для вызова aria2c не доходит).

P.S. В aria2 вернули оригинальное имя исполняемого файла arai2c.
Андрей Черепанов (cas@)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 168
    • Домашняя страница
После выпуска дистрибутивов 7.0.3 решил вернуться в Kiwix. Архивы там не скачивались потому, что у нас не все возможности в aria2 используются. Пересобрал aria2, немного подпатчил kiwix в задании 115359 (пока только для Sisyphus). Ждём, пока обновят с моими изменениями aria2 в Sisyphus.
Андрей Черепанов (cas@)

Оффлайн EasyLinuxoid

  • Участник
  • *
  • Сообщений: 51
если заработает библиотека в Kiwix на Альте - это будет уже половина дела, новые zim файлы стали выходить чаще,чем раньше.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 168
    • Домашняя страница
если заработает библиотека в Kiwix на Альте - это будет уже половина дела, новые zim файлы стали выходить чаще,чем раньше.
Отправил в p7, не дожидаясь обновления в Sisyphus. Завтра будет в репозитории.
Андрей Черепанов (cas@)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 168
    • Домашняя страница
если заработает библиотека в Kiwix на Альте - это будет уже половина дела, новые zim файлы стали выходить чаще,чем раньше.
Отправил в p7, не дожидаясь обновления в Sisyphus. Завтра будет в репозитории.
Прошу прощения, задание ещё не успело собраться.
Андрей Черепанов (cas@)

Оффлайн EasyLinuxoid

  • Участник
  • *
  • Сообщений: 51
Вышел  наконец-то английский zim файл с Википедией . С картинками 42 Гб, без картинок 12 Гб.
Новый Kiwix с поддержкой библиотеки (рабочей aria2) попробую сегодня вечером и отпишусь.