Skip to content

Instantly share code, notes, and snippets.

@nekoya
Created September 17, 2012 12:21
Show Gist options
  • Select an option

  • Save nekoya/3736992 to your computer and use it in GitHub Desktop.

Select an option

Save nekoya/3736992 to your computer and use it in GitHub Desktop.
wiki/yum

yum

plugins

yum-priorities

sudo yum install yum-priorities

yumの設定ファイルに

priority=N

で優先度を1?99で指定。値が大きい物ほど優先度が低く設定される。デフォルトは99。

yum-versionlock

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

tips

cache clear

sudo yum clean expire-cache

独自yumリポジトリ

  • 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リポジトリへの取り込みまでテストする
  1. build用パッケージを入れる
sudo yum install rpm-devel createrepo
  1. 以下の内容で~/.rpmmacrosを作成
%_topdir ~/rpms/
%_smp_mflags  -j4
%__arch_install_post /usr/lib/rpm/check-buildroot
%debug_package %{nil}
  1. rpmsリポジトリをgit cloneする

  2. 以下の内容で/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
  1. リポジトリ用のディレクトリを作る
sudo mkdir -p /var/www/yum.myproj.org
sudo chown {youname}:{yourgroup} /var/www/yum.myproj.org

build手順

  • {package}, {yourname}は適宜読み替えて実行のこと
  1. パッケージのディレクトリを作る
cd ~/rpms
mkdir {package}
cd tokyocabinet
mkdir BUILD RPMS SOURCES SPECS SRPMS
  1. ~/.rpmmacrosの1行目を以下のように編集
%_topdir /home/{yourname}/rpms/tokyocabinet
  • ~とか$HOMEは使えないので、自分のhomeディレクトリをフルパスで書く
  • build対象のパッケージのディレクトリをその都度指定する必要がある
  • 正直あまりうまいやり方ではないが今のところいい方法が浮かばない
  1. ソース、SPECを用意する
  • ソースは~/rpms/{package}/SOURCES/に配置
  • SPECファイルは~/rpms/{package}/SPECS/に配置
  • あとは普通にRPMを作るのと同じなので省略
  1. rpmbuildする
rpmbuild -ba SPECS/{package}.spec
  • RPMSとSRPMSにそれぞれパッケージが作成される
  • sudoせずにユーザ権限でbulidすること!!
  1. repo_sync.plでローカルのyumリポジトリに転送
cd ..
perl repo_sync.pl
  1. 作成したパッケージをインストールしてテストする
  • キャッシュの関係で出てこない場合は以下のようにして強制クリア
sudo yum clean expire-cache
sudo yum check-update
  • check-updateはyum installとかしたら自動で実行されるのでやらなくてもいい
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment