Atomを統合開発環境にするAtom-IDE

エディタはAtomを使っているのだが、Atom-IDEを使ってPHP統合開発環境化してみようと思う。

f:id:nyameji:20180318001514j:plain

■試した環境
Windows7 64bit
Atom 1.25

基本的に公式(https://ide.atom.io/)通りにやればうまくはず。

  1. Atomのアップデート
  2. atom-ide-uiパッケージのインストール
  3. ide-phpのインストール
  4. PHP7のインストール

対応言語はまだこれだけの模様。

TypeScript & JavaScript ide-typescript
Flow ide-flowtype
C# ide-csharp
Java ide-java (Java 8 runtime required)
PHP ide-php (PHP 7 runtime required)

1. Atomのアップデート

バージョン1.21以上を使用することが強く推奨されているのでとりあえずアップデートしよう。
blog.atom.io


ヘルプ→Atomについて→CheckNow、でアップデートする。

f:id:nyameji:20180318003323j:plain

2. atom-ide-uiパッケージのインストール

Ctrl+「,」(カンマ)で設定を開く
インストール→atom-ide-uiで検索してインストール
f:id:nyameji:20180318003839j:plain

3. ide-phpのインストール

ide-phpで検索してインストール

f:id:nyameji:20180318003905j:plain

4. PHPのインストール

ローカルにPHPがないと動かないのでインストールしておく。

PHPの公式からダウンロード。
http://php.net/

Downloads → Windows downloadsのリンクを辿って自分の環境に適したzipファイルをダウンロードする。
自分の場合は64bitPCなのでVC14 x64 Thread Safeをダウンロードした。
ダウンロードしたzipを展開して、名前をphp-7.1.15に変更して、C:¥の直下へ移動。
Atom側でPHPのパスを指定してあげないといけないので、
先ほどダウンロードしたide-phpの設定画面の「PHP Path」にパスを入力してあげれば完了。
f:id:nyameji:20180318121114j:plain

機能

こんなことができるらしいです。
便利そうなものから使い方のわからないものまで。
使い込んで効率よくコーディングをしよう!

Autocomplete

入力補完機能

Diagnostics

エラーの診断

Find all references

カーソルを合わせてFind referencesすると検索してくれる。

Formatting

コードのフォーマット機能

Go to definition

Ctrl+クリックで定義へ移動

Hover

カーソルを合わせると関連情報を表示してくれる?

Outline view

Ctrl+Shift+Pでoutlineのtoggleをすると右側にクラスや関数などが一覧になってクリックすると移動できる。

Reference highlighting

よくわからず。

GitLabRunnerを登録してGitLabCIを動かしてみる

とりあえずGitLabCIを動かせるようにする。
こんなかんじで進める。

  1. GitLabRunnerのインストール
  2. GitLabRunnerの登録
  3. .gitlab-ci.ymlの作成
  4. CIを動かしてみる

CentOS7で実行。

1. GitLabRunnerのインストール

公式を見れば簡単。
docs.gitlab.com

リポジトリの追加

# curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

yumでインストール

# yum install gitlab-runner

これで完了。
インストールまではすごく簡単。

2. GitLabRunnerの登録

続いて、Runnerを登録する。
これも公式ドキュメントを参考に進める。
docs.gitlab.com

登録にあたってGitLabが発行するtokenが必要になるので調べておく。
そのプロジェクトのSettings → CI/CD → Runners settings
赤枠で囲われたところをメモっておく。
f:id:nyameji:20180218162042j:plain

では実際に登録してみる。

# gitlab-runner register
Running in system-mode.

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://hogepiyo.com/  //GitLabのURLを入力
Please enter the gitlab-ci token for this runner:
AssukefCjhvHwAJXF3C7  //先ほど調べたtokenを入力
Please enter the gitlab-ci description for this runner:
[localhost.localdomain]: shell-runner  //Runnerの詳細。後からも編集可能。
Please enter the gitlab-ci tags for this runner (comma separated):
shell  //このRunnerに付けるタグ。後からも編集可能。
Whether to run untagged builds [true/false]:
[false]:  //タグのないジョブを実行するかどうか。デフォルトfalse。後からも編集可能。
Whether to lock the Runner to current project [true/false]:
[true]:  //他のプロジェクトからこのRunnerを使えないようにするかどうか。デフォルトtrue。後からも編集可能。
Registering runner... succeeded                     runner=AssukefC
Please enter the executor: docker+machine, docker-ssh+machine, kubernetes, docker-ssh, parallels, shell, virtualbox, docker, ssh:
shell  //ビルドの実行方法
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

おっけー。
登録完了。

最初にtokenを確認したページに行くとRunnerが登録されているのが確認できる。
Settings → CI/CD → Runners settings
f:id:nyameji:20180218162401j:plain

3. .gitlab-ci.ymlの作成

ビルドやテストの手順は.gitlab-ci.ymlに記載して、
そのプロジェクトのルートディレクトリに配置する。
今回はCIを試しに動かせるようになることが目的なので簡単な内容でテストする。

GitLabのエディタから.gitlab-ci.ymlファイルを作成してみる。
プロジェクトのRepository → New fileで。

stages:
  - runner-test

ipaddress_job:
  stage: runner-test
  script:
    - ip a
  tags:
    - shell
  only:
    - master

これは、
runner-testというステージを定義して、
ipaddress_jobというジョブを定義して、
shellというタグが付いたランナーを対象にして、
ブランチはmasterだけを対象として、
RunnerサーバーのIPアドレスを表示する、ということを行っている。

これをそのままGitLabのエディタからコミットするとCIが動き出す。

4. CIを動かしてみる

コミットした時点ですでにCIが動いているはずなので確認してみる。
そのプロジェクトのCI/CD → Pipelines
f:id:nyameji:20180218163041j:plain

成功してたら緑でpassedってなってる模様。
失敗してたらfailed,
なんらかの理由で止まってたらpendingとかになっている。
最初、「タグなしのジョブは実行しない」でRunnerの設定をしていたためここがずっとpendingで止まってて小一時間ハマった。

そのpassedをクリックして中に入るとipaddress_jobというジョブがあるので、
そこをクリックすると黒い画面の中にIPアドレスが表示されている。
たしかにgitlab-ci.ymlに記載したip aが実行されている。
f:id:nyameji:20180218163025j:plain

一通りの流れは成功した。
あとは実践に近い形に持っていけるか。
ビルドして、テストして、デプロイして・・・。
docker上でいろいろやるらしいのだがdockerの知識がなくてわからん。

そういえばいつの間にかGitLabの書籍が出てた模様。
試しに買って勉強してみるかなー。
でもdockerもやらないとなー。

GitLab実践ガイド (impress top gear)

GitLab実践ガイド (impress top gear)

ポモドーロテクニックに再入門してみた

過去にも1,2回やってみたポモドーロテクニック
そのときは、あんまりしっくりこなくてすぐに使うのを辞めた。
今回SOFT SKILLS読んでてポモドーロに関する話が書いてあって再度やってみようと決めた。

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

ポモドーロテクニックとは

・25分間を1つの区切りに仕事に取り掛かる。
・25分たったら5分間の休憩を入れる。
ここまでが1ポモドーロ。
・4ポモドーロ、つまり2時間たったら15分くらいの長めの休憩を取る。
以下、繰り返し。

この25分間は1つのタスクだけに集中してやる。
他のことには目もくれない。
電話もメールもチャットも無視して集中してタスクに取り掛かる。
早めに終わってしまったら次のタスクに取り掛かるのではなく、終わったタスクの見直しなどに時間を使うのがセオリーらしい。

いかに連続した時間を確保できるか

前回ポモドーロテクニックを断念した理由が仕事中の割り込みの多さである。
・電話が鳴って途中で中断
・メール、チャットの通知に気を取られていつの間にか中断
・隣の席の人が話しかけてきて中断(おしゃべりが好きな人が隣の席にいるのである)

ただ今回SOFT SKILLSを読んで同じようなことが書いてあった。
電話・メール・チャットは決まった時間に処理するようにしているらしい。
たしかにその都度対応するのは集中が途切れて明らかに効率が悪い。
以前からいかに長い時間連続した時間を確保できるかが重要だと思っていた。
1ポモドーロ後にまとめてチェックしてあとで対応する、というのでも良さそうだ(30分くらい待てるだろう)。

直接話しかけられた場合はどうしよう。
隣におしゃべりな人が座っている。
この人がなかなか曲者で情緒不安定かつかまってちゃんなのだ。
集中を断絶させられるとしたらこの人が最も有力候補だ。
(自分自身気が弱いからあまり強く言えないし。)
人をうまくあしらう方法を身に着けねば・・・。

ポモドーロテクニックの本当の力

SOFT SKILLSの中に大事なことが書いてあったので引用しよう。

ポモドーロテクニックの本当の力は、作業量を見積もり トラッキングするためのツールとして使った時に現れる。
1日に実行したポモドーロの数を数え、1日に何個のポモドーロを達成するかという目標を設定する。
すると突然、一日にどれくらい一生懸命仕事をしたか、自分の本当の能力はどれだけかを正確に測れるようになる。
単に集中を維持するためだけでなく、毎日、毎週の作業内容を計画し、自分がどの部分に最も多くの時間を費やしているかを把握し、出来る限り生産性を高めようというモチベーションを生むためにも ポモドーロテクニックを活用できるようになったのである。

25分間集中して仕事に取り掛かるということももちろん大事だが、
今日は何ポモドーロやるぞと目標を設定して、それを計測するという使い方。
自分がどの程度仕事をこなしたかのトラッキングツールになるというのだ。
優先順位をつけ、仕事にポモドーロを割り振り、集中する。

やりたいと思ったことができていないのに、目標のポモドーロ数を確保できた場合、問題は十分に仕事ができていないことではなく、優先順位付けが正しくないことだとわかる。

あるあるすぎて怖い。
やろうとしていたことができていないのに、仕事をこなした満足感だけある。
人は簡単な作業から手を付けがちだ。
自分がやろうとしている難しいこと面倒くさいことを後回しにしてしまう。
そこをぐっとこらえてやるべきことを集中してやる。

タスク管理とポモドーロ

最後に、SOFT SKILLSの著者はkanbanflowというのを使っているらしい。
kanbanflow.com
Trelloのシンプル版といったところか。
ただ、タスク管理とポモドーロが一緒になっているので、
個人的にはkanbanflowの方が使いやすそうだ。
使ってみてしっくり来たら別の記事にまとめてみよう。

SOFT SKILLS ソフトウェア開発者の人生マニュアルを読んだ

家の本棚に積まれているうちの一冊、SOFT SKILLSをようやく読み始めました。

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

ソフトウェア開発者の人生マニュアルということで個人的には非常に気になっていた本。
途中まで読んだ感想としては、エンジニアとしての自己啓発ライフハックみたいな本。
おもしろいです。

全7部構成の71章まである読み応えのある本。
ためになったところ心に残ったところを記録しておこう。


第2章の「事業者のマインドセット」という項目
自分のキャリアを事業として考えろ、とあった。
マインドセットを雇用形態で縛られた奴隷から、自分自身の事業を経営している事業者に切り替える。
また、キャリアを積極的にマネジメントする、というところが自分には抜けていた考え方。
自分の人生にとって何が重要なのかを考えて日々の取捨選択をするようにしよう。


第3章の「目標設定」について。
まずは、大きな目標を描き、それに到達するために小さな目標を設ける。

ずっと遠くにあるかもしれないものを明確に定義するのは難しいので、大きな目標はあまり細かく決まらないことが多い。
しかし、それでいい。
遠くにある大きな目標を決めるときには、細かいところまで決めなくてOKだ。

自分が将来どうなりたいか、どうしていたいかの目標は大事だ。
将来のことを考えるのは不安だし面倒くさいが、まずはそこをしっかり考える必要がある。


第4章の「放っといてくれ、私はただコードが書きたいだけなんだ!」の部分。
ソフトウェア開発者に人とのコミュニケーションが不要なわけではない。
ほかの職種と同様に人とのコミュニケーションが発生する。
ひとりきりでうまく仕事を進めていくことはなかなか難しい。


第9章「責任の重い仕事が回ってくるようにするためにできること」

・みんなに無視されているものの、自分なら管理できるというプロジェクトを引き受けること
・チームの新メンバーが仕事のペースについていけるように支援すること
・プロセスのドキュメントを書き、そのドキュメントをメンテナンスし続けていくこと
・ほかに誰もやりたがらないものの、自分が引き受ければ楽にしたり自動化したりできるものを探すこと。

責任の重い仕事はつらい。
つらいし失敗したときのことを考えると及び腰になるが、給与をあげていくためには必要だ。
幸い、いまの会社は比較的失敗に寛容な気がする。
今のうちにいろんなことに挑戦しよう。


第26章「ばかにされるのを恐れるな」

自分のマーケティングを本当に成功させたいと思うなら、
私たちの大半が持っている大きな恐怖を克服しなければならない。
それは馬鹿みたいに見えることに対する恐怖だ。

人は人、自分は自分。
世界中の人が自分の考えに同意してくれることなんてありえない。
批判を恐れて黙りこんでしまうことはよくない。
ただ、わかっていてもやはり批判されること、馬鹿だと思われることは怖い。
対面だとなおさらだ。
こんなこと言ったら馬鹿だと思われるんじゃないか?
いい歳して何言ってんだ?と思われるかもしれない。


いまようやく40章まできたところ。
この本は自分のキャリアに対してどう考えるべきか、
学ぶことの大切さ、仕事の生産性の高め方、お金に対する考え方(大事)、健康に関して、
とまさに人生のマニュアル本みたいな感じ。
副題の「ソフトウェア開発者の人生マニュアル」に嘘偽りなし。
もっとはやく読んでおけばよかった~。

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

CentOS7にGitLabをインストールする

ほんとはGitHubを使いたいんだけど、
諸々の事情ありGitLabをインストールして使うことに。

GitLabの種類

名前 値段 その他
EnterpriseEdition(GitLabEE) 有料 サーバーにインストールが必要
CommunityEdition(GitLabCE) 無料 サーバーにインストールが必要
GitLabEEより機能が劣る
GitLab.com 無料 インストール不要
GitLabEEと機能は同等

気軽に使うのならGitLab.comが手間とお金ももかからずよさそう。
でも今回はGitLabCEで自前サーバにインストールする。

Omnibus packageを使ってインストールする

about.gitlab.com

公式で推奨されてるOmnibus packageを使ってインストールします。
Omnibus packageを使えばインストールもその後のアップグレードも簡単なので強く推奨するとのこと。

We also strongly recommend at least 4GB of free memory to run GitLab.

メモリは少なくとも4GB以上をオススメしている。

1. まずはCentOS7を選択

f:id:nyameji:20171202121516j:plain
わかりやすい画面構成

2. クリックするとインストール手順が出るのであとはそれに従うだけ

f:id:nyameji:20171202121959j:plain

※以前はここのインストール方法はGitLabCEだった気がするけどいつの間にかGitLabEEに変わってる?
https://about.gitlab.com/installation/ce-or-ee/?distro=centos-7
GitLabEEを購入するかどうかに関わらず、とりあえずEEをダウンロードしておくことをおすすめしている模様。
そうすることによって、CEの機能をすべて使えるし、EEにしようと思ったときにアップグレードが楽だから。

3. 設定が完了したらインストール時に設定したURLにアクセスするとログイン画面が出てくる

f:id:nyameji:20171202123150j:plain

最初にrootユーザーのパスワードを設定するので、
New passwordとConfirm new passwordを入力してChange your passwordをクリック。
サインインしてWelcome to GitLab画面が出るのであとはプロジェクトを作って開発を進めるだけ!
f:id:nyameji:20171202123627j:plain

とっても簡単でした。
さぁモダンな開発スタイルを究めよう!

vagrantでCentOS7+Apache2.4+PHP7+MySQL5.7+CakePHP3の環境を作る

まずはvagrantでCentOS7の設定

user@user MINGW64 ~/vagrant
$ mkdir centos7

user@user MINGW64 ~/vagrant
$ cd centos7

user@user MINGW64 ~/vagrant/centos7
$ vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Vagrantfileができるので必要箇所を編集

config.vm.box = "centos/7"
config.vm.network "forwarded_port", guest: 80, host: 8003
config.vm.synced_folder ".", "/vagrant", type:"virtualbox"

vagrant upで立ち上げる

user@user MINGW64 ~/vagrant/centos7
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'centos/7' is up to date...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 80 (guest) => 8003 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key

Apache

vagrant sshで接続
user@user MINGW64 ~/vagrant/centos7
$ vagrant ssh
[vagrant@localhost ~]$

インストール
[vagrant@localhost ~]$ su -
[root@localhost ~]# yum -y install httpd

バージョン確認
[root@localhost ~]# httpd -v

起動
[root@localhost ~]# systemctl start httpd

自動起動設定
[root@localhost ~]# systemctl enable httpd.service

mysql

mariaDBの削除
[root@localhost ~]# yum -y remove mariadb-libs.x86_64

リポジトリ追加
[root@localhost ~]# yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

インストール
[root@localhost ~]# yum -y install mysql-community-server

バージョン確認
[root@localhost ~]# mysqld --version

起動
[root@localhost ~]# systemctl start mysqld

自動起動設定
[root@localhost ~]# systemctl enable mysqld

PHP7

EPELリポジトリ
[root@localhost ~]# yum -y install epel-release

Remiリポジトリ
[root@localhost ~]# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

php7インストール
[root@localhost ~]# yum -y install --enablerepo=remi,epel,remi-php70 php php-devel php-intl php-mbstring php-pdo php-gd php-mysqlnd

バージョン確認
[root@localhost ~]# php -v

composer

composerを使ってCakePHP3をインストールするので先にインストールしておく。

[root@localhost ~]# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
[root@localhost ~]# php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
[root@localhost ~]# php composer-setup.php
[root@localhost ~]# php -r "unlink('composer-setup.php');"
[root@localhost ~]# mv composer.phar /usr/local/bin/composer

CakePHP3

[root@localhost ~]# cd /opt/www
[root@localhost www]# composer self-update && composer create-project --prefer-dist cakephp/app cakephp3
You are already using composer version 1.5.2 (stable channel).
Installing cakephp/app (3.5.0)
    Failed to download cakephp/app from dist: The zip extension and unzip command are both missing, skipping.
The php.ini used by your command-line PHP is: /etc/php.ini
    Now trying to download from source
  - Installing cakephp/app (3.5.0): Cloning f807e4ef14
Created project in cakephp3
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - cakephp/cakephp-codesniffer 3.0.0 requires squizlabs/php_codesniffer ^3.0.0 -> satisfiable by squizlabs/php_codesniffer[3.0.0, 3.0.1, 3.0.2, 3.1.0, 3.1.1].
    - cakephp/cakephp-codesniffer 3.0.1 requires squizlabs/php_codesniffer ^3.0.0 -> satisfiable by squizlabs/php_codesniffer[3.0.0, 3.0.1, 3.0.2, 3.1.0, 3.1.1].
    - squizlabs/php_codesniffer 3.1.1 requires ext-simplexml * -> the requested PHP extension simplexml is missing from your system.
    - squizlabs/php_codesniffer 3.1.0 requires ext-simplexml * -> the requested PHP extension simplexml is missing from your system.
    - squizlabs/php_codesniffer 3.0.2 requires ext-simplexml * -> the requested PHP extension simplexml is missing from your system.
    - squizlabs/php_codesniffer 3.0.1 requires ext-simplexml * -> the requested PHP extension simplexml is missing from your system.
    - squizlabs/php_codesniffer 3.0.0 requires ext-simplexml * -> the requested PHP extension simplexml is missing from your system.
    - Installation request for cakephp/cakephp-codesniffer ^3.0 -> satisfiable by cakephp/cakephp-codesniffer[3.0.0, 3.0.1].

  To enable extensions, verify that they are enabled in your .ini files:
    - /etc/php.ini
    - /etc/php.d/20-bz2.ini
    - /etc/php.d/20-calendar.ini
    - /etc/php.d/20-ctype.ini
    - /etc/php.d/20-curl.ini
    - /etc/php.d/20-exif.ini
    - /etc/php.d/20-fileinfo.ini
    - /etc/php.d/20-ftp.ini
    - /etc/php.d/20-gd.ini
    - /etc/php.d/20-gettext.ini
    - /etc/php.d/20-iconv.ini
    - /etc/php.d/20-intl.ini
    - /etc/php.d/20-json.ini
    - /etc/php.d/20-mbstring.ini
    - /etc/php.d/20-mysqlnd.ini
    - /etc/php.d/20-pdo.ini
    - /etc/php.d/20-phar.ini
    - /etc/php.d/20-sockets.ini
    - /etc/php.d/20-sqlite3.ini
    - /etc/php.d/20-tokenizer.ini
    - /etc/php.d/30-mysqli.ini
    - /etc/php.d/30-pdo_mysql.ini
    - /etc/php.d/30-pdo_sqlite.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

色々エラーが出たので足りないのをインストールしていく。

php_codesniffer

[root@localhost www]# composer global require "squizlabs/php_codesniffer=*"
Changed current directory to /root/.config/composer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
    Failed to download squizlabs/php_codesniffer from dist: The zip extension and unzip command are both missing, skipping.
The php.ini used by your command-line PHP is: /etc/php.ini
    Now trying to download from source
  - Installing squizlabs/php_codesniffer (2.2.0): Cloning b301c98f19
Writing lock file
Generating autoload files

zipとunzip

[root@localhost www]# sudo yum install zip unzip

php-xml

[root@localhost ~]# yum -y install --enablerepo=remi,epel,remi-php70 php-xml

php_codesniffer

[root@localhost ~]# composer global  require "squizlabs/php_codesniffer=*"

再度CakePHP3

[root@localhost www]# composer self-update && composer create-project --prefer-dist cakephp/app cakephp3

完了。

CentOS5.1にGitをインストールする

CentOSが5.1でもGitは使いたい。
※1年くらい前の作業メモなので今でもこの通りいくか不明。
※自己責任で試しましょう。


参考にさせていただいた記事はこちら。
CentOS5.8にyumでgitをインストールする | hypermkt blog

とりあえず普通にyumでインストールしてみる。

[vagrant@localhost ~]$ sudo yum -y install git
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
No package git available.
Nothing to do

No package git available.だって。
どうやらCentOSのデフォルトのyumリポジトリではgitがないらしい。

epelリポジトリの入手

[vagrant@localhost ~]$ sudo rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm
Retrieving http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm
warning: /var/tmp/rpm-xfer.oDCufz: Header V3 DSA signature: NOKEY, key ID 217521f6
Preparing...                ########################################### [100%]
   1:epel-release           ########################################### [100%]

このままだとepelリポジトリCentOSの公式リポジトリより優先されてしまうようなので、
公式リポジトリを優先するように設定しておかないといけない。
てことでどのリポジトリを優先的に利用するか設定するためにyum-prioritiesをインストールする。

yum-prioritiesのインストー

[vagrant@localhost ~]$ sudo yum install yum-priorities
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
epel                                                                                                                                            | 3.6 kB     00:00
epel/primary_db                                                                                                                                 | 2.9 MB     00:00
Setting up Install Process
Resolving Dependencies
 --> Running transaction check
 ---> Package yum-priorities.noarch 0:1.1.16-21.el5.centos set to be updated
 --> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================================================================
 Package                                    Arch                               Version                                          Repository                        Size
=======================================================================================================================================================================
Installing:
 yum-priorities                             noarch                             1.1.16-21.el5.centos                             base                              16 k

Transaction Summary
=======================================================================================================================================================================
Install       1 Package(s)
Upgrade       0 Package(s)

Total download size: 16 k
Is this ok [y/N]: y
Downloading Packages:
yum-priorities-1.1.16-21.el5.centos.noarch.rpm                                                                                                  |  16 kB     00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : yum-priorities                                                                                                                                  1/1

Installed:
  yum-priorities.noarch 0:1.1.16-21.el5.centos

Complete!

yum-prioritiesがインストールできたら、
baseのprioirtyを1で、他を2とかにすればいける。(たぶん)

Baseリポジトリの優先度を上げる

[vagrant@localhost ~]$ sudo vi /etc/yum.repos.d/CentOS-Base.repo
[base]
...
 +priority=1
 
#released updates
[updates]
...
 +priority=2
 
#additional packages that may be useful
[extras]
...
 +priority=2
 
#additional packages that extend functionality of existing packages
[centosplus]
...
 +priority=2
 
#contrib - packages by Centos Users
[contrib]
...
 +priority=2

Gitをインストールする

[vagrant@localhost ~]$ sudo yum install git
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
base                                                                                                                                            | 1.1 kB     00:00
extras                                                                                                                                          | 2.1 kB     00:00
updates                                                                                                                                         | 1.9 kB     00:00
Setting up Install Process
Resolving Dependencies
 --> Running transaction check
 ---> Package git.x86_64 0:1.8.2.3-1.el5 set to be updated
 --> Processing Dependency: perl-Git = 1.8.2.3-1.el5 for package: git
 --> Processing Dependency: rsync for package: git
 --> Processing Dependency: perl(Term::ReadKey) for package: git
 --> Processing Dependency: perl(Git) for package: git
 --> Processing Dependency: perl(Error) for package: git
 --> Running transaction check
 ---> Package perl-Error.noarch 1:0.17010-1.el5 set to be updated
 ---> Package perl-Git.x86_64 0:1.8.2.3-1.el5 set to be updated
 ---> Package perl-TermReadKey.x86_64 0:2.30-4.el5 set to be updated
 ---> Package rsync.x86_64 0:3.0.6-6.el5_11 set to be updated
 --> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================================================================
 Package                                      Arch                               Version                                     Repository                           Size
=======================================================================================================================================================================
Installing:
 git                                          x86_64                             1.8.2.3-1.el5                               epel                                 17 M
Installing for dependencies:
 perl-Error                                   noarch                             1:0.17010-1.el5                             epel                                 26 k
 perl-Git                                     x86_64                             1.8.2.3-1.el5                               epel                                 45 k
 perl-TermReadKey                             x86_64                             2.30-4.el5                                  epel                                 32 k
 rsync                                        x86_64                             3.0.6-6.el5_11                              updates                             347 k

Transaction Summary
=======================================================================================================================================================================
Install       5 Package(s)
Upgrade       0 Package(s)

Total download size: 17 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): perl-Error-0.17010-1.el5.noarch.rpm                                                                                                      |  26 kB     00:00
(2/5): perl-TermReadKey-2.30-4.el5.x86_64.rpm                                                                                                   |  32 kB     00:00
(3/5): perl-Git-1.8.2.3-1.el5.x86_64.rpm                                                                                                        |  45 kB     00:00
(4/5): rsync-3.0.6-6.el5_11.x86_64.rpm                                                                                                          | 347 kB     00:00
(5/5): git-1.8.2.3-1.el5.x86_64.rpm                                                                                                             |  17 MB     00:03
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                  3.1 MB/s |  17 MB     00:05
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 217521f6
epel/gpgkey                                                                                                                                     | 1.7 kB     00:00
Importing GPG key 0x217521F6 "Fedora EPEL " from /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : perl-Error                                                                                                                                      1/5
  Installing     : perl-TermReadKey                                                                                                                                2/5
  Installing     : rsync                                                                                                                                           3/5
  Installing     : git                                                                                                                                             4/5
  Installing     : perl-Git                                                                                                                                        5/5

Installed:
  git.x86_64 0:1.8.2.3-1.el5

Dependency Installed:
  perl-Error.noarch 1:0.17010-1.el5         perl-Git.x86_64 0:1.8.2.3-1.el5         perl-TermReadKey.x86_64 0:2.30-4.el5         rsync.x86_64 0:3.0.6-6.el5_11

Complete!
[vagrant@localhost ~]$ git --version
git version 1.8.2.3

無事インストールできました。