원문 보기: https://dawoum.duckdns.org/wiki/RESTBase/Debian_packaging_from_Git
현재 RESTBase/Installation 과정을 거쳐 동작 중인 서비스를 단지 패키지로 묶어두려고 합니다.
이와 관련하여, 아치 리눅스의 패키징 방법을 참조할 수 있습니다:
Download RESTBase source
이 과정은 스크립트에 포함할 수도 있지만, 오류를 확인하고 수정하는 과정이 필요하기 때문에 별도로 수행합니다.
- sudo apt install libsqlite3-dev
- mkdir -p ~/git
- cd ~/git
- git clone --depth 1 https://github.com/wikimedia/restbase.git
- 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에 따라, 설정을 해야 합니다.