<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>1000g</title>
	<atom:link href="http://1000g.5qk.jp/feed/" rel="self" type="application/rss+xml" />
	<link>http://1000g.5qk.jp</link>
	<description>技術メモ</description>
	<lastBuildDate>Thu, 10 May 2012 02:37:30 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHPで値がセットされているか確かめる方法</title>
		<link>http://1000g.5qk.jp/2012/04/18/php%e3%81%a7%e5%80%a4%e3%81%8c%e3%82%bb%e3%83%83%e3%83%88%e3%81%95%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8b%e3%81%8b%e7%a2%ba%e3%81%8b%e3%82%81%e3%82%8b%e6%96%b9%e6%b3%95/</link>
		<comments>http://1000g.5qk.jp/2012/04/18/php%e3%81%a7%e5%80%a4%e3%81%8c%e3%82%bb%e3%83%83%e3%83%88%e3%81%95%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8b%e3%81%8b%e7%a2%ba%e3%81%8b%e3%82%81%e3%82%8b%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 07:35:31 +0000</pubDate>
		<dc:creator>1000k</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://1000g.5qk.jp/?p=998</guid>
		<description><![CDATA[似たようなエントリは無数にありますが、自分用のまとめとして。 PHPで「値がセットされているか」をチェックするには、下記のように何通りか書き方があります。 if (isset($var)) {...} if (!empty($var)) {...} if ($var) {...} それぞれの違いがあいまいだと痛い目を見るので、違いをハッキリさせておきます。 テストコード 結果 *** NULL *** isset(NULL): false !empty(NULL): false (NULL): false *** true *** isset(true): true !empty(true): true (true): true *** false *** isset(false): true !empty(false): false (false): &#8230;<p class="read-more"><a href="http://1000g.5qk.jp/2012/04/18/php%e3%81%a7%e5%80%a4%e3%81%8c%e3%82%bb%e3%83%83%e3%83%88%e3%81%95%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8b%e3%81%8b%e7%a2%ba%e3%81%8b%e3%82%81%e3%82%8b%e6%96%b9%e6%b3%95/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>似たようなエントリは無数にありますが、自分用のまとめとして。</p>

<p>PHPで「値がセットされているか」をチェックするには、下記のように何通りか書き方があります。</p>

<div><pre>
if (isset($var)) {...}
if (!empty($var)) {...}
if ($var) {...}
</pre>

</div>

<p>それぞれの違いがあいまいだと痛い目を見るので、違いをハッキリさせておきます。</p>

<h2>テストコード</h2>

<script src="https://gist.github.com/2411752.js"> </script>

<h2>結果</h2>

<div><pre>
*** NULL ***
isset(NULL): false
!empty(NULL): false
(NULL): false

*** true ***
isset(true): true
!empty(true): true
(true): true

*** false ***
isset(false): true
!empty(false): false
(false): false

*** 'false' ***
isset('false'): true
!empty('false'): true
('false'): true

*** '' ***
isset(''): true
!empty(''): false
(''): false

*** 0 ***
isset(0): true
!empty(0): false
(0): false

*** '0' ***
isset('0'): true
!empty('0'): false
('0'): false

*** 'aaaaa' ***
isset('aaaaa'): true
!empty('aaaaa'): true
('aaaaa'): true

*** 12345 ***
isset(12345): true
!empty(12345): true
(12345): true

*** array () ***
isset(array ()): true
!empty(array ()): false
(array ()): false
</pre>

</div>

<p>以上より、「値がセットされているか」が真になるのは、下記の表のようになります。</p>

<table>
<thead>
<tr>
  <th>-</th>
  <th>isset($var)</th>
  <th>!empty($var)</th>
  <th>($var)</th>
</tr>
</thead>
<tbody>
<tr>
  <td>NULL</td>
  <td>false</td>
  <td>false</td>
  <td>false</td>
</tr>
<tr>
  <td>true</td>
  <td>true</td>
  <td>true</td>
  <td>true</td>
</tr>
<tr>
  <td>false</td>
  <td>true</td>
  <td>false</td>
  <td>false</td>
</tr>
<tr>
  <td>&#8216;false&#8217;</td>
  <td>true</td>
  <td>true</td>
  <td>true</td>
</tr>
<tr>
  <td>&#8221;</td>
  <td>true</td>
  <td>false</td>
  <td>false</td>
</tr>
<tr>
  <td>0</td>
  <td>true</td>
  <td>false</td>
  <td>false</td>
</tr>
<tr>
  <td>&#8217;0&#8242;</td>
  <td>true</td>
  <td>false</td>
  <td>false</td>
</tr>
<tr>
  <td>&#8216;aaaaa&#8217;</td>
  <td>true</td>
  <td>true</td>
  <td>true</td>
</tr>
<tr>
  <td>12345</td>
  <td>true</td>
  <td>true</td>
  <td>true</td>
</tr>
<tr>
  <td>array()</td>
  <td>true</td>
  <td>false</td>
  <td>false</td>
</tr>
</tbody>
</table>

<h2>まとめ</h2>

<ul>
<li>issetはNULL以外がセットされていればtrue</li>
<li>「!empty($var)」と「($var)」は同義</li>
<li>empty()は大変クセが強いので、<a href="http://jp.php.net/manual/ja/function.empty.php">公式マニュアル</a>を熟読しましょう。</li>
</ul>

<blockquote>
  <p>varが空でないか、0でない値であれば FALSE を返します。</p>
  
  <p>次のような値は空であるとみなされます。</p>
  
  <ul>
  <li>&#8220;&#8221; (空文字列)</li>
  <li>0 (整数 の 0)</li>
  <li>0.0 (浮動小数点数の 0)</li>
  <li>&#8220;0&#8243; (文字列 の 0)</li>
  <li>NULL</li>
  <li>FALSE</li>
  <li>array() (空の配列)</li>
  <li>var $var; (変数が宣言されているが、クラスの中で値が設定されていない)</li>
  </ul>
</blockquote>

<h2>参考</h2>

<p>PHPの公式マニュアルを見て確かめましょう。</p>

<ul>
<li><a href="http://jp.php.net/manual/ja/function.empty.php">PHP: empty &#8211; Manual</a></li>
<li><a href="http://jp.php.net/manual/ja/function.isset.php">PHP: isset &#8211; Manual</a></li>
<li><a href="http://jp.php.net/manual/ja/control-structures.if.php">PHP: if &#8211; Manual</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://1000g.5qk.jp/2012/04/18/php%e3%81%a7%e5%80%a4%e3%81%8c%e3%82%bb%e3%83%83%e3%83%88%e3%81%95%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8b%e3%81%8b%e7%a2%ba%e3%81%8b%e3%82%81%e3%82%8b%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>最新のパッケージをyumでインストールする</title>
		<link>http://1000g.5qk.jp/2012/01/15/%e6%9c%80%e6%96%b0%e3%81%ae%e3%83%91%e3%83%83%e3%82%b1%e3%83%bc%e3%82%b8%e3%82%92yum%e3%81%a7%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/</link>
		<comments>http://1000g.5qk.jp/2012/01/15/%e6%9c%80%e6%96%b0%e3%81%ae%e3%83%91%e3%83%83%e3%82%b1%e3%83%bc%e3%82%b8%e3%82%92yum%e3%81%a7%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 09:07:10 +0000</pubDate>
		<dc:creator>1000k</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[yum]]></category>
		<category><![CDATA[インストール]]></category>

		<guid isPermaLink="false">http://1000g.5qk.jp/?p=960</guid>
		<description><![CDATA[yum公式リポジトリ内の古いApacheやphpではなく、最新版をrpmで入れる方法です。 下記に記す非公式リポジトリを参照することで、最新のパッケージをyumでインストールできます。 Remi Utter Ramblings もちろん公式のリポジトリより信頼性は劣るようなので、注意が必要です。 手順 Remiリポジトリ追加 RemiリポジトリはEPELリポジトリに依存しているため、両方追加する必要があります。 最新のダウンロード先は下記から確認してください。 Remi: RepoView: Les RPM de Remi EPEL: http://download.fedora.redhat.com/pub/epel/5/i386/ # wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm # wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm # rpm -ivh epel-release-5-4.noarch.rpm remi-release-5.rpm ※前のバージョンのrpmが入っている場合、「rpm -Uvh {パッケージ名}」を指定します。 これでyumのリポジトリにRemiとEPELを参照できるようになりました。 $ ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Media.repo epel-testing.repo remi.repo &#8230;<p class="read-more"><a href="http://1000g.5qk.jp/2012/01/15/%e6%9c%80%e6%96%b0%e3%81%ae%e3%83%91%e3%83%83%e3%82%b1%e3%83%bc%e3%82%b8%e3%82%92yum%e3%81%a7%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>yum公式リポジトリ内の古いApacheやphpではなく、最新版をrpmで入れる方法です。</p>

<p>下記に記す非公式リポジトリを参照することで、最新のパッケージをyumでインストールできます。</p>

<ul>
<li><a href="http://blog.famillecollet.com/">Remi</a></li>
<li><a href="http://www.jasonlitka.com/">Utter Ramblings</a></li>
</ul>

<p>もちろん公式のリポジトリより信頼性は劣るようなので、注意が必要です。</p>

<h1>手順</h1>

<h2>Remiリポジトリ追加</h2>

<p>RemiリポジトリはEPELリポジトリに依存しているため、両方追加する必要があります。</p>

<p>最新のダウンロード先は下記から確認してください。</p>

<ul>
<li>Remi: <a href="http://rpms.famillecollet.com/">RepoView: Les RPM de Remi</a></li>
<li>EPEL: http://download.fedora.redhat.com/pub/epel/5/i386/</li>
</ul>

<div><pre>
# wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
# wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# rpm -ivh epel-release-5-4.noarch.rpm remi-release-5.rpm
</pre>

</div>

<p>※前のバージョンのrpmが入っている場合、「rpm -Uvh {パッケージ名}」を指定します。</p>

<p>これでyumのリポジトリにRemiとEPELを参照できるようになりました。</p>

<div><pre>
$ ls /etc/yum.repos.d/
CentOS-Base.repo       CentOS-Media.repo  epel-testing.repo  remi.repo
CentOS-Debuginfo.repo  CentOS-Vault.repo  epel.repo
</pre>

</div>

<h2>Utterリポジトリ追加</h2>

<p><strong>/etc/yum.repos.d/utter.repo</strong> を開き、下記のように編集します。</p>

<div><pre>
[utter]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
</pre>

</div>

<p>以上で、phpやhttpdの最新版がyumでインストールできるようになりました。</p>

<h2>最新パッケージのインストール</h2>

<p>yumコマンドに「&#8211;enablerepo={リポジトリ名}」オプションを付けることで、それぞれのリポジトリを参照できます。</p>

<p>PHPの場合</p>

<div><pre>
# yum --enablerepo=remi install php
...
===================================================================================================================
 Package                  Arch                 Version                                 Repository             Size
===================================================================================================================
Installing:
 php                      x86_64               5.3.9-1.el5.remi                        remi                  2.8 M
Installing for dependencies:
 httpd                    x86_64               2.2.3-53.el5.centos.3                   updates               1.2 M
 libedit                  x86_64               2.11-2.20080712cvs.el5                  epel                   80 k
 php-cli                  x86_64               5.3.9-1.el5.remi                        remi                  2.6 M
 php-common               x86_64               5.3.9-1.el5.remi                        remi                  997 k

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

Total download size: 7.7 M
Is this ok [y/N]: 
</pre>

</div>

<p>Apache2(httpd)の場合</p>

<div><pre>
# yum --enablerepo=utter install httpd
...
===================================================================================================================
 Package                       Arch                   Version                          Repository             Size
===================================================================================================================
Installing:
 httpd                         x86_64                 2.2.21-jason.1                   utter                 3.2 M
Installing for dependencies:
 apr-util-ldap                 x86_64                 1.3.12-1.jason.1                 utter                  20 k
Updating for dependencies:
 apr-util                      x86_64                 1.3.12-1.jason.1                 utter                 201 k

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

Total download size: 3.4 M
Is this ok [y/N]: 
</pre>

</div>

<h1>参考</h1>

<ul>
<li><a href="http://hoge001.exblog.jp/13982612/">hoge001 : CentOS5.5 Apache 2.2.15 インストール</a></li>
<li><a href="https://fedoraproject.org/wiki/About_EPEL/ja">About EPEL/ja &#8211; FedoraProject</a>

<ul>
<li>EPELとは？EPELの目的など</li>
</ul></li>
<li><a href="http://www.goofoo.jp/2011/03/556">yumでremiリポジトリを使えるようにする | グーフー WordPressのためのLinuxノート</a></li>
<li><a href="http://pentan.info/server/linux/yum_new.html">yumで、より新しいパッケージをインストールする方法(CentOS) &#8211; [yum/Linux [Red Hatなど]] ぺんたん info</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://1000g.5qk.jp/2012/01/15/%e6%9c%80%e6%96%b0%e3%81%ae%e3%83%91%e3%83%83%e3%82%b1%e3%83%bc%e3%82%b8%e3%82%92yum%e3%81%a7%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pacoでソースからインストールしたアプリを管理する</title>
		<link>http://1000g.5qk.jp/2012/01/15/paco%e3%81%a7%e3%82%bd%e3%83%bc%e3%82%b9%e3%81%8b%e3%82%89%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%97%e3%81%9f%e3%82%a2%e3%83%97%e3%83%aa%e3%82%92%e7%ae%a1%e7%90%86%e3%81%99/</link>
		<comments>http://1000g.5qk.jp/2012/01/15/paco%e3%81%a7%e3%82%bd%e3%83%bc%e3%82%b9%e3%81%8b%e3%82%89%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%97%e3%81%9f%e3%82%a2%e3%83%97%e3%83%aa%e3%82%92%e7%ae%a1%e7%90%86%e3%81%99/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 08:11:07 +0000</pubDate>
		<dc:creator>1000k</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[コマンド]]></category>
		<category><![CDATA[paco]]></category>

		<guid isPermaLink="false">http://1000g.5qk.jp/?p=954</guid>
		<description><![CDATA[pacoは、自分でソースからインストールしたアプリでもrpmのようにパッケージ管理できるようになるツールです。 インストール手順 最新のソースは paco &#8211; a source code pacKAGE oRGANIZER for Unix/Linux で確認してください。 # wget http://sourceforge.net/projects/paco/files/paco/2.0.9/paco-2.0.9.tar.bz2/download # tar xvf paco-2.0.9.tar.bz2 # cd paco-2.0.9 # ./configure --disable-gpaco # make # make install # make logme 今回はGUIを使わないので、configureオプションに「&#8211;disable-gpaco」を付けています。 これを付けないと「No package &#8216;gtkmm-2.4&#8242; found」というエラーが出ます。 最後の「make &#8230;<p class="read-more"><a href="http://1000g.5qk.jp/2012/01/15/paco%e3%81%a7%e3%82%bd%e3%83%bc%e3%82%b9%e3%81%8b%e3%82%89%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%97%e3%81%9f%e3%82%a2%e3%83%97%e3%83%aa%e3%82%92%e7%ae%a1%e7%90%86%e3%81%99/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>pacoは、自分でソースからインストールしたアプリでもrpmのようにパッケージ管理できるようになるツールです。</p>

<h1>インストール手順</h1>

<p>最新のソースは <a href="http://paco.sourceforge.net/">paco &#8211; a source code pacKAGE oRGANIZER for Unix/Linux</a> で確認してください。</p>

<div><pre>
# wget http://sourceforge.net/projects/paco/files/paco/2.0.9/paco-2.0.9.tar.bz2/download
# tar xvf paco-2.0.9.tar.bz2 
# cd paco-2.0.9
# ./configure --disable-gpaco
# make
# make install
# make logme
</pre>

</div>

<p>今回はGUIを使わないので、configureオプションに「&#8211;disable-gpaco」を付けています。
これを付けないと「No package &#8216;gtkmm-2.4&#8242; found」というエラーが出ます。</p>

<p>最後の「make logme」でpaco自身のインストール内容を記録しています。</p>

<h1>使い方</h1>

<h2>インストールを記録する</h2>

<p>今後、何らかのアプリをmake installする際には、「paco -D」を付けることでpacoに記録できます。</p>

<div><pre>
# cd {インストールしたいパッケージ}
# paco -D make install
</pre>

</div>

<h2>インストール済みパッケージを確認する</h2>

<p>「-a」オプションを使います。</p>

<div><pre>
# paco -a
paco-2.0.9
</pre>

</div>

<h2>パッケージでインストールされたファイルを確認する</h2>

<p>「-f」オプションを使います。</p>

<div><pre>
$ paco -f paco-2.0.9
paco-2.0.9:
/usr/local/share/paco/README
/usr/local/lib/libpaco-log.a
/usr/local/lib/libpaco-log.la
/usr/local/lib/libpaco-log.so
/usr/local/lib/libpaco-log.so.0
/usr/local/lib/libpaco-log.so.0.0.0
/usr/local/bin/paco
/usr/local/etc/pacorc
/usr/local/lib/pkgconfig/paco.pc
/usr/local/share/man/man5/pacorc.5
/usr/local/share/man/man8/paco.8
/usr/local/share/man/man8/pacoball.8
/usr/local/share/man/man8/rpm2paco.8
/usr/local/share/man/man8/superpaco.8
/usr/local/share/paco/faq.txt
/usr/local/share/paco/pacorc
/usr/local/bin/ocap
/usr/local/bin/pacoball
/usr/local/bin/rpm2paco
/usr/local/bin/superpaco
</pre>

</div>

<h2>パッケージをアンインストールする</h2>

<p>「-r」オプションです。</p>

<div><pre>
# paco -r {アンインストールしたいパッケージ名}
</pre>

</div>

<h1>参考</h1>

<ul>
<li><a href="http://d.hatena.ne.jp/kasei_san/20100220/p1">さくらのユーザディレクトリにPACOをインストールしたときの手順 &#8211; かせいさんとこ</a></li>
<li><a href="http://paco.sourceforge.net/">paco &#8211; a source code pacKAGE oRGANIZER for Unix/Linux</a></li>
<li><a href="http://www.atmarkit.co.jp/flinux/rensai/linuxtips/886usepaco.html">ソースからインストールしたアプリを管理するには － ＠IT</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://1000g.5qk.jp/2012/01/15/paco%e3%81%a7%e3%82%bd%e3%83%bc%e3%82%b9%e3%81%8b%e3%82%89%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%97%e3%81%9f%e3%82%a2%e3%83%97%e3%83%aa%e3%82%92%e7%ae%a1%e7%90%86%e3%81%99/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOSでbzip2が解凍できないエラー</title>
		<link>http://1000g.5qk.jp/2012/01/15/centos%e3%81%a7bzip2%e3%81%8c%e8%a7%a3%e5%87%8d%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84%e3%82%a8%e3%83%a9%e3%83%bc/</link>
		<comments>http://1000g.5qk.jp/2012/01/15/centos%e3%81%a7bzip2%e3%81%8c%e8%a7%a3%e5%87%8d%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84%e3%82%a8%e3%83%a9%e3%83%bc/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 07:52:45 +0000</pubDate>
		<dc:creator>1000k</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[コマンド]]></category>
		<category><![CDATA[bzip2]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[CloudCore]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[yum]]></category>
		<category><![CDATA[トラブルシューティング]]></category>

		<guid isPermaLink="false">http://1000g.5qk.jp/?p=947</guid>
		<description><![CDATA[bzip2ファイルを解凍しようと思ったら、見慣れないエラーが出ました。 # tar xvf paco-2.0.9.tar.bz2 tar: bzip2: exec 不能: そのようなファイルやディレクトリはありません tar: エラーを回復できません: 直ちに終了します tar: Child returned status 2 tar: 処理中にエラーが起きましたが、最後まで処理してからエラー終了させました ただ単にbzip2がインストールされていなかったのが原因でした。yumで入れて即解決です。 # yum -y install bzip2 ... Installed: bzip2.x86_64 0:1.0.3-6.el5_5 Complete! CloudCore VPSでこのエラーに遭遇しました。 CentOSの最小構成でインストールされているようで、ごく普通のコマンドが使えないことが多いです。 パッケージが不足していないか注意が必要ですね。 参考 2007-02-05 &#8211; プチ技術メモ]]></description>
			<content:encoded><![CDATA[<p>bzip2ファイルを解凍しようと思ったら、見慣れないエラーが出ました。</p>

<div><pre>
# tar xvf paco-2.0.9.tar.bz2 
tar: bzip2: exec 不能: そのようなファイルやディレクトリはありません
tar: エラーを回復できません: 直ちに終了します
tar: Child returned status 2
tar: 処理中にエラーが起きましたが、最後まで処理してからエラー終了させました
</pre>

</div>

<p>ただ単にbzip2がインストールされていなかったのが原因でした。yumで入れて即解決です。</p>

<div><pre>
# yum -y install bzip2
...
Installed:
  bzip2.x86_64 0:1.0.3-6.el5_5                                                                                     

Complete!
</pre>

</div>

<p>CloudCore VPSでこのエラーに遭遇しました。
CentOSの最小構成でインストールされているようで、ごく普通のコマンドが使えないことが多いです。
パッケージが不足していないか注意が必要ですね。</p>

<h1>参考</h1>

<ul>
<li><a href="http://d.hatena.ne.jp/hiroponz/20070205">2007-02-05 &#8211; プチ技術メモ</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://1000g.5qk.jp/2012/01/15/centos%e3%81%a7bzip2%e3%81%8c%e8%a7%a3%e5%87%8d%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84%e3%82%a8%e3%83%a9%e3%83%bc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CloudCore VPS初期設定</title>
		<link>http://1000g.5qk.jp/2012/01/15/cloudcore-vps%e5%88%9d%e6%9c%9f%e8%a8%ad%e5%ae%9a/</link>
		<comments>http://1000g.5qk.jp/2012/01/15/cloudcore-vps%e5%88%9d%e6%9c%9f%e8%a8%ad%e5%ae%9a/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 07:29:17 +0000</pubDate>
		<dc:creator>1000k</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[その他]]></category>
		<category><![CDATA[開発環境]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[CloudCore]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[yum]]></category>
		<category><![CDATA[設定]]></category>

		<guid isPermaLink="false">http://1000g.5qk.jp/?p=941</guid>
		<description><![CDATA[高スペック＆安価＆国産で話題のCloudCore VPSをレンタルしてみました。 このスペックで月980円はたしかにお得です。 # cat /etc/redhat-release CentOS release 5.6 (Final) # df -h Filesystem サイズ 使用 残り 使用% マウント位置 /dev/vda1 97G 5.0G 87G 6% / tmpfs 1003M 0 1003M 0% /dev/shm # cat /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD &#8230;<p class="read-more"><a href="http://1000g.5qk.jp/2012/01/15/cloudcore-vps%e5%88%9d%e6%9c%9f%e8%a8%ad%e5%ae%9a/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>高スペック＆安価＆国産で話題のCloudCore VPSをレンタルしてみました。
このスペックで月980円はたしかにお得です。</p>

<div><pre>
# cat /etc/redhat-release 
CentOS release 5.6 (Final)

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/vda1              97G  5.0G   87G   6% /
tmpfs                1003M     0 1003M   0% /dev/shm

# cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 16
model           : 2
model name      : AMD Phenom(tm) 9550 Quad-Core Processor
stepping        : 3
cpu MHz         : 2199.998
cache size      : 512 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb lm up pni cx16 popcnt lahf_lm cmp_legacy svm cr8_legacy altmovcr8 abm sse4a misalignsse
bogomips        : 4399.99
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

# cat /proc/meminfo 
MemTotal:      2053764 kB
MemFree:       1859380 kB
</pre>

</div>

<p>まずは初期設定メモを残しておきます。</p>

<h1>よく使うパッケージのインストール</h1>

<p>CentOS最小構成でインストールされているらしく、よく使うパッケージが全然入っていません。入れておきましょう。</p>

<div><pre>
# yum -y install sudo vim-enhanced iptables vsftpd bzip2 gcc gcc-c++ make automake mlocate
</pre>

</div>

<p>導入しているパッケージの説明は下記の通り。</p>

<table>
<thead>
<tr>
  <th>パッケージ名</th>
  <th>説明</th>
</tr>
</thead>
<tbody>
<tr>
  <td>sudo</td>
  <td>sudoコマンド</td>
</tr>
<tr>
  <td>vim-enhanced</td>
  <td>標準で入っているviの高機能版</td>
</tr>
<tr>
  <td>iptables</td>
  <td>ファイアーウォール</td>
</tr>
<tr>
  <td>vsftpd</td>
  <td>FTPデーモン</td>
</tr>
<tr>
  <td>bzip2</td>
  <td>bzip2圧縮・解凍</td>
</tr>
<tr>
  <td>gcc, gcc-c++</td>
  <td>コンパイル時に必要</td>
</tr>
<tr>
  <td>make, automake</td>
  <td>ソースからインストールする時必要</td>
</tr>
<tr>
  <td>mlocate</td>
  <td>locate &amp; updatedbコマンド</td>
</tr>
<tr>
  <td>vixie-cron</td>
  <td>crontabコマンド &amp; cronデーモン</td>
</tr>
</tbody>
</table>

<p>crondは起動し、自動起動をオンにしておきます。</p>

<div><pre>
# /etc/rc.d/init.d/crond start
# chkconfig crond on
</pre>

</div>

<p>また、インストール済みのパッケージを更新しましょう。
私の場合100パッケージ(129MB)ありました。</p>

<div><pre>
# yum update
</pre>

</div>

<h1>作業用ユーザー追加</h1>

<p>rootでの作業はリスク上よろしくないので、作業用ユーザーを追加します。
wheelグループに追加することで、su権限が得られます。</p>

<div><pre>
# useradd mojamoja
# usermod -G wheel mojamoja
</pre>

</div>

<p>wheelグループのユーザーがsudoを実行できるよう設定します。</p>

<div><pre>
# visudo

----
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
↑この行のコメントアウトを外す。
</pre>

</div>

<h1>sshポートの変更</h1>

<p>sshポートデフォルトの22番ではポートスキャンの標的になりやすいので、変更します。</p>

<div><pre>
#vim /etc/ssh/sshd_config

以下の行を変更。

#port 22
port 10022
</pre>

</div>

<p>sshデーモンを再起動して変更を反映します。
これで22番ポートではsshログインできなくなっています。</p>

<div><pre>
# /etc/init.d/sshd restart
</pre>

</div>

<h1>不要なデーモンの停止</h1>

<p>初期状態では4つのデーモンしか自動起動設定になっておらず、特に停止するようなデーモンはありません。</p>

<p>参考: <a href="http://www.cloudcore.jp/vps/spec/">スペック｜CloudCore VPS｜KDDIウェブコミュニケーションズ</a></p>

<h1>ファイアーウォールの構築</h1>

<p>ssh(10022), FTP, HTTPで接続できるようポートを開放してやります。
下記シェルファイルを作成し、実行してください。</p>

<p>※コンソールから1行ずつ打つと、「/sbin/iptables -P INPUT DROP」設定直後にコンソールが操作不能になります。
その場合、コントロールパネルから再起動することで再度ログイン可能になります。</p>

<div><pre>
#!/bin/sh
 
/sbin/iptables -F
/sbin/iptables -X
 
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD DROP
 
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
 
/sbin/iptables -A INPUT -s 10.0.0.0/8 -j DROP
/sbin/iptables -A INPUT -s 172.16.0.0/12 -j DROP
/sbin/iptables -A INPUT -s 192.168.0.0/16 -j DROP
 
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
 
/sbin/iptables -A INPUT -p tcp --dport 10022 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
/etc/rc.d/init.d/iptables save
 
/sbin/service iptables restart
</pre>

</div>

<p>設定が終わったら実行します。</p>

<div><pre>
# chmod +x set_iptables.sh 
# ./set_iptables.sh 
ファイアウォールのルールを /etc/sysconfig/iptables に保存中[  OK  ]
ファイアウォールルールを適用中:                            [  OK  ]
チェインポリシーを ACCEPT に設定中filter                   [  OK  ]
iptables モジュールを取り外し中                            [  OK  ]
iptables ファイアウォールルールを適用中:                   [  OK  ]
</pre>

</div>

<p>無事設定できたら、サーバー起動時にサービスが開始するよう設定します。設定が間違ったままこれをonにすると、コントロールパネルから再起動してもログイン不能になるので注意してください。</p>

<div><pre>
# chkconfig iptables on
</pre>

</div>

<h1>FTPを接続可能にする</h1>

<p><strong>/etc/vsftpd/vsftpd.conf</strong> を以下のように設定します。</p>

<div><pre>
以下の既存の行を修正する。

# 匿名ユーザーのログインを禁止
anonymous_enable=NO

# asciiモードでファイルを転送可能にする
ascii_upload_enable=YES
ascii_download_enable=YES

以下の行を追加。

# ファイル所有者を数字ではなくユーザー名で表示する
text_userdb_names=YES

# ファイルの上書き時間が日本時間になる
use_localtime=YES
</pre>

</div>

<p>設定が終わったら起動し、自動起動もオンにしましょう。</p>

<div><pre>
# /etc/rc.d/init.d/vsftpd start
vsftpd 用の vsftpd を起動中:                               [  OK  ]
# chkconfig vsftpd on
</pre>

</div>

<p>FTPクライアントで10022番ポートにSFTP接続可能になっていることを確認してください。</p>

<h1>参考</h1>

<ul>
<li><a href="http://tanaka.sakura.ad.jp/archives/001065.html">CentOSをサーバーとして活用するための基本的な設定 &#8211; さくらインターネット創業日記</a>

<ul>
<li>さくらの社長による、自社のVPSの初期設定方法</li>
</ul></li>
<li><a href="http://d.hatena.ne.jp/a__z/20071011">CentOS:sudo を設定する &#8211; 日々のメモ</a></li>
<li><a href="http://weble.org/2011/05/16/sakura-vps-and-centos">はじめてのさくら VPS + CentOS の初期設定からチューニングなどの作業まとめ | ウェブル</a>

<ul>
<li>LAMP環境の構築手順も</li>
</ul></li>
<li><a href="http://akabeko.sakura.ne.jp/blog/2010/09/%E3%81%95%E3%81%8F%E3%82%89%E3%81%AEvps-%E3%82%92%E4%BD%BF%E3%81%84%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B-3/">さくらのVPS を使いはじめる 3 – iptables を設定する | アカベコマイリ</a></li>
<li><a href="http://www.searchman.info/linux/1070.html">クライアントＰＣから、ＬINUXサーバー(Fedora9)にFTPで接続する。</a>

<ul>
<li>vsftpdの設定方法</li>
</ul></li>
<li><a href="http://sakura.off-soft.net/blog/cloudcore_vps_centos_first_setup.html">評判のCloudCore VPSを使うときに最初にやっておきたいこと(CentOS編) | レンタルサーバー・自宅サーバー設定・構築のヒント</a></li>
<li><a href="http://www.cloudcore.jp/vps/spec/">スペック｜CloudCore VPS｜KDDIウェブコミュニケーションズ</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://1000g.5qk.jp/2012/01/15/cloudcore-vps%e5%88%9d%e6%9c%9f%e8%a8%ad%e5%ae%9a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows7にAndroid開発環境構築</title>
		<link>http://1000g.5qk.jp/2012/01/09/windows7%e3%81%abandroid%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89/</link>
		<comments>http://1000g.5qk.jp/2012/01/09/windows7%e3%81%abandroid%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 07:08:44 +0000</pubDate>
		<dc:creator>1000k</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[その他]]></category>
		<category><![CDATA[開発環境]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">http://1000g.5qk.jp/?p=927</guid>
		<description><![CDATA[「Androidは簡単に開発が可能」と言われてる割に導入が面倒だったので、メモしておきます。 手順 1. 必要ファイルのダウンロード Windows 7 64bitの場合、下記アプリをダウンロードしました。 Eclipse 3.7 (Indigo) Java Developer Edition Eclipse Downloads Eclips IDE for Java Developers Java 6 JDK Java SE Downloads JREではなくJDK！ 執筆時バージョンは Java SE 6 Update 30 Android SDK Android SDK &#124; Android Developers &#8230;<p class="read-more"><a href="http://1000g.5qk.jp/2012/01/09/windows7%e3%81%abandroid%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>「Androidは簡単に開発が可能」と言われてる割に導入が面倒だったので、メモしておきます。</p>

<h1>手順</h1>

<h2>1. 必要ファイルのダウンロード</h2>

<p>Windows 7 64bitの場合、下記アプリをダウンロードしました。</p>

<ul>
<li>Eclipse 3.7 (Indigo) Java Developer Edition

<ul>
<li><a href="http://www.eclipse.org/downloads/">Eclipse Downloads</a></li>
<li>Eclips IDE for Java Developers</li>
</ul></li>
<li>Java 6 JDK

<ul>
<li><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java SE Downloads</a></li>
<li>JREではなくJDK！</li>
<li>執筆時バージョンは Java SE 6 Update 30</li>
</ul></li>
<li>Android SDK

<ul>
<li><a href="http://developer.android.com/sdk/index.html">Android SDK | Android Developers</a></li>
<li>installer_r16-windows.exe (Recommended) </li>
</ul></li>
</ul>

<h2>2. Java 6 JDKの設定</h2>

<p>インストールしたファイルを実行して、画面に従うだけ。</p>

<h2>3. Android SDKの設定</h2>

<ol>
<li>ダウンロードしたファイルを解凍orインストーラー実行</li>
<li>Android SDKのインストールが完了後、Managerが起動するので、使いたいAPIにチェックして[Install * Packages]

<ul>
<li>2.1を選べば97%のAndroidユーザーをカバーできるらしいので、チェック</li>
<li>必要に応じて別のバージョンもインストールする</li>
</ul></li>
</ol>

<h2>4. Eclipseの設定</h2>

<h3>Android Developer Tools (ADT)のインストール</h3>

<ol>
<li>ダウンロードしたファイルを解凍し、eclipse.exeを実行</li>
<li>Eclipseを起動し、[Help] &#8211; [Install software]</li>
<li>[Work with:]の隣にある[Add]をクリック。完了したら[OK]

<ul>
<li>Name: Android Plugin</li>
<li>Location: http://dl-ssl.google.com/android/eclipse/</li>
<li>「https」を指定すると途中でエラーが出て止まる</li>
</ul></li>
<li>[Work with:]に今入力した項目を選択。数十秒「Pending&#8230;」が表示された後、[Developer Tools]が出てきたらチェックを付けて[Next]</li>
<li>インストールされるパッケージ一覧が出るので、[Finish]</li>
<li>途中「Security Warning」が出るが、[OK]</li>
<li>長時間インストール完了を待ち、完了したら[Restart Now]</li>
<li>Eclipse再起動後、「Welcome to Android Development」が表示されるので、[Use existing SDKs]にチェック</li>
<li>SDKのインストール先を指定して[Next]

<ul>
<li>デフォルトなら &#8220;C:\Program Files (x86)\Android\android-sdk&#8221;</li>
</ul></li>
<li>統計データをGoogleに送るかどうか選択して[Finish]</li>
</ol>

<h3>AVDの作成</h3>

<ol>
<li>[Window] &#8211; [AVD Manager]</li>
<li>[New]</li>
<li>下記項目を入力して[Create AVD]

<ul>
<li>[Name]: 機器名。好きな名前でOK</li>
<li>[Target]: Androidのバージョン</li>
<li>[SD Card]: エミュレータが使用するSDカード容量。32MBもあれば十分</li>
<li>[Skin]: 画面解像度</li>
<li>[Hardware]: エミュレータのハード。GPSなど、開発しようとするアプリに合わせて選択</li>
</ul></li>
<li>[Start]をクリックして、エミュレータが起動したらOK

<ul>
<li>日本語化したい場合</li>
<li>起動後にホーム画面でメニューボタンクリック</li>
<li>[Settings] > [Language &amp; keyboard]</li>
<li>[Select locale］から日本語を選択</li>
</ul></li>
</ol>

<p>設定は以上で完了です。</p>

<h2>5. サンプルアプリのビルド</h2>

<p>ここまででビルド可能になっているので、試してみましょう。</p>

<ol>
<li>[File] &#8211; [New] &#8211; [Other...]</li>
<li>Android Project を選択して[Next]</li>
<li>以下のように設定して[Next]

<ul>
<li>Project Name: SampleApp</li>
<li>&#8220;Create projects from existing source&#8221;にチェック</li>
<li>Location: &#8220;C:\Program Files (x86)\Android\android-sdk\samples\android-7\SkeletonApp&#8221;</li>
</ul></li>
<li>Build Targetは&#8221;Android 2.1&#8243;にチェックして[Next]</li>
<li>Minumum SDKを&#8221;7&#8243;にして[Finish]</li>
<li>[Run] &#8211; [Run Configurations...]</li>
<li>[New launch configuration]アイコンをクリック</li>
<li>[Project:]に&#8221;SampleApp&#8221;を指定して[Run]</li>
<li>エミュレーター上に&#8221;Hello there, you Activity!&#8221;と表示されれば成功</li>
</ol>

<p><a href="http://1000g.5qk.jp/wp-content/uploads/android_tutorial.png" rel="lightbox[927]" title="ビルド完了"><img src="http://1000g.5qk.jp/wp-content/uploads/android_tutorial-300x293.png" alt="" title="ビルド完了" width="300" height="293" class="alignnone size-medium wp-image-937" /></a></p>

<p>なお、ビルドされたアプリはbinディレクトリの下に「SampleApp.apk」という名前で入っています。これをAndroidに転送すれば実機で実行できます。
（ただし「提供元不明のアプリ」を使用可能にしておくこと）</p>

<h1>参考</h1>

<ul>
<li><a href="http://gihyo.jp/dev/serial/01/androidapp/0002">世界を目指せ！Androidアプリ開発入門：第2回　Androidアプリ開発のための環境構築｜gihyo.jp … 技術評論社</a>

<ul>
<li>2010年の記事なので少し古い部分もありますが、基本的に最新バージョンで読み替えればOK</li>
</ul></li>
<li><a href="http://gihyo.jp/dev/serial/01/androidapp/0003">世界を目指せ！Androidアプリ開発入門：第3回　Android SDKでサンプルアプリを使ってみる｜gihyo.jp … 技術評論社</a></li>
<li><a href="http://sky.geocities.jp/izeefss/develop/android/env_eclipse.html">Android開発環境の構築 Eclipse編</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://1000g.5qk.jp/2012/01/09/windows7%e3%81%abandroid%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS 5.5にyumでgitをインストールする</title>
		<link>http://1000g.5qk.jp/2012/01/06/centos-5-5%e3%81%abyum%e3%81%a7git%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/</link>
		<comments>http://1000g.5qk.jp/2012/01/06/centos-5-5%e3%81%abyum%e3%81%a7git%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 02:24:28 +0000</pubDate>
		<dc:creator>1000k</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[その他]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[yum]]></category>
		<category><![CDATA[インストール]]></category>

		<guid isPermaLink="false">http://1000g.5qk.jp/?p=923</guid>
		<description><![CDATA[さくらVPS（CentOS 5.5が標準OS）を試用中です。早速gitを使おうと思いましたが、デフォルトでは未インストール。yumで入れようと思いましたが、標準のリポジトリではインストールできません。 というわけで、リポジトリを追加します。 インストール手順 1. 参照リポジトリを追加する /etc/yum.repos.d/rpmforge.repo を作成し、下記のように追記します。 [rpmforge] name = Red Hat Enterprise $releasever - RPMforge.net - dag mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge enabled = 0 gpgcheck = 0 2. yumでインストールする # yum install git --enablerepo=rpmforge Loaded plugins: fastestmirror Loading mirror &#8230;<p class="read-more"><a href="http://1000g.5qk.jp/2012/01/06/centos-5-5%e3%81%abyum%e3%81%a7git%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>さくらVPS（CentOS 5.5が標準OS）を試用中です。早速gitを使おうと思いましたが、デフォルトでは未インストール。yumで入れようと思いましたが、標準のリポジトリではインストールできません。</p>

<p>というわけで、リポジトリを追加します。</p>

<h1>インストール手順</h1>

<h2>1. 参照リポジトリを追加する</h2>

<p><strong>/etc/yum.repos.d/rpmforge.repo</strong> を作成し、下記のように追記します。</p>

<div><pre>
[rpmforge]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
enabled = 0
gpgcheck = 0
</pre>

</div>

<h2>2. yumでインストールする</h2>

<div><pre>
# yum install git --enablerepo=rpmforge
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp
 * extras: ftp.nara.wide.ad.jp
 * rpmforge: ftp-stud.fht-esslingen.de
 * updates: ftp.nara.wide.ad.jp

...

 ====================================================================================================================
 Package                  Arch                   Version                             Repository                Size
====================================================================================================================
Installing:
 git                      x86_64                 1.7.6.4-1.el5.rf                    rpmforge                 6.6 M
Installing for dependencies:
 perl-DBI                 x86_64                 1.52-2.el5                          base                     600 k
 perl-Git                 x86_64                 1.7.6.4-1.el5.rf                    rpmforge                  24 k

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

Total download size: 7.2 M
Is this ok [y/N]: y
...
Complete!
</pre>

</div>

<ol>
<li>確認</li>
</ol>

<div><pre>
# git --version
git version 1.7.6.4
</pre>

</div>

<p>完了です。</p>

<h1>参考</h1>

<ul>
<li><a href="http://d.hatena.ne.jp/mrgoofy33/20110206/1296952248">CentOS5.5にgitをインストールする(yumを使用) &#8211; hogehoge foobar Blog Style5</a>

<ul>
<li>「/etc/yum.repos.d/git.repoの追加」という行程は要らないような？</li>
</ul></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://1000g.5qk.jp/2012/01/06/centos-5-5%e3%81%abyum%e3%81%a7git%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTTP_Request2でhttps接続できない場合の対策</title>
		<link>http://1000g.5qk.jp/2011/11/25/http_request2%e3%81%a7https%e6%8e%a5%e7%b6%9a%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84%e5%a0%b4%e5%90%88%e3%81%ae%e5%af%be%e7%ad%96/</link>
		<comments>http://1000g.5qk.jp/2011/11/25/http_request2%e3%81%a7https%e6%8e%a5%e7%b6%9a%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84%e5%a0%b4%e5%90%88%e3%81%ae%e5%af%be%e7%ad%96/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 02:30:42 +0000</pubDate>
		<dc:creator>1000k</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[PEAR]]></category>
		<category><![CDATA[トラブルシューティング]]></category>

		<guid isPermaLink="false">http://1000g.5qk.jp/?p=917</guid>
		<description><![CDATA[HTTP_Request2::send()でhttpsサイトに接続しようとしたら、下記のようなエラーが返ってきました。 Malformed response: Unable to connect to ssl://www.google.com:443. stream_socket_client(): unable to connect to ssl://www.google.com:443 (Unknown error) Unknown errorというのが一番タチが悪い。エラーが追えません。 検証のためcurlコマンドで同じURLに接続を試みると、ちゃんとレスポンスが返ってきます。何か設定をし忘れているに違いない。 原因 どうやらHTTP_Request::setConfig()で正しい接続設定を行えていない場合、&#8221;Malformed response&#8221;というエラーが出るようです。 私の場合、オレオレ証明書の許可と社内プロキシの設定を行っていなかったためにはまってしまったようです。 対応 オレオレ証明書を持ったサイトを許可するために、setConfig()でssl_verify_peerとssl_verify_hostをfalseに設定してやります。 また、プロキシの設定も行います。 &#60;?php require_once(&#039;HTTP/Request2.php&#039;); $req = new HTTP_Request2(); $req-&#62;setConfig(array( &#039;ssl_verify_host&#039; =&#62; false, &#039;ssl_verify_peer&#039; =&#62; false, &#039;proxy_host&#039; &#8230;<p class="read-more"><a href="http://1000g.5qk.jp/2011/11/25/http_request2%e3%81%a7https%e6%8e%a5%e7%b6%9a%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84%e5%a0%b4%e5%90%88%e3%81%ae%e5%af%be%e7%ad%96/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>HTTP_Request2::send()でhttpsサイトに接続しようとしたら、下記のようなエラーが返ってきました。</p>

<div><pre>
Malformed response:
Unable to connect to ssl://www.google.com:443.
stream_socket_client(): unable to connect to ssl://www.google.com:443 (Unknown error)
</pre>

</div>

<p>Unknown errorというのが一番タチが悪い。エラーが追えません。</p>

<p>検証のためcurlコマンドで同じURLに接続を試みると、ちゃんとレスポンスが返ってきます。何か設定をし忘れているに違いない。</p>

<h1>原因</h1>

<p>どうやらHTTP_Request::setConfig()で正しい接続設定を行えていない場合、&#8221;Malformed response&#8221;というエラーが出るようです。
私の場合、オレオレ証明書の許可と社内プロキシの設定を行っていなかったためにはまってしまったようです。</p>

<h1>対応</h1>

<p>オレオレ証明書を持ったサイトを許可するために、setConfig()で<strong>ssl_verify_peer</strong>と<strong>ssl_verify_host</strong>をfalseに設定してやります。
また、プロキシの設定も行います。</p>

<div><pre>
&lt;?php
require_once(&#039;HTTP/Request2.php&#039;);
$req = new HTTP_Request2();

$req-&gt;setConfig(array(
    &#039;ssl_verify_host&#039; =&gt; false,
    &#039;ssl_verify_peer&#039; =&gt; false,
    &#039;proxy_host&#039; =&gt; &#039;uso.proxy.jp&#039;,
    &#039;proxy_port&#039; =&gt; &#039;8080&#039;,
));

$response = $req-&gt;setUrl(&quot;https://www.google.com/&quot;)-&gt;send();
print_r($response);     // HTTPレスポンスが出力される
</pre>

</div>

<p>ほかにも設定項目はあるので、<a href="http://pear.php.net/manual/en/package.http.http-request2.config.php">マニュアル</a>を参考に設定を疑ってみてはどうでしょうか。</p>

<h1>参考</h1>

<ul>
<li><a href="http://pear.php.net/manual/en/package.http.http-request2.config.php">Manual :: Configuration parameters for HTTP_Request2</a>

<ul>
<li>setConfigで設定できる項目一覧</li>
</ul></li>
<li><a href="http://d.hatena.ne.jp/vivid_skid/20110822/1314013148">HTTP_Request2 でのSSL通信でのPOST送信 &#8211; クマーのえんじにありんぐ</a>

<ul>
<li>オレオレ証明書の許可ではまってしまった方はこちら</li>
</ul></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://1000g.5qk.jp/2011/11/25/http_request2%e3%81%a7https%e6%8e%a5%e7%b6%9a%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84%e5%a0%b4%e5%90%88%e3%81%ae%e5%af%be%e7%ad%96/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pear installできないのがpear clear-cacheで解決</title>
		<link>http://1000g.5qk.jp/2011/11/21/pear-install%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84%e3%81%ae%e3%81%8cpear-clear-cache%e3%81%a7%e8%a7%a3%e6%b1%ba/</link>
		<comments>http://1000g.5qk.jp/2011/11/21/pear-install%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84%e3%81%ae%e3%81%8cpear-clear-cache%e3%81%a7%e8%a7%a3%e6%b1%ba/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 07:40:38 +0000</pubDate>
		<dc:creator>1000k</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PEAR]]></category>

		<guid isPermaLink="false">http://1000g.5qk.jp/?p=913</guid>
		<description><![CDATA[pear installでパッケージをインストールしようと思いましたが、身に覚えのないエラーが出て困りました。 $ pear install HTTP_Request2 PHP_PEAR_PHP_BIN is not set correctly. Please fix it using your environment variable or modify the default value in pear.bat The current value is: .\php.exe $ pear install Net_URL2-2.0.0 SECURITY ERROR: Will not write to &#8230;<p class="read-more"><a href="http://1000g.5qk.jp/2011/11/21/pear-install%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84%e3%81%ae%e3%81%8cpear-clear-cache%e3%81%a7%e8%a7%a3%e6%b1%ba/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>pear installでパッケージをインストールしようと思いましたが、身に覚えのないエラーが出て困りました。</p>

<div><pre>
$ pear install HTTP_Request2
PHP_PEAR_PHP_BIN is not set correctly.
Please fix it using your environment variable or modify
the default value in pear.bat
The current value is:
.\php.exe

$ pear install Net_URL2-2.0.0
SECURITY ERROR: Will not write to C:\DOCUME~1\keijiro\LOCALS~1\Temp\pear\cache\ee3f372dc6f69cdae3c6b0c2a0d1098erest.cacheid as it is symlinked to C:\DOCUME~1\keijiro\LOCALS~1\Temp\pear\cache\ee3f372dc6f69cdae3c6b0c2a0d1098erest.cacheid - Possible symlink attack
install failed
</pre>

</div>

<p>「PHP_PEAR_PHP_BINが間違ってる」「一時ファイルが書き込めない」など言われていますが、どちらも正常に設定できています。</p>

<p>はてどうしたことか。
と思いましたが、<strong>pear clear-cache</strong>を実行したらコマンドが通るようになりました。</p>

<div><pre>
$ pear clear-cache
reading directory C:\DOCUME~1\keijiro\LOCALS~1\Temp\pear\cache
1024 cache entries cleared

$ pear install Net_URL2-2.0.0

Notice: fwrite(): send of 189 bytes failed with errno=10054 既存の接続はリモート ホストに強制的に切断されました。
 in PEAR\Downloader.php on line 1664
downloading Net_URL2-2.0.0.tgz ...
Starting to download Net_URL2-2.0.0.tgz (11,325 bytes)
.....done: 11,325 bytes
install ok: channel://pear.php.net/Net_URL2-2.0.0

$ pear install HTTP_Request2-2.0.0

Notice: fwrite(): send of 189 bytes failed with errno=10054 既存の接続はリモート ホストに強制的に切断されました。
 in PEAR\Downloader.php on line 1664
pear/HTTP_Request2 can optionally use PHP extension "curl"
pear/HTTP_Request2 can optionally use PHP extension "fileinfo"
downloading HTTP_Request2-2.0.0.tgz ...
Starting to download HTTP_Request2-2.0.0.tgz (97,476 bytes)
......................done: 97,476 bytes
install ok: channel://pear.php.net/HTTP_Request2-2.0.0
</pre>

</div>

<p>Noticeが出ていますが、問題無く使えました。</p>

<h1>参考</h1>

<ul>
<li><a href="http://stackoverflow.com/questions/6442187/security-error-while-installing-phing-using-pear">Security Error while installing phing using pear &#8211; Stack Overflow</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://1000g.5qk.jp/2011/11/21/pear-install%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84%e3%81%ae%e3%81%8cpear-clear-cache%e3%81%a7%e8%a7%a3%e6%b1%ba/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SQLiteのインメモリDBを異なるPDOオブジェクトから参照するには</title>
		<link>http://1000g.5qk.jp/2011/11/11/sqlite%e3%81%ae%e3%82%a4%e3%83%b3%e3%83%a1%e3%83%a2%e3%83%aadb%e3%82%92%e7%95%b0%e3%81%aa%e3%82%8bpdo%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%8b%e3%82%89%e5%8f%82%e7%85%a7%e3%81%99/</link>
		<comments>http://1000g.5qk.jp/2011/11/11/sqlite%e3%81%ae%e3%82%a4%e3%83%b3%e3%83%a1%e3%83%a2%e3%83%aadb%e3%82%92%e7%95%b0%e3%81%aa%e3%82%8bpdo%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%8b%e3%82%89%e5%8f%82%e7%85%a7%e3%81%99/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 01:57:06 +0000</pubDate>
		<dc:creator>1000k</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[PDO]]></category>

		<guid isPermaLink="false">http://1000g.5qk.jp/?p=909</guid>
		<description><![CDATA[どうにもSQLiteのインメモリDBの値が取得できなかったので、実験してみました。 いきなり結論を書くと、「あるPDOオブジェクトからは、別のPDOオブジェクトが作成したインメモリDBには接続できない」ようです。 テストコード &#60;?php /** * SQLiteのオンメモリDBにテストデータを作成し、PDOからアクセスできることを確かめる */ try { $pdo1 = new PDO(&#039;sqlite::memory:&#039;, null, null); $pdo1-&#62;exec(&#039;CREATE TABLE uso(id INTEGER PRIMARY KEY, name STRING)&#039;); $pdo1-&#62;exec(&#039;INSERT INTO uso VALUES (1, &#34;uhouho&#34;);&#039;); $pdo1-&#62;exec(&#039;INSERT INTO uso VALUES (2, &#34;mojamoja&#34;);&#039;); // 接続済みのPDOオブジェクトからデータを取得できるか試してみる $stmt = &#8230;<p class="read-more"><a href="http://1000g.5qk.jp/2011/11/11/sqlite%e3%81%ae%e3%82%a4%e3%83%b3%e3%83%a1%e3%83%a2%e3%83%aadb%e3%82%92%e7%95%b0%e3%81%aa%e3%82%8bpdo%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%8b%e3%82%89%e5%8f%82%e7%85%a7%e3%81%99/">Read more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>どうにもSQLiteのインメモリDBの値が取得できなかったので、実験してみました。
いきなり結論を書くと、<strong>「あるPDOオブジェクトからは、別のPDOオブジェクトが作成したインメモリDBには接続できない」</strong>ようです。</p>

<h1>テストコード</h1>

<div><pre>
&lt;?php
/**
 * SQLiteのオンメモリDBにテストデータを作成し、PDOからアクセスできることを確かめる
 */
try {
    $pdo1 = new PDO(&#039;sqlite::memory:&#039;, null, null);
    $pdo1-&gt;exec(&#039;CREATE TABLE uso(id INTEGER PRIMARY KEY, name STRING)&#039;);
    $pdo1-&gt;exec(&#039;INSERT INTO uso VALUES (1, &quot;uhouho&quot;);&#039;);
    $pdo1-&gt;exec(&#039;INSERT INTO uso VALUES (2, &quot;mojamoja&quot;);&#039;);

    // 接続済みのPDOオブジェクトからデータを取得できるか試してみる
    $stmt = $pdo1-&gt;query(&#039;SELECT * FROM uso&#039;);
    if (!$stmt) {
        echo &#039;Cannot fetch data via $pdo1.&#039;;
    } else {
        print_r($stmt-&gt;fetchAll(PDO::FETCH_ASSOC));
    }

    // 新たにPDOオブジェクトを作成し、データを取得できるか試してみる
    $pdo2 = new PDO(&#039;sqlite::memory:&#039;);
    $stmt = $pdo2-&gt;query(&#039;SELECT * FROM uso&#039;);
    if (!$stmt) {
        echo &#039;Cannot fetch data via $pdo2.&#039;;
    } else {
        print_r($stmt-&gt;fetchAll(PDO::FETCH_ASSOC));
    }
} catch (Exception $e) {
    exit($e-&gt;getMessage());
}
</pre>

</div>

<h1>結果</h1>

<div><pre>
Array
(
    [0] => Array
        (
            [id] => 1
            [name] => uhouho
        )

    [1] => Array
        (
            [id] => 2
            [name] => mojamoja
        )

)
Cannot fetch data via $pdo2.
</pre>

</div>

<p>$pdo1で作成したインメモリDBに、$pdo2からは接続できていません。
どちらも同じ「sqlite::memory:」ですが、見ている領域は異なるようです。</p>

<h1>考察</h1>

<p>インメモリDB内に作ったテーブルに、複数のPDOオブジェクトからアクセスすることはできませんでした。
アクセスしたければ、テーブルを作ったPDOオブジェクトを使い回すしかなさそうです。</p>
]]></content:encoded>
			<wfw:commentRss>http://1000g.5qk.jp/2011/11/11/sqlite%e3%81%ae%e3%82%a4%e3%83%b3%e3%83%a1%e3%83%a2%e3%83%aadb%e3%82%92%e7%95%b0%e3%81%aa%e3%82%8bpdo%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%8b%e3%82%89%e5%8f%82%e7%85%a7%e3%81%99/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

