T-CREATOR

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

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内でuseraddgroupaddを記述するとエラーになるので、記述は不要です。

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アップデート時のトラブルを回避し、スムーズに最新版へ移行できます。

参考