[解決済み] 「git ビルド中に「@INC に ExtUtils/MakeMaker.pm の場所が見つかりません。
質問
私は、以下のものを作っています。
git
を除いて)パッケージマネージャーを使わずに、かなり最小限のシステム(Ubuntu 16.04 の docker イメージ)上で動作します。
wget
,
xz-utils
,
make
と
gcc
). そこで、以下のようにprerequisistesをインストールしました。
apt-get update && apt-get install --yes wget xz-utils make gcc
wget http://www.cpan.org/src/5.0/perl-5.26.1.tar.gz && tar xf perl-5.26.1.tar.gz && cd perl-5.26.1 && ./configure.gnu && make -j16 && make install && cd ..
wget https://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.8.1.tar.xz && tar xf gettext-0.19.8.1.tar.xz && cd gettext-0.19.8.1 && ./configure && make -j16 && make install && cd ..
wget https://www.zlib.net/zlib-1.2.11.tar.gz && tar xf zlib-1.2.11.tar.gz && cd zlib-1.2.11 && ./configure && make -j16 && make install && cd ..
cpan install ExtUtils::MakeMaker
wget https://www.kernel.org/pub/software/scm/git/git-2.13.3.tar.gz && tar xf git-2.13.3.tar.gz && cd git-2.13.3 && ./configure && make -j16 && make install && cd ..
しかし
make
の中に
git
のため、ソースルートに失敗します。
Can't locate ExtUtils/MakeMaker.pm in @INC (you may need to install the ExtUtils::MakeMaker module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] Error 2
Makefile:83: recipe for target 'perl.mak' failed
make: *** [perl/perl.mak] Error 2
make: *** Waiting for unfinished jobs....
Makefile:1870: recipe for target 'perl/perl.mak' failed
については、いろいろな解決策があることは承知しています。
Can't locate [module].pm in @INC
perlのプロジェクトでは
CPANにすべての依存関係をインストールするように指示するにはどうしたらいいですか?
. しかし
git
はGNU autotoolsを使用しており、この問題を解決できるオプションは、おそらく環境変数から読み込まれると思われますが、今のところ把握できていません。
Ubuntu 16.04では
perl
はありませんが
cpan
コマンドを追加しました(そのため
perl
ソースのインストール)。の後に
perl
ソースインストールは認識されますが、使用されていないようです。
$ which -a perl
/usr/local/bin/perl
/usr/bin/perl
$ which -a cpan
/usr/local/bin/cpan
後
cpan
私は
$ find / -name MakeMaker.pm
/builds/project-0/perl-5.26.1/lib/ExtUtils/MakeMaker.pm
/builds/project-0/perl-5.26.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
/root/.cpan/build/ExtUtils-MakeMaker-7.32-0/lib/ExtUtils/MakeMaker.pm
/root/.cpan/build/ExtUtils-MakeMaker-7.32-0/blib/lib/ExtUtils/MakeMaker.pm
/usr/local/lib/perl5/5.26.1/ExtUtils/MakeMaker.pm
/usr/local/lib/perl5/site_perl/5.26.1/ExtUtils/MakeMaker.pm
$ perl -E 'say for @INC'
/usr/local/lib/perl5/site_perl/5.26.1/x86_64-linux
/usr/local/lib/perl5/site_perl/5.26.1
/usr/local/lib/perl5/5.26.1/x86_64-linux
/usr/local/lib/perl5/5.26.1
セットアップは起動スクリプトから抽象化されているので、パッケージ・マネージャーを使うという選択肢は本当にないのです。
を使用することができます。
docker run -i -t ubuntu:latest
を使用すると、環境を調査することができます。
で再現性のあるビルドを提供しました。 https://gitlab.com/krichter/git-docker-build とGitLab CIランナーの出力例は、以下のサイトで見ることができます。 https://gitlab.com/krichter/git-docker-build/-/jobs/53888412 .
解決方法は?
使用方法
./configure --with-perl=/usr/local/bin/perl
に対して
git
は動作しますが、なぜ
/usr/local/bin/perl
の前に拾われることはありません。
/usr/bin/perl
もし
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
.
は
cpan ExtUtils::MakeMaker
を追加した後は必要ありません。
--with-perl
.
関連
-
[解決済み】git-mergeの-dry-runオプションはありますか?
-
[gitコミット失敗の解決] 現在のブランチの先端が後ろにあるため、更新が拒否されました。
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] サブモジュールを含む "git clone "の方法は?
-
[解決済み] すべてのgitサブモジュールの最新版を簡単にプルする方法
-
[解決済み] Git のコミットからファイルを削除する
-
[解決済み] 現在のGitブランチをmasterブランチにする
-
[解決済み] プル中に自分の変更を優先してGitのマージの競合を解決する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】マージの競合が発生した git stash pop の取り消し
-
[解決済み】以下の追跡されていないワーキングツリーファイルは、マージによって上書きされますが、私は気にしません。
-
[解決済み】GitHubのメッセージの意味: メールのプライバシー制限のためプッシュが拒否されました。
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み】「オリジン/マスターへのプッシュが拒否されました」というエラーが常に発生するのはなぜですか?
-
[解決済み] ERROR: リモートレポ 'origin' のクローン作成に失敗しました。
-
[解決済み] git が「Pull is not possible because you have unmerged files」と表示するのはなぜですか?
-
[解決済み] GitBash | origin master - rejected (fetch first) | GitHub リポジトリにファイルがない。
-
[解決済み] Git エラー : 'upstream' は git リポジトリでないようです。
-
[解決済み] fatal: bad revision "とはどういう意味ですか?