仕事で使えそうな(使ってる)rpmねた
詳しく載ってるとこ
- http://www.karaba.org/~mk/rpm/rpm.html なんか詳しく載ってる
- http://park15.wakwak.com/~unixlife/linux/rpm-man.h... オプションの組み合わせとか。よく使うオプションの組み合わせの元ねたはここ
ひとつひとつはあんまりよくわかってなかったりするけど。
動作保障とかは抜きにしてとにかくインストールとかアンインストールとかしたい場合はnodeps/force/nomd5を組み合わせるとたいがいはいける。
動作保障とかは抜きにしてとにかくインストールとかアンインストールとかしたい場合はnodeps/force/nomd5を組み合わせるとたいがいはいける。
インストール
インストールできるかテスト
rpm -i --test パッケージファイル
普通にインストール
rpm -ivh パッケージファイル
古いパッケージをインストール
rpm -ivh --oldpackage パッケージファイル
依存性を無視してをインストール
rpm -ivh --nodeps パッケージファイル
強制的にインストール
replacepkgs/replacefiles/oldpackageを指定した場合と同じ
rpm -ivh --force パッケージファイル
パッケージのMD5を検査しないでインストール
rpm -ivh --nomd5 パッケージファイル
アップデート
アップデート。無ければインストール
rpm -Uvh パッケージファイル
アップデート。無ければ何もしない
rpm -Fvh パッケージファイル
アンインストール
普通に削除
rpm -e パッケージ名
rpmの情報表示
一覧表示
rpm -qa
インストールした日付順に表示
rpm -q --last
インストール済みパッケージの詳細情報を表示
rpm -qi パッケージ名
パッケージがインストールしたファイル一覧を表示
rpm -ql パッケージ名
特定のコマンドが、どのパッケージによりインストールされたか調べる
rpm -q --whatprovides コマンド
あるファイルが、どのパッケージによりインストールされたか調べる
rpm -qf ファイル名
パッケージが破損、改ざんされていないか調べる
rpm --checksig --nogpg パッケージファイル
パッケージによりインストールされるファイルの一覧
rpm -qpl パッケージファイル
パッケージファイルに必要なrpm一覧
rpm -qpR パッケージファイル
インストール
とりあえずpostfixを例に。SMTP認証できるようにしたpostfixをいれる(今のpostfixは普通のrpmでそうなってるよ。あくまで参考に)
rpm -ivh postfix-2.3.6-1.src.rpm [~] 1:postfix-2.3.6-1 ########################################### [100%]
SPECファイル編集
makeのオプションなどを変更する
SPECディレクトリに移動
/usr/src/redhat/SPECSにSPECファイルがあるのでまず移動する
cd /usr/src/redhat/SPECS
編集
とりあえず適当に
vi postfix.spec
%build # %buildセクションに追加
.
.
.
make makefiles CCARGS="${CCARGS} -I/usr/include/sasl" AUXLIBS="${AUXLIBS} -L%{sasl_lib_dir} -lsasl2" # 追加
make makefiles CCARGS="-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl" AUXLIBS="-L/usr/lib -lsasl2"
make DEBUG="" OPT="$RPM_OPT_FLAGS"
rpmパッケージ作成
まずはテスト
# install までが上手く行くかのテスト( %prep, %build, %installが実行される) rpmbuild -bi postfix.spec # ちなみに、make までが上手く行くかのテスト( %prep, %buildが実行される) rpmbuild -bc postfix.spec
パッケージ作成
/usr/src/redhat/RPMS/i386 に作成される
# バイナリパッケージ作成 rpmbuild -bb postfix.spec # バイナリとソースパッケージ作成(両方ほしいのなら) rpmbuild -ba postfix.spec
インストール
# i386に無い場合もあるのでその場合はRPMS直下のその他のディレクトリを探す rpm -ivh /usr/src/redhat/RPMS/i386/postfix-2.3.6-1_smtpauth.i386.rpm
yum除外
既存のrpmパッケージでインストールできるものに手を加えた形になるので、yum updateなどをすると当然手を加えた部分は消えてしまうので、yum updateからは除外するように/etc/yum.confに以下の設定を追加しておく
exclude=postfix*
DBファイル削除
削除がこわいならどこかにバックアップを取っておいてもいいかと
rm -f /var/lib/rpm/_db.0*
再構築
rpm --rebuilddbちなみに初期化はinitdbとする(これは使ったことなし)
rpm --initdb
確認
終了コードが0か確認する
rpm -qa echo $? yum list echo $?
インストール
バージョンはその時の最新のものをいれる
wget http://asic-linux.com.mx/%7Eizto/checkinstall/files/rpm/checkinstall-1.6.1-1.i386.rpm rpm -ivh checkinstall-1.6.1-1.i386.rpm Preparing... ########################################### [100%] 1:checkinstall ########################################### [100%]
使い方
Makefileがある状態にしておかないとだめらしいので、何かしらのアプリケーションをconfigureしてMakefileが存在する状態にしておく。
※rpmにするのでインストール先を/usr/localなどではなく/usrにしたい場合はMakefileをあらかじめ編集しておく
※rpmにするのでインストール先を/usr/localなどではなく/usrにしたい場合はMakefileをあらかじめ編集しておく
- BUILDPREFIX :=
- PREFIX := /usr/local
- EXEC_PREFIX := /usr/local
- DESTDIR :=
- BIN_DIR := /usr/local/bin
- LIB_DIR := /usr/local/lib
- INCLUDE_DIR := /usr/local/include
- DATA_DIR := /usr/local/share
- DOC_DIR := /usr/local/share/doc
- VERSION_DIR = /parrot/1.0.0
checkinstall
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]:y ←「y」を入力して[Enter]キーを押す
(省略)
Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]?r ←「r」を入力して[Enter]キーを押す
Please write a description for the package.
End your description with an empty line or EOF.
>> ←[Enter]キーを押す
This package will be built according to these values:
1 - Summary: [ Package created with checkinstall 1.6.1 ]
2 - Name: [ parrot ]
3 - Version: [ 1.0.0 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Applications/System ]
7 - Architecture: [ i386 ]
8 - Source location: [ parrot-1.0.0 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ parrot ]
Enter a number to change any of them or press ENTER to continue
(省略)
**********************************************************************
Done. The new package has been saved to
/usr/src/redhat/RPMS/i386/parrot-1.0.0-1.i386.rpm
You can install it in your system anytime using:
rpm -i parrot-1.0.0-1.i386.rpm
**********************************************************************
例ではCentOSでparrotのパッケージが無かったので作った時のメモ。ちなみにインストールしようとするとerror: unpacking of archive failed on file /bin/cat;4a96c3d3: cpio: MD5 sum mismatchなどと出ることがあるので、その場合は--nomd5オプションをつけてインストールするとよい
インストールしておくと何かと便利。http://dag.wieers.com/rpm/packages/rpmforge-releas... から最新版と思われるrpmをダウンロードする。
インストール
バージョンはその時の最新のものをいれる
wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
設定
インストールした時点で有効になるんだけど、必要な時だけ有効にしたいので、設定ファイルを修正する。
enabledという項目の値を0にする
enabledという項目の値を0にする
sed -i.org -e "s/^\(enabled\) = 1/\1 = 0/" /etc/yum.repos.d/rpmforge.repo
使い方
yumを実行する時に--enablerepoオプションを使用する
yum --enablerepo=rpmforge listなどとするといい
調べ方
uname -i自分の環境ではi386とでる。
設定
enabledの値が1なので、0に変更しておく。/etc/yum.repos.d/epel.repoがインストールされる。
sed -i.org -e "s/^\(enabled\)=1/\1=0/" /etc/yum.repos.d/epel.repo
インストール
バージョンとかはそのときの最新版で。アーキテクチャに合わせてダウンロードすること
wget http://download.fedora.redhat.com/pub/epel/5/$(uname -i)/epel-release-5-3.noarch.rpm rpm -ivh epel-release-5-3.noarch.rpm
使い方
yumを実行する時に--enablerepoオプションを使用する
yum --enablerepo=epel listなどとするといい
同じく便利なんでいれとこう。http://rpm.livna.org/
wget http://rpm.livna.org/livna-release.rpm rpm -ivh livna-release.rpm sed -i.org -e "s/^\(enabled\)=1/\1=0/" /etc/yum.repos.d/livna.repo
使い方
yumを実行する時に--enablerepoオプションを使用する
yum --enablerepo=livna list
同じく便利なんでいれとこう。http://atrpms.net/
設定
設定ファイルは自分で作成する
cat <<EOL > /etc/yum.repos.d/atrpms.repo [atrpms] name=Redhat Enterprise Linux \$releasever - \$basearch - ATrpms baseurl=http://dl.atrpms.net/el\$releasever-\$basearch/atrpms/stable enabled=0 gpgcheck=1 gpgkey=http://atrpms.net/RPM-GPG-KEY.atrpms EOL # GPGkeyを取り込む rpm --import http://atrpms.net/RPM-GPG-KEY.atrpms
使い方
yumを実行する時に--enablerepoオプションを使用する
yum --enablerepo=atrpms list
インストール
バージョンとかはそのときの最新版で。アーキテクチャに合わせてダウンロードすること
wget http://download.fedora.redhat.com/pub/epel/5/$(uname -i)/epel-release-5-3.noarch.rpm rpm -ivh epel-release-5-3.noarch.rpm
使い方
yumを実行する時に--enablerepoオプションを使用する
yum --enablerepo=epel listなどとするといい
インストール
yum -y install yum-security
セキュリティアップデートのチェック
yum --security check-update
セキュリティアップデートの更新
yum --security update
インストール
yum -y install yum-cron
chkconfig
yumupdatedが動いているようなら落として、chkconfigで起動しないようにしておく(消してしまうのもあり)。yum-cronを自動起動するように変更
chkconfig yumupdated off chkconfig yum-cron on # 起動 /etc/rc.d/init.d/yum-cron start
There are unfinished transactions remaining. You mightconsider running yum-complete-transaction first to finish themと出てしまった場合
インストール
yum-complete-transactionというコマンドがyum-utilsに含まれているのでそれをインストール
yum -y install yum-utils
実行する
途中状態になっているのをインストール/削除するんだと思う
yum-complete-transaction
rpmをダウンロード
binutilsというrpmをダウンロードしたい場合
yumdownloader binutils
srpmをダウンロード
srpmをダウンロードできるのが少ないけど
yumdownloader --source binutilsほとんどダウンロードできないっぽい(例で出しているのもアウト)
rpmforgeとかatrpmsとかに無い場合
無い場合はしょうがないな
http://search.cpan.orgで公開されているモジュールをrpmに変換するツール。
インストール
yum -y --enablerepo=rpmforge install perl-RPM-Specfile
使い方
ローカルにtarballが前提っぽい。ためしにFile::Find::Ruleをrpmにしてみる
# ダウンロード /usr/local/bin/cpanp d File::Find::Rule [~] [MSG] No '/root/.cpanplus/custom-sources' dir, skipping custom sources Successfully fetched 'File::Find::Rule' to '/root/.cpanplus/authors/id/R/RC/RCLAMP/File-Find-Rule-0.30.tar.gz' # RPM作成 cpanflute2 /root/.cpanplus/authors/id/R/RC/RCLAMP/File-Find-Rule-0.30.tar.gz 書き込み完了: ./perl-File-Find-Rule-0.30-8.src.rpm 実行中(--clean): /bin/sh -e /var/tmp/rpm-tmp.12412 + umask 022 + cd /tmp/plXK3FVpis + rm -rf File-Find-Rule-0.30 + exit 0SRPMが作成されるので、これをインストールすればよい。SRPMのインストールの仕方はSRPMをインストール参照
最新コメント