sudo yum install yum-priorities
- http://wiki.centos.org/PackageManagement/Yum/Priorities
- 複数のyumリポジトリに同名のパッケージがあった時の優先度を指定するプラグイン
- サードパーティのパッケージは公式よりも優先度を低くする
yumの設定ファイルに
priority=N
で優先度を1?99で指定。値が大きい物ほど優先度が低く設定される。デフォルトは99。
sudo yum install yum-versionlock
- /etc/yum/pluginconf.d/versionlock.conf
- /etc/yum/pluginconf.d/versionlock.list
- listファイルにバージョン固定したいパッケージの名前を書く
- バージョンまで指定する必要があるので以下のように
rpm -q kernel-xen >> /etc/yum/pluginconf.d/versionlock.list
sudo yum clean expire-cache
-
wiki/RPMも参考に
-
各自の開発環境でbuildする
-
パッケージ毎にディレクトリを作って、その中でbuildする
-
一箇所にまとめると、どのファイルがどのパッケージ由来か分からなくなる
-
RPMは/path/to/tokyocabinet/RPMS/x86_64/tokyocabinet-1.4.42-1.x86_64.rpmのようなファイル名になる
-
パッケージ毎に別のディレクトリになる
-
そのままだとcreaterepo出来ない
-
これをhttpで参照出来るところに一括転送してcreaterepoするスクリプトを用意します
-
sync_repo.plとかで設置予定
-
以下の手順では、~/rpms/を作業ディレクトリにするものと仮定
- 自分の開発環境でRPMの作成からyumリポジトリへの取り込みまでテストする
- build用パッケージを入れる
sudo yum install rpm-devel createrepo
- 以下の内容で~/.rpmmacrosを作成
%_topdir ~/rpms/
%_smp_mflags -j4
%__arch_install_post /usr/lib/rpm/check-buildroot
%debug_package %{nil}
-
rpmsリポジトリをgit cloneする
-
以下の内容で/etc/yum.repos.d/myproj.repoを作成
[myproj-x86_64]
name=myproj-x86_64
baseurl=file:///var/www/yum.myproj.org/RPMS/x86_64
enabled=1
gpgcheck=0
priority=1
[myproj-noarch]
name=myproj-noarch
baseurl=file:///var/www/yum.myproj.org/RPMS/noarch
enabled=1
gpgcheck=0
priority=1
- リポジトリ用のディレクトリを作る
sudo mkdir -p /var/www/yum.myproj.org
sudo chown {youname}:{yourgroup} /var/www/yum.myproj.org
- {package}, {yourname}は適宜読み替えて実行のこと
- パッケージのディレクトリを作る
cd ~/rpms
mkdir {package}
cd tokyocabinet
mkdir BUILD RPMS SOURCES SPECS SRPMS
- ~/.rpmmacrosの1行目を以下のように編集
%_topdir /home/{yourname}/rpms/tokyocabinet
- ~とか$HOMEは使えないので、自分のhomeディレクトリをフルパスで書く
- build対象のパッケージのディレクトリをその都度指定する必要がある
- 正直あまりうまいやり方ではないが今のところいい方法が浮かばない
- ソース、SPECを用意する
- ソースは~/rpms/{package}/SOURCES/に配置
- SPECファイルは~/rpms/{package}/SPECS/に配置
- あとは普通にRPMを作るのと同じなので省略
- rpmbuildする
rpmbuild -ba SPECS/{package}.spec
- RPMSとSRPMSにそれぞれパッケージが作成される
- sudoせずにユーザ権限でbulidすること!!
- repo_sync.plでローカルのyumリポジトリに転送
cd ..
perl repo_sync.pl
- 作成したパッケージをインストールしてテストする
- キャッシュの関係で出てこない場合は以下のようにして強制クリア
sudo yum clean expire-cache
sudo yum check-update
- check-updateはyum installとかしたら自動で実行されるのでやらなくてもいい