正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Linuxパッケージインスタンスのアップグレードのトラブルシューティング

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

トラブルシューティングを支援するため、以下のコマンドを実行してください。

sudo gitlab-ctl status
sudo gitlab-rake gitlab:check SANITIZE=true

詳細については、次を参照してください:

オペレーティングシステムのアップグレード後に新しいバージョンが見つからない

GitLabをアップグレードする前に、オペレーティングシステムのアップグレードが必要になる場合があります。オペレーティングシステムをアップグレードする際に、オペレーティングシステムのパッケージマネージャー設定で、GitLabパッケージのソースURLを更新する必要がある場合もあります。

パッケージマネージャーが利用可能なアップグレードを見つけられないが、アップグレードが利用可能であるはずの場合は、GitLabパッケージリポジトリを再度追加してください。詳細については、Linuxパッケージを使用してGitLabをインストールするに関する情報を参照してください。

今後のGitLabアップグレードは、アップグレードされたオペレーティングシステムに従って取得されます。

ログにPG::UndefinedColumn: ERROR:..メッセージが表示される500エラー

アップグレード後、PG::UndefinedColumn: ERROR:...のようなメッセージが表示される500エラーが発生し始めた場合、これらのエラーの原因は次のいずれかである可能性があります:

  • データベース移行が完了していません。移行が完了するまで待ってください。
  • データベース移行は完了しましたが、GitLabが新しいスキーマを読み込む必要があります。新しいスキーマを読み込むには、GitLabを再起動してください。

エラー: 内部GitLab APIへの接続に失敗しました

別のGitLab PagesサーバーでFailed to connect to the internal GitLab APIエラーが発生した場合は、GitLab Pages管理トラブルシューティングを参照してください。

署名の検証中にエラーが発生しました

apt-get updateを実行するときにこのエラーが発生した場合:

An error occurred during the signature verification

次のコマンドを使用して、GitLabパッケージサーバーのGPGキーを更新します:

[ -x /usr/bin/apt-key ] &&
    [ -s /etc/apt/trusted.gpg ] &&
    apt-key --keyring /etc/apt/trusted.gpg del packages@gitlab.com
curl --fail --silent --show-error \
     --output /etc/apt/trusted.gpg.d/gitlab.asc \
     --url "https://packages.gitlab.com/gpg.key"
apt-get update

Mixlib::ShellOut::CommandTimeout: rails_migration[gitlab-rails] [..] Command timed out after 3600s

データベーススキーマとデータの変更(データベース移行)の実行に1時間以上かかる場合、アップグレードはtimed outエラーで失敗します:

FATAL: Mixlib::ShellOut::CommandTimeout: rails_migration[gitlab-rails] (gitlab::database_migrations line 51)
had an error: Mixlib::ShellOut::CommandTimeout: bash[migrate gitlab-rails database]
(/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/resources/rails_migration.rb line 16)
had an error: Mixlib::ShellOut::CommandTimeout: Command timed out after 3600s:

このエラーを修正するには:

  1. 残りのデータベース移行を実行します:

    sudo gitlab-rake db:migrate

    このコマンドの完了には非常に長い時間がかかる場合があります。SSHセッションが切断された場合にプログラムが中断されないように、screenまたはその他のメカニズムを使用してください。

  2. アップグレードを完了します:

    sudo gitlab-ctl reconfigure
  3. pumaサービスとsidekiqサービスをホット読み込みします:

    sudo gitlab-ctl hup puma
    sudo gitlab-ctl restart sidekiq

アセットファイルが見つかりません

アップグレード後、GitLabは次のようなアセットを正しく提供しない場合があります:

  • 画像
  • JavaScript
  • スタイルシート

GitLabで500エラーが発生したり、Webユーザーインターフェースが正しく表示されない場合があります。

スケールアウトされたGitLab環境では、ロードバランサーの背後にある1つのWebサーバーがこのイシューを発生させている場合、問題が断続的に発生します。

アセットを再コンパイルするRakeタスクは、/opt/gitlab/embedded/service/gitlab-rails/public/assetsから事前コンパイルされたアセットを提供するLinuxパッケージインストールには適用されません。

以下のセクションでは、考えられる原因と解決策について概説します。

古いプロセス

