Как собрать инсталлятор virtuemart 4 самостоятельно вручную из репозитория
Разработчик электронного магазина virtuemart, начиная с версии 4.0.14, ввел новую схему распространения пакета
https://virtuemart.net/news/effective-and-sustainable-funding-with-a-virtuemart-membership. Пакет остается полностью бесплатным, но в виде готовых инсталляторов распространяется только по платной подписке. Те пользователи, которые не оплачивают подписку, смогут получать новые версии с опозданием (каким именно, разработчик пока не сообщил). Но при этом разработчик предоставил доступ к svn-репозиторию, из которого любой желающий может самостоятельно собрать и установить свежую версию virtuemart.
То есть желающие оперативно использовать свежую версию пакета с последними исправлениями, должны или воспользоваться платной подпиской, или установить пакет из репозитория.
Скачать репозиторий можно, например, с помощью TortoiseSVN
https://tortoisesvn.net/downloads.html. Инструкцию по скачиванию можно найти, например, здесь
http://dir.by/developer/svn/tortoise_svn_checkout/.
Для автоматической сборки инсталлятора разработчик использует пакет phing. Описание в папке репозитория vm_build.
Поскольку для сборки через phing требуется, как минимум, установить и настроить этот пакет, что для большинства пользователей сложно, разработчик virtuemart предлагает ручной способ установки
https://docs.virtuemart.net/tutorials/installation-migration-upgrade/how-to-update-virtuemart-from-svn.
К сожалению, эта инструкция недостаточно детализирована и не учитывает некоторые тонкости.
Во-первых, вместо указанного в статье разработчиком адреса репозитория для скачивания через TortoiseSVN следует использовать
https://dev.virtuemart.net/svn/virtuemart/trunk/virtuemart.
Во-вторых, русская локализация в репозитории вероятно устаревшая. Ее файлы по размерам меньше, чем у свежей, а после установки многие переменные оказываются неопределенными. Поэтому после ручной установки пакета следует обновить пакет локализации, например, установив его от версии 4.0.12.
В третьих, в файлах *.php и *.htm репозитория не указан прямо номер версии. Имеются переменные ${PHING.VM.RELEASE} и ${PHING.VM.REVISION} (номер версии и сборки). Эти переменные и еще некоторые определяются в том числе в файле build_virtuemart3.xml в папке vm_build репозитория, и вероятно должны быть подставлены при сборке через phing. Но почему-то в доступном текущем репозитории в этом файле указаны данные от версии 4.0.12.
В любом случае при ручном обновлении пакета во избежание возможных проблем желательно заменить указанные переменные на нужные значения (для версии 4.0.14 - на значения 4.0.14 и 10805). В папке vm_update и скрытой папке .svn менять эти значения смысла не имеет, так как эти папки не переносятся при ручной установке. Можно еще заменить переменную ${PHING.VM.RELDATE} на текущую дату сборки (например, 10 May 2023).
Эти переменные возможно нужны для корректной работы менеджера обновлений расширений.
Значение переменной ${PHING.VM.UPDATEFOLDER} меняем на vm3. Эта переменная определяет путь для файлов обновления.
Есть еще переменные ${PHING.VM.DEV_STATUS} (меняется на BUGFIX), ${PHING.VM.MAINTAINERURL} (меняется на
https://virtuemart.net), ${PHING.VM.LICENSE} (меняется на
http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL) и другие.
Причем влияния этих замен на работоспособность пакета не обнаружено.
Эта замена трудоемка, но приемлема, поскольку необходимость самостоятельной установки возникает не очень часто. Несколько она упрощается при использовании far (поиск по всем подкаталогам и поиск с контекстной заменой при редактировании в найденных файлах). Far также упрощает копирование и архивирование нужных папок.
Для облегчения - осваивайте phing
Теперь непосредственно рассмотрим ручное обновление virtuemart.
Первый вариант.
Так как иерархия папок в svn совпадает с их иерархией в инсталляторе и собственно сайта, то разработчик предлагает просто скопировать папки по ftp на хостинг. При этом весь репозиторий копировать не надо, так как не все файлы из его устанавливаются на сайт (например, папки vm_build и vm_update). Достаточно обновить только те папки, которые уже имеются на сайте. После копирования заходим в панель управления virtuemart и жмем “Инструменты” -> “Инструменты и миграция” -> “DB Tools” -> “Install or if necessary update tables”.
Осторожно с файлами локализации, так как, если их перезаписать файлами из репозитория, то локализацию надо будет переустанавливать.
Второй вариант.
Разработчик предлагает самостоятельно собрать архивы с инсталляшками компонентов virtuemart. Способ требует определенной аккуратности, но позволяет получить стандартный инсталляционный пакет. При возникновении сомнений рекомендую сравнивать результаты с официальным пакетом, например, версии 4.0.12.
1. Сборка основного пакета core.
Создаем папку, в которой будем собирать инсталлятор.
В эту папку копируем папку install из папки \administrator\components\com_virtuemart\ своей копии репозитория. Отсюда же в корень сборки копируем файл virtuemart.xml.
Копируем в корень сборки папки \administrator\components\com_virtuemart и \components (с сохранением путей).
Архивируем в zip-файл.
2. Сборка шаблона администратора.
Архивируем в zip-файл содержимое папки vmadmin из папки \administrator\templates репозитория.
3. Сборка пакета aio.
Создаем папку, в которой будем собирать инсталлятор.
Далее разработчик предлагает переименовать папку Backend модуля в modulesBE. Для этого в папке для aio создаем папку modulesBE и копируем в нее папку administrator\modules\mod_vmmenu репозитория.
Копируем в корень инсталлятора папки репозитория \modules, \plugins.
Копируем в корень инсталлятора файл \libraries\src\Document\PdfDocument.php с сохранением пути.
Копируем в корень инсталлятора содержимое (!) папки \administrator\components\com_virtuemart_allinone.
Архивируем в zip-файл.
4. Сборка дополнительных шаблонов.
В папке \templates находятся дополнительные шаблоны, например, новый шаблон horme. Для создания установщика следует заархивировать в zip содержимое соответствующей папки.
07.29.2023 на
https://dev.virtuemart.net/projects/virtuemart/files размещена новая версия horme_3_v2.0.2.zip. Вероятно ее следует использовать вместо horme3 из репозитория, так как там пока старая версия.
5. Сборка общего установочного архива.
Устанавливать собранный virtuemsrt можно попакетно, но можно упаковать все компоненты (zip-файлы) в один zip-архив. За образец можно взять архив от более старой версии virtuemart, например, com_virtuemart.4.0.12.10777_package_or_extract.zip.
При этом необходимо в файле pkg_virtuemart.xml изменить названия zip-архивов компонентов на актуальные. Кроме того необходимо заменить в этом файле номер версии (в образце 4.0.12) на текущий.
Файл com_tcpdf_1.2.4.zip можно оставить от предыдущей версии или исключить из сборки (если идет речь об обновлении пакета, а не установке virtuemart с нуля).
После чего следует заархивировать все компоненты, например, в файл com_virtuemart.4.0.14.10806_package_or_extract.zip.
Примечания.
1. При сборке по второму варианту и использовании папки \administrator\components вместо \administrator русская локализация при установке не перезаписывается.
2. Нет полной ясности с компонентом com_tcpdf. В репозитории этот компонент не выделен, но его файлы содержатся в папках \administrator\components\com_tcpdf (virtuemart core) и \libraries\vendor\tecnickcom\tcpdf (virtuemsrt aio).
Приношу благодарность Wedal (сайт wedal.ru) за помощь при подготовке материала.
Дополнение от 14.09.2023.
Из сборки инсталлятора aio исключена папка \libraries. Разработчик в своей инструкции указал на необходимость ее включения, но в репозитории в этой папке находится старая версия 1.2.2 пакета tcpdf, тогда как текущая - уже 1.2.8. Проверка этой папки в распространяемых разработчиком инсталляторах показала, что в ней содержатся пустые папки и единственный файл \libraries\src\Document\PdfDocument.php, который входит в пакет tcpdf. Поэтому эта папка из моей инструкции исключена.
Для интересующихся инсталлятор актуальной версии tcpdf находится по адресу
https://dev.virtuemart.net/projects/tcpdf/files.
Дополнение от 19.09.2023.
Как показали эксперименты, в инсталлятор aio все-таки необходимо добавить файл \libraries\src\Document\PdfDocument.php. Иначе при установке пакета появлялись сообщения об ошибке. Остальные папки из \libraries вроде не нужны.
Обращаю внимание, что в пакете tcpdf 1.2.8 содержится этот же файл, совпадающий по длине. Однако не исключено, что в последующих версиях tcpdf этот файл может быть изменен.
Дополнение от 09.11.2023.
При поиске обновлений из админки шли сообщения об ошибках из-за несуществующего пути.
После замены в файлах репозитория переменной ${PHING.VM.UPDATEFOLDER} на vm3 сообщения прекратили появляться.
Дополнение от 21.11.2023.
Попался мне интересный скриптик:
https://coding.dp.ua/php/1538-skript-poiska-i-zamenyi-ishodnogo-koda-faylov-na-servere.html?ysclid=lp84gmgewa334564974Сканирует все файлы в папке, в корне которой лежит файл far.php и производит замену заменяемой строки на указанную.
Единственная проблема - использует устаревшую функцию get_magic_quotes_gpc(). Пришлось ее закомментировать.
Скопировал свежий репозиторий в папку на локальный сервер и положил в ее корень файл far.php. Запуск localhoct/имя_папки/far.php?pass=123 (пароль при желании можно поменять в тексте). Возможно вместо localhost надо будет подставить ваш адрес. Заполняем 2 поля - с заменяемым текстом (имя нужной переменной) и замещающим текстом (значение этой переменной).
Таким образом можно легко и быстро заменить все переменные *PHING* нужными значениями. В идеале было бы неплохо написать скрипт, чтобы сразу менял все нужные переменные, Если кто сможет написать, поделитесь…
Дополнение от 30.12.2023.
С новым годом всех!
Автор vm сделал в репозитории очередные новогодние
изменения.
Возможно он уже вышел на версию 4.2.6 или более позднюю.
Но в свободном доступе ее пока нет.
Зато произошли странности с tcpdf. На сайте
https://dev.virtuemart.net/projects/tcpdf/files еще висит сборка tcpdf 1.2.8, но в pkg_virtuemart.xml репозитория уже выписана 1.2.10. Будет ли обновление на
https://dev.virtuemart.net/projects/tcpdf/files, а если будет, то когда - тоже неясно.
У меня сложилось впечатление, что tcpdf правится в основном репозитории vm: надо взять и заархивировать в zip-архив 3 файла из administrator\components\com_tcpdf (номер 1.2.10 там уже выписан) и папку libraries из корня репозитория без пустой папки joomla. Пофайлово не выверял, но похоже на это. При самостоятельной сборке tcpdf ориентируйтесь на образец - сборку tcpdf 1.2.8.
Кстати из pkg_virtuemart.xml исчезли упоминания шаблонов vmbeez и horme_3. Предполагаю, что их решено исключить из общего пакета vm.