APT for RPMの使い方

前にMandrakeでやったけど日本じゃRedhatかなっつーことで、RedhatにAPT for RPMを入れた記録です。
オイラはSPECの書き方も知らないし、修正もバータリ的なので、試すときは 「at your own risk」 でおながいします。
- APT for RPM project: http://distro.conectiva.com/projetos/42/
- apt+rpm HOWTO: http://bazar.conectiva.com.br/~godoy/apt-howto/
- apt4rpm: http://apt4rpm.sourceforge.net/
conectiviaからsrpmを取ってきて、ソースをインストールする。
SPECファイル修正する
RedhatとConectivaではbzip2とpoptのファイル名が違うので、BuildRequiresの所を直すだけ。
*** apt.spec.old Sat Dec 22 16:24:08 2001
--- apt.spec Sat Dec 22 16:41:49 2001
***************
*** 15,21 ****
Patch3: %{name}-rpmpriorities-cl7.patch
Patch5: %{name}-mirrors.patch
Requires: rpm >= 4.0.0, gnupg
! BuildRequires: rpm-devel >= 4.0.0, libbz2-devel, zlib-devel, db3, db3-devel, glibc-devel, popt-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-root
%description
--- 15,21 ----
Patch3: %{name}-rpmpriorities-cl7.patch
Patch5: %{name}-mirrors.patch
Requires: rpm >= 4.0.0, gnupg
! BuildRequires: rpm-devel >= 4.0.0, bzip2-devel, zlib-devel, db3, db3-devel, glibc-devel, popt
BuildRoot: %{_tmppath}/%{name}-%{version}-root
%description
リビルドしてインストール。
# cd /usr/src/redhat/SPECS
# rpm -bb apt.spec
# cd ../RPMS/i386/
# rpm -ivh apt*
RPMファイルを置いておくリポジトリの設定。
とりあえずテストなので、ローカルのHDDにCD-ROMからファイルをコピーして作ってみます。ftpでもhttpでも設定方法は同じです。
ファイルをコピーするディレクトリを用意します。(ex. /var/mirror/7.2)
# mkdir -p /var/mirror/7.2
そこに、CD-ROMのRedHat以下のディレクトリをコピーします。
# cp -r /mnt/cdrom/RedHat/ /var/mirror/7.2/
RPMSディレクトリに「RPMS.コンポーネント名」のシンボリックリンクを貼ります。
コンポーネント名はなんでもいいですが、ここではmainとつけました。
# cd /var/mirror/7.2/RedHat
# ln -s RPMS/ RPMS.main
ソースがあれば、RedHatディレクトリと同じ階層にSRPMSをコピーして、「SRPMS.コンポーネント名」でリンクを貼っておきます。
genbasedirでpkglistを作ります。
書式: genbasedir [-s | --sign] [--topdir=ディレクトリ] ディストリビューション名 コンポーネント名 [コンポーネント名...]
baseディレクトリに下りてgenbasedirを実行します。
ディレクトリ名とディストリビューション名の区切り方がいまいちわかんないけど、こんな風にしてみました。
- ディレクトリ名=/var/mirror
- ディストリビューション名=7.2/RedHat
-
コンポーネント名=main
cd /var/mirror/7.2/RedHat/base
genbasedir --topdir=/var/mirror 7.2/RedHat main
source.listの編集
ftpならftp:、httpならhttp:、ローカルディレクトリならfile:でgenbasedirで設定したとおり書きます。ソースもあるなら、同じようにしてrpm-srcも書きます。
rpm ftil:/var/mirror 7.2/RedHat main
rpm-src ftil:/var/mirror 7.2/RedHat main
終ればapt-get updateしてみましょう。
その後、apt-cache search (パッケージ名)で検索したりしてみてください。でも、 apt-get upgradeはまだやっちゃダメ!! (理由は下)
apt-get upgradeすると、GNOMEの一部パッケージがアンインストールされてしまうぞ!!
どうやら、xscreensaverの依存性でひっかかり、関係するものはアンインストールされるみたいです。こういうとき、debianならパッケージをホールドしたらいいけど、RPMにはパッケージのホールドという概念がない!
というわけで、xscreensaver-3.33-4.src.rpmをとってきて修正しませう。修正箇所は、Requiresの/usr/games/fortuneをfortune-modに変えるだけ。
*** xscreensaver.spec.old Fri Aug 24 01:55:47 2001
--- xscreensaver.spec Sun Dec 23 00:21:16 2001
***************
*** 21,27 ****
Patch11: xscreensaver-3.33-memlimit.patch
Patch12: xscreensaver-3.33-time.patch
BuildPrereq: /usr/games/fortune /usr/bin/gnome-config pam-devel XFree86-devel
! Requires: xloadimage, /usr/games/fortune, redhat-logos >= 1.1.1, /etc/pam.d/system-auth
Obsoletes: xscreensaver-gl
Buildroot: /var/tmp/xscreensaver-root
Prefix: /usr/X11R6
--- 21,27 ----
Patch11: xscreensaver-3.33-memlimit.patch
Patch12: xscreensaver-3.33-time.patch
BuildPrereq: /usr/games/fortune /usr/bin/gnome-config pam-devel XFree86-devel
! Requires: xloadimage, fortune-mod, redhat-logos >= 1.1.1, /etc/pam.d/system-auth
Obsoletes: xscreensaver-gl
Buildroot: /var/tmp/xscreensaver-root
Prefix: /usr/X11R6
これでapt-get updateも使えます。
使うメリットは?
アップデートにはup2dateがあるし、パッケージの検索インストールにはrpmfindがあるので、特にないかもしれません。
up2dateはMicrosoftのアクティベーションチックなRedHat Networkに登録しないと使えないし、基本的にGUIで使うようになってるし、rpmfindは結構落ちてたりするので考えてみました。
- RPMパッケージを入れるとき、依存するパッケージを気にする必要がない。
- アップデートパッケージをローカルにミラーしたら、RHNに登録しなくても楽々アップデートができる。
しかし、なんかムリあるね。
なんか考えて(わら
こーいうのもある。
Mandrakeに入ってて気がついた。