serposcope3.4からserposcope3.5へアップデートしたときのエラーと改善策

serposcope3.4からserposcope3.5へアップデートしたときのエラーと改善策
2025年5月時点、Googleの検索仕様変更などに追従するため、serposcope3.4から3.5へのアップデートを行いました。本記事では、Docker環境でのアップデート時に発生したエラーの内容と、その具体的な解決策を解説します。
はじめに
serposcopeはGoogleなどの検索順位を自動で計測できるオープンソースツールです。 Googleの仕様変更等への対応には定期的なバージョンアップが欠かせません。 しかし、アップデート時にdebパッケージのインストール時エラーやユーザー/グループの競合が発生することがあります。
アップデート時に発生したエラー
1. adduser / addgroup のコマンドが見つからない
swift/var/lib/dpkg/info/serposcope.postinst: 23: addgroup: not found
/var/lib/dpkg/info/serposcope.postinst: 24: adduser: not found
原因
Dockerベースイメージにはadduser
/addgroup
がインストールされていません。
debパッケージのpostinstスクリプトでユーザー・グループ作成に失敗します。
2. systemctl: not found
swift/var/lib/dpkg/tmp.ci/preinst: 19: systemctl: not found
...
/var/lib/dpkg/info/serposcope.postinst: 26: systemctl: not found
原因
serposcopeのdebパッケージはサービスとしてsystemd経由で自動起動させるためにsystemctl
を呼び出します。
しかしDockerではsystemdは通常動作していないため、これらのエラーが出ます。
対応
Docker環境では無視してOK。サービス起動はENTRYPOINT
で行えば問題ありません。
3. chown: invalid user: 'serposcope '
bashchown: invalid user: 'serposcope\:serposcope'
原因
adduser
/addgroup
の実行に失敗し、ユーザー・グループが作成されなかったため、
所有権の設定でエラーになります。
4. groupadd: group 'serposcope' already exists など
vbnetgroupadd: group 'serposcope' already exists
The command '/bin/sh -c groupadd -r ${APP_USER} && useradd -r -g ${APP_USER} ${APP_GROUP}' returned a non-zero code: 9
原因 serposcopeのdebパッケージインストール時にすでにユーザー・グループが自動生成されているため、 Dockerfile側で再度作成しようとすると競合し、ビルドが失敗します。
改善策とベストプラクティス
1. 必要なパッケージを最初にインストール
adduser
パッケージをDockerfileで必ずインストールしてください。
swiftRUN apt-get update && \
apt-get install -y wget openjdk-17-jre-headless adduser && \
rm -rf /var/lib/apt/lists/*
2. ユーザー・グループの作成は自作しない
serposcopeのdebパッケージが自動でserposcope
ユーザー・グループを作成します。
Dockerfile内でuseradd
やgroupadd
を記述するとエラーになるので、記述は不要です。
3. systemd関係のエラーは無視してOK
systemctl: not found
などはDocker上では不要な処理なので、エラーとして無視して問題ありません。
4. ENTRYPOINTでjarを直接起動
Docker環境では、ENTRYPOINT
またはCMD
でjarを直接起動すればOKです。
例(entrypoint.sh
がない場合):
cssENTRYPOINT \["java", "-jar", "/usr/share/serposcope/serposcope.jar"]
5. 修正版Dockerfile例
bashFROM ubuntu:22.04
ARG SERPOSCOPE_VERSION=3.5
ARG CPU_MODEL=amd64
ENV SERPOSCOPE_HOME=/var/lib/serposcope
RUN apt-get update && \
apt-get install -y wget openjdk-17-jre-headless adduser && \
rm -rf /var/lib/apt/lists/*
RUN wget [https://www.serposcope.com/downloads/${SERPOSCOPE_VERSION}/serposcope_${SERPOSCOPE_VERSION}_${CPU_MODEL}.deb](https://www.serposcope.com/downloads/${SERPOSCOPE_VERSION}/serposcope_${SERPOSCOPE_VERSION}_${CPU_MODEL}.deb) -O serposcope.deb && \
dpkg -i serposcope.deb && \
rm serposcope.deb
WORKDIR ${SERPOSCOPE_HOME}
EXPOSE 7134
ENTRYPOINT \["java", "-jar", "/usr/share/serposcope/serposcope.jar"]
まとめ
- serposcopeのdebパッケージはユーザー・グループを自動作成するため、手動作成は不要(エラー原因)
adduser
は事前にインストール必須- systemctl関連エラーはDocker環境なら無視してOK
- ENTRYPOINTで直接Java起動が推奨
これらを守ることで、serposcope3.4→3.5アップデート時のトラブルを回避し、スムーズに最新版へ移行できます。