gentooのmaskパッケージの利用方法
Tech > Distoribution > gentoo
利用したいパッケージがマスクパッケージ(非安定版)の場合、以下のメッセージが出力され叱られます、そんな時はマスクを解除してあげます。
2021/09/22時点でマスクパッケージのPHP8系を例にご説明致します。
マスクパッケージのインストール
マスクパッケージ(非安定版)をインストールしようとすると、この様に叱られます。
# emerge -pv php:8.0
These are the packages that would be merged, in order:
Calculating dependencies... done!
!!! All ebuilds that could satisfy "php:8.0" have been masked.
!!! One of the following masked packages is required to complete your request:
- dev-lang/php-8.0.10::gentoo (masked by: ~amd64 keyword)
- dev-lang/php-8.0.9::gentoo (masked by: ~amd64 keyword)
- dev-lang/php-8.0.8-r2::gentoo (masked by: ~amd64 keyword)
For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.
phpの3つのバージョンは、 x86_64環境( ~amd64 )でマスクパッケージですというご説明を出力されます。
マスクパッケージの解除
深呼吸をして、落ち着いたら、特定のバージョンのPHPをインストール出きるよう、 /etc/portage/package.accept_keywords へ解除するアーキテクチャを指定して解除します。 ~amd64 の識別子は ebuildのKEYWORDSに指定されているものです、 x86_64 のARCHのマシンのみ解除という意味になります。
=dev-lang/php-8.0.10 ~amd64
こうでも良いですが、 無敵レベル で新しいバージョンを入れてくるので注意してください。
dev-lang/php ~amd64
マスクパッケージのご利用は、ご自身により計画的にご利用ください。
ビルド
マスクパッケージのSLOTバージョンを指定してビルドする、コロン(:)の次の数字がSLOTになります。
# emerge -pv dev-lang/php:8.0
Calculating dependencies... done!
[ebuild NS ~] dev-lang/php-8.0.10:8.0::gentoo [7.4.21-r1:7.4::gentoo] USE="acl apache2 bzip2 cgi cjk cli ctype curl exif fileinfo filter flatfile fpm ftp gd gdbm gmp iconv imap inifile ipv6 jit mhash mysql mysqli nls
opcache pcntl pdo phar phpdbg posix postgres readline session simplexml soap sockets spell ssl systemd sysvipc threads tidy tokenizer truetype unicode xml xmlreader xmlwriter xpm zip zlib -apparmor%
-argon2 -bcmath -berkdb -calendar -cdb -coverage -debug -embed -enchant -ffi -firebird -intl -iodbc -kerberos -ldap -ldap-sasl -libedit -lmdb -mssql -oci8-instant-client -odbc -qdbm (-selinux) -session-mm
-sharedmem -snmp -sodium -sqlite -test -tokyocabinet -webp -xslt (-json%*) (-xmlrpc%*)" 10,453 KiB
そして、表示のの意味ですが
[ebuild NS ~] ...
- N・・・新規インストール
- S・・・新規かつSLOTインストール(他のバージョンあり)
ということで、他のバージョンと重複してはいるということと、その他のバージョンは 7.4.21-r1:7.4::gentoo で バージョンが7.4.21-r1 、 SLOTが7.4 、 リポジトリがgentoo というご説明が確認できます。
どうでもよい情報は無視してください。
ご確認ができましたら、pretend,verboseのオプションを外し、emergeを実行してください。
emerge後の確認
ビルドが完了しましたら、 eselect コマンドを利用して、現在有効なPHPのバージョンを確認致します。
PHPの場合、SAPI毎に利用するバージョンを指定できます、CLIを例に切り替えてみます。
shell(root) > eselect php list cli
[1] php7.4 *
[2] php8.0
(*) がついているのものが現在利用中のバージョンとなります。
shell > php --version
PHP 7.4.21 (cli) (built: Sep 22 2021 05:01:55) ( ZTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.21, Copyright (c), by Zend Technologies
2番の php8.0 に切り替えます。
shell(root) > eselect php set cli 2
こちらの指定方法でも同様です、お好きな方をご利用ください。
shell(root) > eselect php set cli php8.0
確認します
PHP 8.0.10 (cli) (built: Sep 22 2021 06:02:25) ( ZTS )
Copyright (c) The PHP Group
Zend Engine v4.0.10, Copyright (c) Zend Technologies
with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies
gentooでは、バージョンの違いによる動作確認など、造作もありません。
その他のモジュール
USEフラグを有効に設定しビルドした場合は、複数のモジュール(SAPI)が入ります、切り替え可能なモジュールは以下のとおりです。
- Add Apache2 support(mod_php)
shell(root) > eselect php list apache2
- Enable the FastCGI Process Manager SAPI
shell(root) > eselect php list fpm
- Add CGI script support
shell(root) > eselect php list fcgi
- Enable the PHP Debug Command Line SAPI
shell(root) > eselect php list phpdbg
これで最新のPHP環境で、いろいろなPHPフレームワークなどの、プロファイルや動作検証が出きるようになるでしょう。
Posted on 2021-09-22 06:46:22