3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

macOS Big Sur で plenv を使って Perl 5.32.0 をインストールする

Last updated at Posted at 2020-12-16

Big Sur で Perl がインストールできない

Configure (インストールスクリプト) で darwin のバージョンが 10.* かどうかをチェックしているようで、11.x な Big Sur を入れようとするとインストールが止まる。

解決方法

八雲アナグラさんより教えていただきました。

pull request の patch

GitHub の pull request の差分を patch ファイルとして手に入れる場合は、pull request の URL の末尾に .patch を付けてアクセスすると patch ファイルへとリダイレクトされるので、https://github.com/Perl/perl5/pull/17946 の patch ファイルは、コマンドラインから

$ curl -LO https://github.com/Perl/perl5/pull/17946.patch

curl-L オプションをつけると取得できる。

patch をあててインストール

展開して patch をあてたら、いつものおまじない

$ tar zxvf perl-5.32.0.tar.gz
$ cd perl-5.32.0
$ patch -p1 < 17946.patch
$ sh Configure -de && make && make test && sudo make install

こんな感じでイケるよう。

plenv で入れたい

plenv で install したいので、自動で tarball を取得し、自動でいつものおまじないが行われるまでの間に介入して patch をあてたいが、介入が許されない。

ただ plenv の場合、一度取得した tarball があればそれを再利用する。なので、わざと一度失敗してその後再利用される tarball を展開して patch をあてて固めて install するとかならいけそうと睨んだ。

やってみる

plenv install を一度失敗してみる

$ plenv install 5.32.0 --as 5.32

Unexpected product version 11.0 で怒られて予定通り失敗。

保存された tarball を展開し patch をあてて固める

$ cd ~/.plenv/cache
$ tar zxvf perl-5.32.0.tar.gz
$ cd perl-5.32.0

ここはさっき patch 当てたのと同じ手順

$ curl -LO https://github.com/Perl/perl5/pull/17946.patch
$ patch -p1 < 17946.patch

そして ~/.plenv/cache の下で tarball に固める

$ cd ..
$ rm -f perl-5.32.0.tar.gz
$ tar zcvf perl-5.32.0.tar.gz perl-5.32.0
$ cd ~

これで、perl-5.32.0.tar.gz は patch があてられたものになってる。
そして、そうとは知らない plenv は騙されて (?)、これを再利用してインストールしてくれるだろう。

plenv install 今度こそ成功を願う

$ plenv install 5.32.0 --as 5.32

がんばえぱーるえんゔ

確認

$ plenv versions
* system (set by /Users/nipotan/.plenv/version)
  5.32
$ plenv global 5.32
$ perl -v

This is perl 5, version 32, subversion 0 (v5.32.0) built for darwin-2level

Copyright 1987-2020, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

はい。
やったね。

めでたしめでたし。

perlbrew は?

perlbrew の場合は対応済みで、install 時に自動的に hints/darwin.sh に対し上記 patch をあてた上で install が実行されますので、普通にインストールできます。

$ perlbrew install perl-5.32.0 --as perl-5.32
$ perlbrew list
  perl-5.32
$ perlbrew switch perl-5.32
$ perl -v

This is perl 5, version 32, subversion 0 (v5.32.0) built for darwin-2level

Copyright 1987-2020, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?