まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

CentOS のローカル環境内に yum のリポジトリを作成する手順を紹介します。


RHEL(RedHat Enterprise Linux) や CentOS を使っている人には「何を今さら」な情報だと思いますが、アプリケーションやモジュールのインストールには rpm や yum を利用することが多いと思います。

特に yum を利用することで、目的のモジュールを導入するために必要となる前提ライブラリが既にインストールされているかどうかをチェックし、更にその前提ライブラリの前提となるライブラリのインストール状況も調べて・・・で、現在の環境に足りないライブラリやモジュールを順次インストールした上で最終的には目的のモジュールまでインストールしてくれます。非常に便利なツールです。

ただ RHEL にせよ CentOS にせよ、その利用の条件として「yum リポジトリ」と呼ばれる一連のファイル環境を用意する必要があります。DVD などからの新規導入時にはその DVD メディアの中に yum リポジトリが含まれていてそのリポジトリを使ってインストールが行われたり、インターネットアクセス環境が整っている場合はインターネット上の yum リポジトリを参照することでインストールを行うことができます。なので、通常はリポジトリの存在をいちいち意識することなく yum を利用することが大半だと思います。

ところが、インターネット接続のない特殊な環境下の場合、最初の導入時こそ DVD 内のメディアリポジトリを利用して指定したアプリケーションやモジュールを導入することになるので何も変わりませんが、その DVD を取り出して再起動した後からは yum リポジトリにアクセスできなくなってしまうため、後から足りないモジュールを追加インストールする際に苦労します。もちろんそこで改めて DVD メディアをマウントすればそのメディアリポジトリを使うことはできますが、わざわざ DVD メディアを再度用意する必要があります。またその場合でもインストールできるのは DVD 内に含まれている(最新版とは限らない)モジュールだけであって、最新モジュールを yum でインストールするには最新モジュールの含まれたリポジトリの DVD メディアを用意する必要があります。要は色々面倒なわけです。

そこでインターネット接続がない場合でも、メディアを意識せずに yum を使えるようにするためにローカル環境のディスクシステム内に yum リポジトリを作る方法を紹介します。この環境を作っておけばとりあえずそのリポジトリに含まれているモジュールについては yum で(依存関係ごと)導入できるようになるし、モジュールのバージョンアップをしたい場合は必要なモジュールをローカルファイルシステム上にコピーした上で再度リポジトリを作成し直せばいい、ということになります。バージョン管理の面倒さこそありますが、ディスク上にリポジトリを作っておくことで DVD メディアやネット経由のリポジトリよりは高速なアクセスが期待できる、というメリットもあります。


では以下にその手順を紹介します:

まずはリポジトリの元になる DVD のインストールメディア(RedHat や CentOS など)を用意します。このメディアが /mnt にマウントされていて、アクセスできる状態(/mnt/Packages/ というフォルダが存在している状態)になっているものと仮定します。

次にリポジトリを作成するディレクトリを用意します。ここでは /usr/tmp/repo/ というフォルダ以下にローカルリポジトリを作成することにします。

というわけで、まずは /usr/tmp/repo を作成しておきます:
# mkdir /usr/tmp/repo/


このディレクトリ内に centos/ サブディレクトリを作ります(これがリポジトリの名称になります):
# mkdir /usr/tmp/repo/centos


更にこのディレクトリ内を DVD と同じ状態にするべく、Packages/ サブディレクトリを作ります:
# mkdir /usr/tmp/repo/centos/Packages


DVD 内のリポジトリに含まれる一連の rpm ファイルを全て用意したディレクトリ以下へコピーします:
# cp /mnt/Packages/*.rpm /usr/tmp/repo/centos/Packages


ここから /usr/tmp/repo をローカルリポジトリにするための設定を行います。まずは rpm を使ってローカルリポジトリ作成に必要なツールだけを単独で3つ導入します:
# cd /usr/tmp/repo/centos/Packages
# rpm -ivh deltarpm-3.5-0.5.2009093git.el6.x86_64.rpm
# rpm -ivh python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm
# rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm
(バージョンの数値は用意したメディアによって異なっている可能性があります。適宜読み変えてください)


導入した createrepo を使って、/usr/tmp/repo 以下にローカルレポジトリを作成します:
# cd /usr/tmp/repo
# createrepo .


yum がこのローカルレポジトリを利用できるよう、以下のファイルを新規に作成・編集します:
# vi /etc/yum.repos.d/centos.repo

