0ad
travis-ci サービスでビルドしようとしているのですが、ランダムにapt-get install
(またはapt-get dist-upgrade
) の失敗が発生し、戻りコード 137 が表示され、それ以上の情報は表示されません。travis-ci は Ubuntu 12.04 に基づいています。137 は何を示していますか? 出力例は次の場所にあります。https://travis-ci.org/krichter722/0ad/jobs/92938434。
さらにシステム情報を少し。
$ uname -a && lsb_release -a
Linux testing-worker-linux-89e97461-1-15272-linux-4-69692739 2.6.32-042stab090.5 #1 SMP Sat Jun 21 00:15:09 MSK 2014 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04 LTS
Release: 12.04
Codename: precise
答え1
プロセスのシグナル/エラー戻りステータスに関する回答... まあ... わかりました...
からバッシュ マニュアルページ(そして一般的にでほとんどシェルのドキュメントの一番下の「シェル・グラマー" その後 "シンプルなコマンド「」という無害な声明文があります。
The return value of a simple command is its exit status,
or 128+n if the command is terminated by signal n.
あらゆるシェル (bash、sh、dash、ksh、csh など) プロセス (単純なコマンド) の戻り値は 8 ビットの符号なし値で、想定される範囲は 0 ~ 255 です。一般的な使用法では、ゼロ (0) を「成功」、それ以外を「エラー」として使用します。シェルは、シグナル値に 128 を追加し、それを戻り値として使用することで、プロセスが中断/中止/シグナルされたことを示します。
年齢が十分に上であれば、カーネルコンパイル中に「エラー139」(シグナル11)が中断されたことを覚えているかもしれません(使用済みメモリが不安定になったり、過熱の問題が発生した場合は、一晩中服用してください。
エラー137は、apt-getプロセスがシグナル9(128+9=137)を受信したことを示します。シグナル9は殺す。
信号名と番号が不明な場合は、コマンドの出力を確認してくださいkill -l
。
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
... lots more ... 64 total
ああ!Wikipediaの素晴らしい記事、終了ステータス具体的にはシェルとスクリプトセクションでは、待ってプロセスの終了ステータスは整数(int)ですが、シェルプロセスは下位8ビットのみを受け取ります。また、「128+n」の根拠についても説明しています。(おそらく、kshが「256+n」を使用するというWikipediaの記述は誤りです。ksh マニュアルページ「128+n」と表示される)
さまざまなプログラミング言語やインターフェースによるさまざまな解釈について説明している Wikipedia の記事をよく読んでください。
お役に立てれば。
(そして、はい、私はすべてのマニュアルページを読みます。あなたはどうですか?)
補遺:
トラビスCiする提案するにないapt-get upgrade
仮想マシンで(および拡張により)を使用しますapt-get dist-upgrade
。必要なものをインストールしますが、VM は通常、十分にストックされ、最新の状態になっています。
の使用apt-get upgrade
5月apt-getの受信に貢献したシグナルキル. さらなる情報がなければトラビスCi正確な理由を特定することはできません。しかし、通常は...シグナルキル何か悪いことをしたとき、過剰なリソース使用、CPU使用率の高さなど、このようなことがあったときに使われます...繰り返しますが、私たちにはわかりませんし、私たちが見たログからはわかりません。(余談ですが、制限(bashのマニュアルページ内)setrlimit/getrlimit(2)そして、そのさまざまな制限がどのように処理されるか...RLIMIT_CPU(または-t)がここでは適切と思われます)
答え2
からエラーメッセージが出ていないのでapt-get
、@lornix の考えに同意できます。ただし、ファイルシステムのクォータで使用可能なサイズに問題があるか、apt-get の並列ダウンロード機能に問題がある可能性があります。(デフォルトではソースごとにスレッドを使用します)
ここではリソースを最小限に抑えるために最適化されています(ただし、時間は長くなります)
uname -a && lsb_release -a && df
sudo apt-get update
sudo apt-get install python-software-properties
sudo add-apt-repository --yes ppa:wfg/0ad.dev
sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get remove oracle-java7-installer oracle-java8-installer postgresql-9.2 postgresql-contrib-9.2 postgresql-9.2-postgis-2.1 postgresql-9.3 postgresql-contrib-9.3 postgresql-9.3-postgis-2.1 postgresql-9.4 postgresql-contrib-9.4 postgresql-9.4-postgis-2.1 postgresql-9.1 postgresql-9.1-postgis-2.1 postgresql-9.1-postgis-scripts postgresql-9.2-postgis-scripts postgresql-9.3-postgis-scripts postgresql-9.4-postgis-scripts postgresql-client postgresql-client-9.1 postgresql-client-9.2 postgresql-client-9.3 postgresql-client-9.4 postgresql-client-common postgresql-common postgresql-contrib-9.1
yes | sudo apt-get -o Acquire::Queue-mode=access -yy --yes upgrade
yes | sudo apt-get -o Acquire::Queue-mode=access -yy --yes dist-upgrade