一般ユーザーでRPM Build

以前mecabのRPMを作ったとき、そういえばrootではなくて一般ユーザーでRPMを作ったなあと今更ながら思い出したので、やり方をメモしておくことにした。

RPMの作成は、rootでやるときは、rpm-buildのRPMパッケージが入っていればそのまま作業するだけだけど、root権限があるが故に、ヘタするとまずいファイルを消してしまったり、上書きしてしまったりする恐れがあるので、できれば一般ユーザーでビルドするのが好ましい。でも一般ユーザーの場合、rootで使える /usr/src/redhat 以下のディレクトリへのアクセス権限がないため、ちょっとばかり準備が必要だ。今回は今使用中の使えるねっとのVPSでやってみた方法で書いてみる。

まずはユーザー作成、というところだけど、このVPSではドメインをPleskで作ったときにシステムアカウントが同時に作られる、かつ、それにシェルを割り当てられるようなので、それをそのまま使うことにした。Pleskのドメインの設定のシステムアクセスのところで /bin/bash を選ぶだけ。アカウント・パスワードはFTPと同じになるっぽい。試しにSSHで接続したら問題ないようだ。ってことはSFTPも使えるということか。って、あれ?SFTPってアカウントにシェルなくても使えなかったっけか?今度設定変えて試してみよう。FTPじゃなくてSFTPが普通に使えるならその方がいいし。

ちょっと脱線したけど、とりあえずユーザーについてはこれでよしとして、次にRPM作成環境を準備する。さっき作ったアカウントでログインした先では、ウェブに公開する領域外のディレクトリとして private があるようなので、ここに作ることにする。ここに以下のようにディレクトリを作ってみた。

private/
  rpms/
    BUILD/
    RPMS/
    SOURCES/
    SPECS/
    SRPMS/

rpms を作ってから、その下に BUILD とかのディレクトリを作っただけ。階層構造としては、これでOK。

残りはさっき作ったディレクトリ群をRPM作成時に使うように指定するだけなんだけど、そのためにはアカウントのホームディレクトリに .rpmmacros を作らなければいけない。が、さっそく作ろうと思ったら、パーミッションがないということではじかれる。そこでホームディレクトリ自体の権限見たら、なんとrootにしか書き込み権限がない。こりゃまいった。どうしようかと考えて面倒になったので、そこだけrootで作ることにした。いったん作ってしまえば、変えることもあまりないだろうし。ということで以下のような内容の .rpmmacros ファイルを、rootでホームディレクトリに作成。

%_topdir /var/www/vhosts/saba-kan.net/private/rpms

%_topdir という変数に、さっき作ったディレクトリ群のトップのパスを指定するだけ。これで準備完了。このユーザーで好き放題RPMを作ったり再作成できるようになった。もちろん、できたRPMをインストールするときはroot権限が必要だけど。

Plesk特有のアカウントを使わないのであれば、単にビルド用のユーザーをuseraddコマンドで作って、できたホームディレクトリ以下に同じことすればOK。

blog/2009/06/一般ユーザーでrpm_build.txt · 最終更新: 2009/06/14 13:12 by zushi
CC Attribution-Noncommercial-Share Alike 3.0 Unported www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0