古いプロセスの最も可能性の高い原因は、古いPumaプロセスが実行されていることです。古いPumaプロセスは、クライアントに以前のリリースのGitLabからのアセットファイルを要求するように指示できます。ファイルが存在しなくなったため、HTTP 404エラーが返されます。

再起動は、これらの古いPumaプロセスが実行されなくなったことを確認する最良の方法です。または、次のことを実行できます:

  1. Pumaを停止します:

    gitlab-ctl stop puma
  2. 残りのPumaプロセスを確認し、強制終了します:

    ps -ef | egrep 'puma[: ]'
    kill <processid>
  3. Pumaプロセスが実行を停止したことをpsで確認します。

  4. Pumaを起動します

    gitlab-ctl start puma

重複するスプロケットファイル

コンパイルされたアセットファイルには、各リリースで一意のファイル名があります。スプロケットファイルは、アプリケーションコード内のファイル名から一意のファイル名へのマッピングを提供します。

/opt/gitlab/embedded/service/gitlab-rails/public/assets/.sprockets-manifest*.json

スプロケットファイルが1つしかないことを確認してください。Railsは最初に使用します

重複するスプロケットファイルのチェックは、Linuxパッケージのアップグレード中に実行されます:

GitLab discovered stale file(s) from the previous install that need to be cleaned up.
The following files need to be removed:

/opt/gitlab/embedded/service/gitlab-rails/public/assets/.sprockets-manifest-e16fdb7dd73cfdd64ed9c2cc0e35718a.json

これの解決オプションは次のとおりです:

  • パッケージのアップグレードからの出力がある場合は、指定されたファイルを削除します。次に、Pumaを再起動します:

    gitlab-ctl restart puma
  • メッセージがない場合は、再インストールを実行して再度生成します。詳細については、不完全なインストールを参照してください。

  • すべてのスプロケットファイルを削除し、不完全なインストールの手順に従います。

不完全なインストール

不完全なインストールは、アセットファイルが見つからない問題の原因である可能性があります。

この問題であるかどうかを判断するために、パッケージを確認してください:

  • Debianディストリビューションの場合:

    apt-get install debsums
    debsums -c gitlab-ee
  • Red Hat/SUSE(RPM)ディストリビューションの場合:

    rpm -V gitlab-ee

不完全なインストールを修正するためにパッケージを再インストールするには:

  1. インストールされているバージョンを確認してください:

    • Debianディストリビューションの場合:

      apt --installed list gitlab-ee
    • Red Hat/SUSE(RPM)ディストリビューションの場合:

      rpm -qa gitlab-ee
  2. インストールされているバージョンを指定して、パッケージを再インストールします。たとえば、14.4.0 Enterprise Edition:

    • Debianディストリビューションの場合:

      apt-get install --reinstall gitlab-ee=14.4.0-ee.0
    • Red Hat/SUSE(RPM)ディストリビューションの場合:

      yum reinstall gitlab-ee-14.4.0

NGINX Gzipサポートが無効になっています

nginx['gzip_enabled']が無効になっているかどうかを確認します:

grep gzip /etc/gitlab/gitlab.rb

これにより、一部のアセットが提供されなくなる可能性があります。関連するイシューの1つで詳細をご覧ください

ActiveRecord::LockWaitTimeoutエラー、スリープ後に再試行

まれに、Sidekiqがビジー状態になり、移行が変更しようとしているテーブルをロックします。この問題を解決するには、以下を実行します:

  1. GitLabを読み取り専用モードにします。

  2. Sidekiqを停止します:

    gitlab-ctl stop sidekiq

GPG署名の検証エラー: 無効なGPG署名

yum updateまたはdnf updateを実行すると、次のエラーが発生する可能性があります:

Error: Failed to download metadata for repo 'gitlab_gitlab-ee-source': repomd.xml GPG signature verification error: Bad GPG signature

この問題を解決するには、以下を実行します:

  1. dnf clean allを実行します。
  2. 最新の署名キーをフェッチします
  3. もう一度アップグレードを試みます。

dnf clean all後もエラーが解決しない場合は、影響を受けるリポジトリキャッシュディレクトリを手動で削除してください。この例では:

  1. /var/cache/dnf/gitlab_gitlab-ee-sourceを削除します。
  2. dnf makecacheを実行します。