С учетом того, что метод установки Semaphore UI через snap устаревает, я недавно начал процесс миграции на другой метод хостинга. Я выбрал установку пакетной версии Semaphore на ту же систему. Изначально я планировал использовать возможности резервного копирования и восстановления на новой установке, но столкнулся с несколькими проблемами, которые, похоже, являются ошибками, которые были исправлены, но влияют на последнюю версию Semaphore в snap. Затем я выбрал другой путь, который предлагаю здесь добавить в качестве задокументированного метода для других, чтобы мигрировать.

Шаги для миграции файлов Semaphore Snap для использования с менеджером пакетов или бинарной установкой: Примечание: Этот метод сохраняет boltdb в качестве базы данных для Semaphore UI

  1. Войдите как root через sudo su - или другим действительным способом.
  2. Остановите версию Semaphore UI в snap. snap stop semaphore.semaphored
  3. Скопируйте файлы из snap в новую директорию, которая будет домашней директорией нового системного пользователя с именем semaphore. cp -rf /root/snap/semaphore/common /home/semaphore
  4. Переместите папку repositories в новое временное место. mv -f /home/semaphore/repositories /tmp/semaphore
  5. Обновите config.json с новыми путями к database.boltdb и временной папке. sed -i 's/\/root\/snap\/semaphore\/common\/database.boltdb/\/home\/semaphore\/database.boltdb/' /home/semaphore/config.json sed -i 's/\/root\/snap\/semaphore\/common\/repositories/\/tmp\/semaphore/' /home/semaphore/config.json
  6. Создайте нового системного пользователя и группу с именем semaphore, с /home/semaphore в качестве домашней папки. adduser --system --group --home /home/semaphore --no-create-home --shell /bin/bash semaphore
  7. Передайте права собственности на /home/semaphore и все файлы новому системному пользователю. chown -R semaphore:semaphore /tmp/semaphore chmod o-rwx /home/semaphore chown -R semaphore:semaphore /home/semaphore

После завершения этих шагов установите и настройте Semaphore через менеджер пакетов, используя semaphore в качестве пользователя или группы службы. Все настройки и предыдущие запуски должны отображаться в новом экземпляре Semaphore UI. Как только вы будете удовлетворены, экземпляр snap можно удалить с помощью sudo snap remove semaphore.

Я автоматизировал все эти шаги с помощью этого bash-файла:

#/bin/bash
#File: migrate-semaphore-snap.sh
#Migrate SemaphoreUI from snap as root to package/binary as semaphore
sudo su -l root <<EOF
set -x
snap stop semaphore.semaphored
cp -rf /root/snap/semaphore/common /home/semaphore
mv -f /home/semaphore/repositories /tmp/semaphore
sed -i 's/\/root\/snap\/semaphore\/common\/database.boltdb/\/home\/semaphore\/database.boltdb/' /home/semaphore/config.json
sed -i 's/\/root\/snap\/semaphore\/common\/repositories/\/tmp\/semaphore/' /home/semaphore/config.json
adduser --system --group --home /home/semaphore --no-create-home --shell /bin/bash semaphore
cp /etc/skel/.* /home/semaphore/
chown -R semaphore:semaphore /tmp/semaphore
chmod o-rwx /home/semaphore
chown -R semaphore:semaphore /home/semaphore
EOF