Сборка пакетов-расширений для TeXLive — различия между версиями
D uragan (обсуждение | вклад) (Creation) |
D uragan (обсуждение | вклад) (+ note about scripts folder) |
||
(не показано 6 промежуточных версий этого же участника) | |||
Строка 18: | Строка 18: | ||
Source1: http://mirrors.ctan.org/systems/texlive/tlnet/archive/<TEXPKG>.doc.tar.xz | Source1: http://mirrors.ctan.org/systems/texlive/tlnet/archive/<TEXPKG>.doc.tar.xz | ||
Source2: http://mirrors.ctan.org/systems/texlive/tlnet/archive/<TEXPKG>.source.tar.xz | Source2: http://mirrors.ctan.org/systems/texlive/tlnet/archive/<TEXPKG>.source.tar.xz | ||
+ | |||
+ | Все эти файлы необходимо скачать и загрузить на http://file-store.rosalinux.ru/. Для аутентификации необходимо использовать те же логин и пароль, что и на ABF. Для каждого файла File Store сгенерирует хэш, который необходимо прописать в гите в файле .abf.yml, например как в https://abf.io/import/texlive-accents/blob/rosa2019.1/.abf.yml | ||
Внутри ахивов обязательно есть папки {{File|tlpkg/tlpobj}} - в них лежат файлы с информацией о пакете. Если вдруг на страничке пакета не оказалось | Внутри ахивов обязательно есть папки {{File|tlpkg/tlpobj}} - в них лежат файлы с информацией о пакете. Если вдруг на страничке пакета не оказалось | ||
Строка 37: | Строка 39: | ||
BuildArch: noarch | BuildArch: noarch | ||
− | (если пакет является архитектурно-зависимым, то rpmbuild его не соберет с | + | (если пакет является архитектурно-зависимым, то rpmbuild его не соберет с соответствующей ошибкой - тогда BuildArch надо убрать). |
Всем texlive-пакетам необходимо прописать сборочную зависимость (BuildRequires) от {{Pkg|texlive-tlpkg}}. Этот же пакет | Всем texlive-пакетам необходимо прописать сборочную зависимость (BuildRequires) от {{Pkg|texlive-tlpkg}}. Этот же пакет | ||
Строка 47: | Строка 49: | ||
%setup -c -a0 -a1 -a2 | %setup -c -a0 -a1 -a2 | ||
− | секция '''%build''' отсутствует, а '''%install''' сводится к копированию директорий, содержащихся внутри архивов (за исключением директории tlpkg), в %{buildroot}%{_texmfdistdir} (которую надо предварительно создать): | + | секция '''%build''' отсутствует, а '''%install''' сводится к копированию директорий, содержащихся внутри архивов (за исключением директории {{File|tlpkg}}), в {{File| %{buildroot}%{_texmfdistdir} }} (которую надо предварительно создать): |
%install | %install | ||
Строка 63: | Строка 65: | ||
%doc %{_texmfdistdir}/doc/latex/<TEXPKG> | %doc %{_texmfdistdir}/doc/latex/<TEXPKG> | ||
− | Подготовив spec-файл и скачав архивы с исходным кодом, необходимо убедиться в возможности собрать пакет с помощью | + | Подготовив spec-файл и скачав архивы с исходным кодом, необходимо убедиться в возможности собрать пакет с помощью {{Cmd|rpmbuild -bb}}. Если проблем нет - то собираем src.rpm ({{Cmd|rpmbuild -bs}}) и создаем из него проект в своем репозитории на ABF. |
Примеры texlive пакетов: | Примеры texlive пакетов: | ||
− | https://abf.io/import/texlive-mpgraphics | + | * https://abf.io/import/texlive-mpgraphics |
− | https://abf.io/import/texlive-mceinleger | + | * https://abf.io/import/texlive-mceinleger |
− | https://abf.io/import/texlive-makecmds | + | * https://abf.io/import/texlive-makecmds |
(смотрите ветку rosa2019.1) | (смотрите ветку rosa2019.1) | ||
+ | |||
+ | == Пакеты со скриптами == | ||
+ | Для некоторых модулей по ссылке http://ctan.altspu.ru/systems/texlive/tlnet/archive/ | ||
+ | доступен не только архив с исходным кодом, но и дополнительные пакеты под разные ОС и архитектуры. Для некоторых модулей таких пакетов нет, однако внутри архива с исходным кодом лежит папка {{File|scripts}}. | ||
+ | Для всех таких модулей помимо описанных выше действий надо произвести дополнительные манипуляции, | ||
+ | добавив файлы, присутсвующие в ОС-специфичных пакетах. Как правило, эти манипуляции | ||
+ | сводятся к созданию символьных ссылок на скрипты в местах, где в ОС располагаются файлы для запуска | ||
+ | (в случае Linux - в директории /bin или /usr/bin). | ||
+ | |||
+ | Например, для a2ping мы видим следующие файлы: | ||
+ | |||
+ | ... | ||
+ | a2ping.tar.xz | ||
+ | a2ping.win32.tar.xz | ||
+ | a2ping.x86_64-cygwin.tar.xz | ||
+ | a2ping.x86_64-darwin.tar.xz | ||
+ | a2ping.x86_64-darwinlegacy.tar.xz | ||
+ | a2ping.x86_64-linux.tar.xz. | ||
+ | ... | ||
+ | |||
+ | Скачаем a2ping.x86_64-linux.tar.xz и заглянем внутрь - там помимо служебной директории {{File|tlpgk}} мы увидим директорию {{File|bin}}, внутри нее директорию {{File|x86_64-linux}}, а там - символьную ссылку {{File|a2ping}}: | ||
+ | |||
+ | <pre> | ||
+ | $ tar xf a2ping.x86_64-linux.tar.xz | ||
+ | $ ls -l bin/x86_64-linux/ | ||
+ | total 0 | ||
+ | lrwxrwxrwx 1 user users 41 Oct 4 2018 a2ping -> ../../texmf-dist/scripts/a2ping/a2ping.pl | ||
+ | </pre> | ||
+ | |||
+ | Как видим, ссылается она на скрипт ../../texmf-dist/scripts/a2ping/a2ping.pl | ||
+ | |||
+ | Сам скрипт находится в архиве с исходным кодом (a2ping.tar.xz), в директории {{File|texmf-dist}}. При сборке пакета, мы должны положить содержимое texmf-dist в директорию %{buildroot}%{_texmfdistdir}, а в директории %{buildroot}%{_bindir} создать соответсвующую символьную ссылку: | ||
+ | |||
+ | <pre> | ||
+ | mkdir -p %{buildroot}%{_texmfdistdir} | ||
+ | cp -fpar texmf-dist/* %{buildroot}%{_texmfdistdir} | ||
+ | mkdir -p %{buildroot}%{_bindir} | ||
+ | pushd %{buildroot}%{_bindir} | ||
+ | ln -sf %{_texmfdistdir}/scripts/a2ping/a2ping.pl a2ping | ||
+ | popd | ||
+ | </pre> | ||
+ | |||
+ | Пример: | ||
+ | * https://abf.io/import/texlive-a2ping | ||
[[Категория:Практика студентов]] | [[Категория:Практика студентов]] |
Текущая версия на 00:55, 20 декабря 2022
TeX - система компьютерной вёрстки, широко используемая по всему миру.
В Linux в настоящее время активно используется реализация от проекта texlive, которая включает в себя не просто основные инстурменты верстки, но и множество дополнений и расширений (дополнительных шрифтов, пакетов с поддержкой разлицных языков, шаблонов диссертаций и презентаций и так далее).
В РОСЕ каждое такое дополнение оформляется как отдельный RPM-пакет.
Рассмотрим процесс упаковки расширения с названием TEXPKG в пакет texlive-<TEXPKG>
Сначала проверяем, что страничка пакета доступна по адресу http://www.ctan.org/tex-archive/macros/latex/contrib/<TEXPKG>. Эта ссылка должна быть прописана в URL spec-файла. Со странички проекта берем Summary (не более 80 симполов), лицензию (тэг License) и описание (для секции %description). Если есть версия - берем ее со странички, если нет - используем в качестве версии дату, когда вы скачали исходники, в формате ГГГГММДД (например, 20191231).
Далее ищем в директории http://mirrors.ctan.org/systems/texlive/tlnet/archive/ файл <TEXPKG>.tar.xz. Там же могут находиться файлы <TEXPKG>.doc.tar.xz и <TEXPKG>.source.tar.xz - если есть, их тоже берем.
Их надо прописать в качестве Sources:
Source0: http://mirrors.ctan.org/systems/texlive/tlnet/archive/<TEXPKG>.tar.xz Source1: http://mirrors.ctan.org/systems/texlive/tlnet/archive/<TEXPKG>.doc.tar.xz Source2: http://mirrors.ctan.org/systems/texlive/tlnet/archive/<TEXPKG>.source.tar.xz
Все эти файлы необходимо скачать и загрузить на http://file-store.rosalinux.ru/. Для аутентификации необходимо использовать те же логин и пароль, что и на ABF. Для каждого файла File Store сгенерирует хэш, который необходимо прописать в гите в файле .abf.yml, например как в https://abf.io/import/texlive-accents/blob/rosa2019.1/.abf.yml
Внутри ахивов обязательно есть папки tlpkg/tlpobj - в них лежат файлы с информацией о пакете. Если вдруг на страничке пакета не оказалось каких-то данных (версии, описания и тому подобного), то поищите их здесь. Здесь же могут быть прописаны зависимости пакета от других пакетов texlive (со словом depend) - из надо обязательно указать как Requires в spec-файле.
Например, если в tlpkg/tlpobj/<TEXPKG> есть запись
depend babel-belarusian
то в spec-файле должна присутсвовать соответсвующая зависимоcть
Requires: texlive-babel-belarusian
Значение тэга Group для пакетов texlive - всегда Publishing.
Как правило, пакеты являются арзитектурно-независимыми, поэтому надо дабавить в spec-файл запись
BuildArch: noarch
(если пакет является архитектурно-зависимым, то rpmbuild его не соберет с соответствующей ошибкой - тогда BuildArch надо убрать).
Всем texlive-пакетам необходимо прописать сборочную зависимость (BuildRequires) от texlive-tlpkg. Этот же пакет надо указать как предустановочную зависимость ("Requires(pre)"). В качестве пост-установочной зависимости post-скрипта ("Requires(post)") надо указать texlive-kpathsea.
Для большинства пакетов, секция %prep сводится к распаковке архивов, например:
%setup -c -a0 -a1 -a2
секция %build отсутствует, а %install сводится к копированию директорий, содержащихся внутри архивов (за исключением директории tlpkg), в %{buildroot}%{_texmfdistdir} (которую надо предварительно создать):
%install mkdir -p %{buildroot}%{_texmfdistdir} cp -fpar fonts tex doc source %{buildroot}%{_texmfdistdir}
(проследите, чтобы скопированы были все директории из архивов, кроме tlpkg)
Эти же директории достаточно указать в секции %files, пометив sources и doc как документацию:
%files %{_texmfdistdir}/tex/latex/<TEXPKG> %{_texmfdistdir}/fonts/latex/<TEXPKG> %doc %{_texmfdistdir}/source/latex/<TEXPKG> %doc %{_texmfdistdir}/doc/latex/<TEXPKG>
Подготовив spec-файл и скачав архивы с исходным кодом, необходимо убедиться в возможности собрать пакет с помощью rpmbuild -bb. Если проблем нет - то собираем src.rpm (rpmbuild -bs) и создаем из него проект в своем репозитории на ABF.
Примеры texlive пакетов:
- https://abf.io/import/texlive-mpgraphics
- https://abf.io/import/texlive-mceinleger
- https://abf.io/import/texlive-makecmds
(смотрите ветку rosa2019.1)
Пакеты со скриптами
Для некоторых модулей по ссылке http://ctan.altspu.ru/systems/texlive/tlnet/archive/ доступен не только архив с исходным кодом, но и дополнительные пакеты под разные ОС и архитектуры. Для некоторых модулей таких пакетов нет, однако внутри архива с исходным кодом лежит папка scripts. Для всех таких модулей помимо описанных выше действий надо произвести дополнительные манипуляции, добавив файлы, присутсвующие в ОС-специфичных пакетах. Как правило, эти манипуляции сводятся к созданию символьных ссылок на скрипты в местах, где в ОС располагаются файлы для запуска (в случае Linux - в директории /bin или /usr/bin).
Например, для a2ping мы видим следующие файлы:
... a2ping.tar.xz a2ping.win32.tar.xz a2ping.x86_64-cygwin.tar.xz a2ping.x86_64-darwin.tar.xz a2ping.x86_64-darwinlegacy.tar.xz a2ping.x86_64-linux.tar.xz. ...
Скачаем a2ping.x86_64-linux.tar.xz и заглянем внутрь - там помимо служебной директории tlpgk мы увидим директорию bin, внутри нее директорию x86_64-linux, а там - символьную ссылку a2ping:
$ tar xf a2ping.x86_64-linux.tar.xz $ ls -l bin/x86_64-linux/ total 0 lrwxrwxrwx 1 user users 41 Oct 4 2018 a2ping -> ../../texmf-dist/scripts/a2ping/a2ping.pl
Как видим, ссылается она на скрипт ../../texmf-dist/scripts/a2ping/a2ping.pl
Сам скрипт находится в архиве с исходным кодом (a2ping.tar.xz), в директории texmf-dist. При сборке пакета, мы должны положить содержимое texmf-dist в директорию %{buildroot}%{_texmfdistdir}, а в директории %{buildroot}%{_bindir} создать соответсвующую символьную ссылку:
mkdir -p %{buildroot}%{_texmfdistdir} cp -fpar texmf-dist/* %{buildroot}%{_texmfdistdir} mkdir -p %{buildroot}%{_bindir} pushd %{buildroot}%{_bindir} ln -sf %{_texmfdistdir}/scripts/a2ping/a2ping.pl a2ping popd
Пример: