본문 바로가기
미디어위키

RESTBase Debian packaging from Git

by 다움위키 2025. 3. 4.

원문 보기: https://dawoum.duckdns.org/wiki/RESTBase/Debian_packaging_from_Git

 

현재 RESTBase/Installation 과정을 거쳐 동작 중인 서비스를 단지 패키지로 묶어두려고 합니다.

이와 관련하여, 아치 리눅스의 패키징 방법을 참조할 수 있습니다:

Download RESTBase source

이 과정은 스크립트에 포함할 수도 있지만, 오류를 확인하고 수정하는 과정이 필요하기 때문에 별도로 수행합니다.

  • cd restbase
  • npm install

다음으로 RESTBase/Installation를 보고 설정을 진행하십시오.

Debian packaging

이제 아치 리눅스 소스 중에서 restbase.service restbase.sysusers restbase.tmpfiles 참조해서 데비안에 맞게 적당히 수정합니다:

  • gvim restbase.service
[Unit]
Description=Mediawiki RESTBase Service
Documentation=https://dawoum.duckdns.org/wiki/RESTBase
Wants=local-fs.target network.target cassandra.service
After=local-fs.target network.target cassandra.service

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=restbase
Group=restbase
WorkingDirectory=/srv/restbase
ExecStart=/usr/bin/node /srv/restbase/server.js
KillMode=process
Restart=on-success
PrivateTmp=true
StandardOutput=journal
PrivateDevices=true
ProtectSystem=full
ProtectHome=true
NoNewPrivileges=true
CapabilityBoundingSet=
ReadOnlyPaths=/
ReadWritePaths=/run
ReadWritePaths=/srv/restbase
StandardOutput=journal
  • gvim restbase.sysusers
u restbase - "MediaWiki RESTBase service" /srv/restbase
  • gvim restbase.tmpfiles
d /srv/restbase 0755 restbase restbase
d /run/restbase 0755 restbase restbase

이제 원하는 파일을 위에서 만든 ~/git 디렉토리에 두고, 데비안 디렉토리 구조에 맞추어서 설치할 위치로 이동시킵니다:

  • gvim restbase.install
#!/bin/bash

pkgname=restbase-git
_pkgname=restbase
pkgver=1.1.4.f75ee58
pkgrel=1

pkgdir=restbase-git_1.1.4.f75ee58-1_all

srcdir=.

package() {
    mkdir -p "${pkgdir}/srv"
    cp -a restbase "${pkgdir}/srv"
    rm -rf "$pkgdir"/srv/restbase/.git*
    install -Dm644 "${srcdir}/restbase.service" "${pkgdir}/usr/lib/systemd/system/restbase.service"
    install -Dm644 "${srcdir}/restbase.sysusers" "$pkgdir"/usr/lib/sysusers.d/restbase.conf
    install -Dm644 "${srcdir}/restbase.tmpfiles" "$pkgdir"/usr/lib/tmpfiles.d/restbase.conf
    install -D "restbase/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}

package

mkdir -p "$pkgdir"/DEBIAN

이제 스크립트를 실행시키고, control 파일을 만들고, 패키지로 묶고, 설치합니다:

  • bash restbase.install
  • gvim restbase-git_1.1.4.f75ee58-1_all/DEBIAN/control
  • dpkg-deb --build --root-owner-group restbase-git_1.1.4.f75ee58-1_all
  • sudo dpkg -i restbase-git_1.1.4.f75ee58-1_all.deb

기존에 서비스를 사용 중이라면, 중지하고, 사용자를 만들고, 새롭게 서비스를 시작합니다:

  • sudo systemctl stop restbase
  • sudo userdel restbase
  • sudo useradd --home=/srv/restbase -M --user-group --system --shell=/usr/sbin/nologin -c "RESTBase for MediaWiki" restbase
  • sudo rm /etc/systemd/system/restbase.service
  • sudo systemctl daemon-reload
  • sudo systemctl start restbase
  • sudo systemctl status restbase
  • sudo systemctl enable restbase

이것 외에도, Mathoid, Zotero, Citoid, 및 Proton 서비스를 같은 방법으로 패키지를 만들 수 있습니다.

단지 RESTBase/Installation에 따라, 설정을 해야 합니다.