CentOSのローカルリポジトリを構築しよう2016.4.10Tweetはじめにインターネットに接続できないクローズドな環境でOpenStackの構築が必要になった経験はありませんか?Centosでサーバを構築するときはインターネットに繋がった状態でyumコマンドでアプリケーションをインストールしていくのが一般的です。セキュリティの要求レベルが高いシステムや環境ではそれが許されないときもありますよね。そんなときはインターネット上から取得したファイルを、一度記憶媒体に保存しウイルスチェックをかけた後、ローカル環境に移動させてからインストールしたりするのではないでしょうか。今回は、その方法の一つとしてローカルリポジトリを使ったアプリケーションのインストール方法をご紹介致します。ローカルリポジトリとは通常は、インターネット上のリポジトリを利用してインストールを実施しますが、あらかじめインストールに必要なファイルをダウンロードしておきリポジトリを作成する事もできます。そのようなリポジトリをローカルリポジトリと呼びます。インターネット上のリポジトリからファイルを全てダウンロードしてリポジトリミラーサーバを作成する事も可能ですが、実際にはインストールに使用しないファイルがたくさん含まれてサイズが大きくなってしまいます。その為、今回はインターネットに接続しているマシンで通常通りインストールを実施し、そのマシンから取得したファイルを元にローカルリポジトリを作成します。環境を構築しよう今回の環境はGMOインターネットのConoHaを使わせてもらいました。ConoHaへログインして、2台のCentOS7.1を準備します。メニューバー最上部の[サーバー追加]を内容でサーバを作成しました。vpc-2ConoHa上で以下の構成を作りました。vpc-1はインターネットに接続されているサーバ、vpc-2はローカル環境のサーバを想定しています。vpc-1とvpc-2はローカルネットワークで繋げていますがこれはファイル転送用としてのみ使用します。ローカルリポジトリを構築しようまずはインターネットに繋がっているサーバで通常通りインストールを行い、必要なパッケージを集めたいと思います。通常yumコマンドを使えばそのアプリケーションがインストールされるだけなのですが、以下の設定を行えば、インストールしたパッケージをキャッシュするようになります。/etc/yum.confのkeepcache=0を1に書き換えます。yum.confcachedir=/var/cache/yum/$basearch/$releaseverkeepcache=1debuglevel=2logfile=/var/log/yum.logexactarch=1obsoletes=1gpgcheck=1plugins=1installonly_limit=5yum.confの変更後は通常どおりアプリケーションをインストールしていきます。今回インストールするアプリケーションはこのブログでおなじみにOpenStackにしましょう。RDOのQuickstartを参考にpackstackでさくっと構築します。4/7にOpenStackの新バージョンのMitakaがリリースされましたが、今は安定したバージョンで試したい為Libertyのリポジトリを指定してインストールすることにします。ConoHaのサーバでは20分ほどでインストールが完了しました。createrepoをインストールします。createrepocreaterepoを使ってリポジトリを作成していきましょう。yumのキャッシュディレクトリに移動します。/var/cache/yum/パッケージファイルがダウンロードされていることを確認しましょう。baseやextrasといったディレクトリが作成されていて、それなりの容量があれば大丈夫です。.今回はキャッシュディレクトリを丸ごとリポジトリに追加してみましょう。リポジトリを作成する対象のディレクトリをパラメータとして渡します。complet指定したディレクトリにrepodataというディレクトリが作成され、その中にローカルリポジトリに必要な各種DBファイルが配置されます。repomd.xmこれでローカルリポジトリの準備ができました。先ほどの/var/cache/yum/配下のファイルをrepodataディレクトリも含めて、まとめて移動させましょう。ここではscpコマンドで移動させることにします。root@192.168.0.2:/tmpローカルリポジトリからインストールしてみようローカル環境で先ほどのリポジトリを元にインストールしてみます。リポジトリの参照先を編集します。Centosでは/etc/yum.repos.d/に置かれたファイルにリポジトリの参照先が記載されています。CentOS-Vault.repoここに先ほどのローカルリポジトリを参照するように設定を記載しましょう。既存のrepoファイルはすべて削除して、新しいrepoファイルとしてopenstack.repoを配置します。Repositorybaseurl=file:///tmp/yum/gpgcheck=0file:の後ろの/は3つあります。gpgcheck=0を入れてgpg署名がない状態でもインストールできるようにします。リポジトリが更新されているか確認しましょう。openstack_repoのみになっているようですね。628これでローカルリポジトリの準備は完了です。あとは通常どおりアプリケーションをインストールしていきましょう。updateでcentos-releaseパッケージがupdateされる場合は、/etc/yum.repo.d/にもう一度repoファイルが作成されていまいます。その場合はもう一度削除して、自身で作成したrepoファイルのみにしてから先へ進めましょう。openstack-packstackここまでは無事動きました。つづいてpackstackの実行ですが、packstackはDNSの参照先が存在しないと正常に動かない仕様になっているようです。自分自身を指定しておきます。127.0.0.1ではpackstackを実行しましょう。--allinonepython-greenletが見つからないというエラーで途中で止まってしまいました。実はこのファイルはpython2-greenletに置き換わっていて、インターネットに繋がっている場合はそこも含めてうまく動作してくれるのですが、ローカル環境だとうまくいかないようです。ここの回避策は別途記載していきたいと思います。おわりに最後の最後で、packstackが止まってしまいましたが、通常のアプリケーションであれば今回の方法を使えば問題なくインストールが成功するでしょう。他にもubuntuでの方法やpipでの方法等も紹介していければと思います。9新年あけましておめでとうございます。3何故、それが読まれたか~上半期・エンジニアブログ閲覧数ランキング~2013.6.12「何」を知っているかではなく、「誰」が知っているか2013.5.28戦後、人間尊重の信念を貫きとおした1人の経営者がいた!2013.5.24健康な心が、健康な会社を作る。2iPhone5発売!LTE普及には切実な背景が...2012.9.12「だれを選ぶか」をまず決めて、その後に「何をすべきか」を決める。2012.8.17会社を回すのに大事な3つの感覚。7プロジェクトはたいてい失敗に終わるんです。6月刊『ニュートップリーダー』に記事掲載&"想いを語る夕べ"体験会やります!2012.1.31【第4回】想いを語る夕べ~フォロー編~2012.1.23タニタの社員食堂は"トップの想い"から生まれた!?2012.1.13【第3回】想いを語る夕べ~実施編~2011.12.27オフィスで簡単エクササイズ!2011.12.13【第2回】想いを語る夕べ~準備編~2011.11.24【第1回】想いを語る夕べ~誕生編~2011.11.17「責任感だけで仕事をしていた・・・。