(以下、/etc/yum.repos.d/centos.repo の内容)
[centos]
gpgcheck=0
name=My Repo
baseurl=file:///usr/tmp/repo


yum リポジトリを更新します:
# yum clean all
# yum list


これでローカルファイルシステム内に centos という名称の yum リポジトリが作成できました。インターネットに繋がっていなくても、インストール DVD メディアがなくても yum を使ったモジュールのインストールが可能になります。


なお、モジュールを新しいものに更新したい場合や、このローカルリポジトリに別の .rpm ファイルを含めたい場合はそれらを /usr/tmp/centos/Packages/ 以下にコピーして、再度 yum リポジトリを更新(上述)すれば新しい内容の yum リポジトリになります。






 

3年前の今頃、震災直前の東京ディズニーランド「春キャン(春のキャンパスデーパスポート)」

今をときめく2人の女優さんが、まだ無名だった頃にこのCMで共演していた:



有村さんと能年さんは同じ事務所に所属していたので、まあ共演自体は珍しいことではないのだと思う。ただそれから2年経ち、社会現象になるような朝のドラマで共演して注目を浴びるようなる、その前の初々しい姿をたまたま見つけることができた。


となると、今やってる2014 年版の春キャンCMにも未来の大スターがいるのでは? と思ってしまう:


一番右の樋口柚子(ひぐちゆず)さんが可愛すぎて死ぬ。

 

このブログエントリの続きです。

SD カードアダプタの皮を被った Linux、CLF-WF01。なぜか標準で telnetd (と ftpd も)が動いていて、パスワード無しで telnet 接続ができることを発見しました。今回はこいつのカスタマイズに挑戦します。

で、そのカスタマイズ方法ですが、実はこの CLF-WF01 のカーネルやユーティリティは最小限に削られているようで、標準状態では vi すら導入されていません。なので telnet で接続しても、そのままカスタマイズに挑むのはちょっと無理があるのでした。

でもここでは先人の知恵を拝借することにしました。実はこの CLF-WF01 で使われているファームウェア(に相当するもの)を解析している方がいらっしゃるようで、とりあえず「とんすけ」様のビルド成果を使わせていただきます: m(__)m
『Flucard でプログラムとかCGIとか』

上記リンク先から deploy_20120420.zip をダウンロード&展開し、出てきた DCIM/122_TREK フォルダを、CLF-WF01 で使うマイクロ SD カードの DCIM フォルダにまるごとコピーします(マイクロ SD カード内に DCIM/122_TREK フォルダができるようにします)。また展開後の直下ディレクトリにある autorun.sh をマイクロ SD カードのルート直下にコピーします。コピーは FTP で行ってもいいですし、マイクロ SD カードのみを取り出して PC に接続し、直接書き込んでも構いません。これで準備はOK。

簡単に解説すると、DCIM/122_TREK 内にこの CLF-WF01 用の vi 等を含めた各種バイナリが用意されており、足りない機能を補充しています。またマイクロ SD カード直下に autorun.sh というファイルがあると、Linux 起動直後に読み込まれて、その中に記述された命令が実行される、という特徴があることが分かっています。この特性を利用して、CLF-WF01 のパスの通ったディレクトリから DCIM/122_TREK 内のバイナリにシンボリックリンクを貼り、命令が直接実行できるように準備しています。またデフォルトでは無効になっていた sshd も起動するようにしています(デフォルトのままアクセスする場合は ID:root , PW:admin)。

この状態で改めて CLF-WF01 の Linux を起動し、PC から無線 LAN で接続してみます。今回は sshd を有効にしているので SSH クライアントからアクセスしてみます(ユーザーID : root, パスワード : admin autorun.sh で変更することも可能です)。
2014012610

おー!ssh クライアントからもアクセスできました。しかも上図のように、このモジュールを使うと PHP 5.3.10 も初めから使える状態になっていて、かなり便利です。

また、/www/cgi-bin/ フォルダ内には CGI 用のプログラムがサンプルでいくつか用意されています。これらのプログラムは CGI 経由でウェブブラウザから利用することもできます。自分で CGI など作る場合はここに入れておけばいいわけね:
2014012611

個人的にはここまでの環境ができれば充分すぎる感じ。とんすけ様、便利なツールの提供ありがとうございます!







 

このページのトップヘ