FreeBSDでportsからパッケージをインストールする時にコマンドラインから引数を与える

FreeBSDでportsからパッケージをインストールする時にコマンドラインから引数を与える方法。

openldapのパッケージをインストール中に、依存するパッケージが既にインストールされていたことで衝突を起こしてエラーになってしまった。

エラーメッセージは以下のとおり。

shell> portinstall -c /usr/ports/net/openldap24-server
(中略)
--->  Installing the new version via the port
===>  Installing for openldap-sasl-client-2.4.26
===>   openldap-sasl-client-2.4.26 depends on shared library: sasl2.2 - found
===>   Generating temporary packing list
===>  Checking if net/openldap24-sasl-client already installed
===>   openldap-sasl-client-2.4.26 is already installed
      You may wish to ``make deinstall'' and install this port again
      by ``make reinstall'' to upgrade it properly.
      If you really wish to overwrite the old port of net/openldap24-sasl-client
      without deleting it first, set the variable "FORCE_PKG_REGISTER"
      in your environment or the "make install" command line.
*** Error code 1

Stop in /usr/ports/net/openldap24-sasl-client.
*** Error code 1

Stop in /usr/ports/net/openldap24-sasl-client.
*** Error code 1

Stop in /usr/ports/net/openldap24-sasl-client.
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portinstall20111012-61
602-1i6gyio-0 env make reinstall
** Fix the installation problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        ! net/openldap24-sasl-client    (install error)

openldap-sasl-clientがすでにインストールされてるよ、ってことらしい。
アドバイスによればmake deinstallしてやればうまくいくよ、ってことが書いてある。
また同時にFORCE_PKG_REGISTERを設定すれば強制的にインストールしてくれるらしい。
この値はmake時に渡される環境変数で、シェルに環境変数をセットしてもいい。またpkgtools.confに記述して対象となるパッケージのmake時のオプションとして追加してもいい。

今回はこの一回だけをこの”FORCE_PKG_REGISTER”を与えてインストールしたかったので、portinstallにオプションを与えるやり方を行った。

shell> portinstall -c -m "FORCE_PKG_REGISTER=yes" net/openldap24-server

このやりかただと、おそらく依存でインストールされるすべてのパッケージに”FORCE_PKG_REGISTER”が追加されるのでちょっとだけ注意が必要かも。
また、値の与え方について、こういった変数の場合は定義するだけでよかったりするんだけれど、今回はこの変数に対してyesを設定する必要があった。

コメントを残す