composerのインストール後にパーミッションを変える方法
Composer関連でパッケージの管理でちょっと大変だったのでそのメモです。
なんか周りの人で勘違いしている人が多数いたので先に言っておきたいのですが、そもそもcomposerってPackagistで登録されているライブラリ以外もインストールできるんですよ。
PEARだってインストールできるし、tarなライブラリだってインストールできるよ!
たとえばgoogle-api-php-clientをインストールしてみる
google-api-php-clientとかどうやってインストールするのか???
ちなみに今はGithubで管理されていて、Packagistにもあるんですが、昔はなかったんです・・・。
まあとりあえずtarでインストールする説明で使いたいのでgoogle-api-php-clientを例にして説明します。
こんな感じでcomposer.jsonに記載してあげましょう
// composer.json
{
"name": "polidog/composer-test",
"authors": [
{
"name": "polidog",
"email": "polidogs@gmail.com"
}
],
"repositories": [
{
"type": "package",
"package": {
"name": "google/google-api-php-client",
"version": "0.6.7",
"dist": {
"url": "http://google-api-php-client.googlecode.com/files/google-api-php-client-0.6.7.tar.gz",
"type": "tar"
}
}
}
],
"require": {
"google/google-api-php-client": "0.6.7"
}
}
こんな感じにtarで公開されているライブラリも実はcomposerでインストールできるんですよ!
パーミッションの問題に関して
さて、次に来る問題がパーミッションの問題です。 僕が去年Googleのライブラリ扱ったときは実行権限が付いてなくてエラーになってしまう問題が発生してました。 様々な解決法はあると思いますが、とりあえずcomposerで頑張ってみたいなぁーと思うわけですよ。
できるんですよcomposerでパーミッションを変更することが
composer.jsonにscripts
って項目を追加すればintallしたりupdateした時に任意の処理が実行できるんですよ。
で、例えばパーミッションを変更する場合はこんな感じにcomposer.json
に書けばいいんですよ。
{
"name": "polidog/composer-test",
"authors": [
{
"name": "polidog",
"email": "polidogs@gmail.com"
}
],
"repositories": [
{
"type": "package",
"package": {
"name": "google/google-api-php-client",
"version": "0.6.7",
"dist": {
"url": "http://google-api-php-client.googlecode.com/files/google-api-php-client-0.6.7.tar.gz",
"type": "tar"
}
}
}
],
"require": {
"google/google-api-php-client": "0.6.7"
},
"scripts": {
"post-install-cmd": [
"chmod -R 755 vendor/google"
],
"post-update-cmd": [
"chmod -R 755 vendor/google"
]
}
}
ここでのポイントはcomposerがscriptsという様々なフックを持っていることですね。
post-install-cmd
はインストール後に実行することになるわけです。
scriptsの種類について
- pre-install-cmd: インストール前に実行される処理
- post-install-cmd: インストール後に実行される処理
- pre-update-cmd: update前に実行される処理
- post-update-cmd: update後に実行される処理
他にもたくさんあるわけですが、結構活用されるのはこのへんかなと思います。 他のscriptsに関して知りたい方はcomposerのドキュメントのScriptsの部分で確認してください。
まとめ
- composerはpackagist以外の管理のtar.gzなどのファイルなどからインストールすることができる。
- scriptsのフックのご利用は計画的に。
以上!