tohokuaikiのチラシの裏

技術的ネタとか。

CentOSのwgetのバージョンが低くて困ったけど、yumでパッケージ管理したいので、RPMでパッケージして、サーバ内ローカルyumリポジトリを作った。

今更感漂いまくりですが。自分の作業メモとして残します。

動機

CSSまで含めてウェブサイトをダウンロードしたかったんだけど、wgetのバージョン1.12じゃないとCSS内の画像を含めてくれないんですね。

CentOS5.4だと、wget1.10だったのでできない。でもやりたい。

ソースからインストールすればいいんだけど、せっかくyumでパッケージ管理やってるからそれ壊したくないなーってことで。まぁ、今までもあったんだけど、面倒でprefixだけ変えてconfigureしてインストールしてたんです。

まぁ、ちょっとやってみようかなと。

RPMパッケージの作成

この辺りを参考にして作成

やったことは、

  1. echo "%_topdir $HOME/rpm" > ~/.rpmmacros && mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS} で作業場作成
  2. SRPMwgetftp://ftp.riken.jp/Linux/centos/5.4/os/SRPMS/ から取得
  3. 取得したSRPMから rpm -ivh wget-1.11.4-2.el5.src.rpm で~/rpm/SPECSにspecファイルを抽出
  4. http://ftp.gnu.org/gnu/wget/ から最新版のソースを取得し、~/rpm/SOURCES に設置
  5. SPECファイルのバージョンとソースファイルの位置だけを調整して書き直す
  6. rpmbuild -ba SPECS/wget.spec してRPMファイルの作成 ~/rpm/RPMS/i386/wget-1.12-1.i386.rpm に目的のものができる

ちなみに、rpmbuildする際にちゃんとソースからのがインストールできるかどうかをチェックするために、一度configure/make/make -n installして、付則パッケージなどが無いかチェック。

次に、このwget-1.12-1.i386.rpmyum経由でインストールする。

ローカル内にyumリポジトリ追加

$ pwd
/home/userA/Site/main/public_html/yum_repos/local1/RPMS

って感じで、設置。HTTP経由でダウンロードできるようにDocumentRoot内に置いた。

で、当該のディレクトリに移動して、

createrepo $PWD

すると、
1/1 - wget-1.12-1.i386.rpm
Saving Primary metadata
Saving file lists metadata
Saving other metadata
って感じでrepodataディレクトリが作られる。wgetも追加されていることが分かる。


作ったローカルyumリポジトリを追加

$ more /etc/yum.repos.d/local1.repo
### Name: localnetwork repository
### URL: http://localhost/
[local1]
name = Local YUM Repository
#baseurl = http://localhost/yum_repos/local1/RPMS/
baseurl = file:///home/userA/Site/main/public_html/yum_repos/local1/RPMS/
enabled = 1

という感じで。

最初、HTTP経由でって思ったんだけど、FILEで指定できるならそっちの方が速い。


で、

$ yum list available
Loaded plugins: fastestmirror
extras                                                                            32d5/325
local1                                                                                1/1
rpmforge: [############################                                      ] 4401/10065

作ったyumリポジトリを追加。wgetの1ファイルが登録されていることがわかる。

で、あとは、yum

$ yum update

すると、update対象として、wgetが出てくる。

おしまい。