VineSeed ML アーカイブ



[VineSeed:17661] update: self-build-setup

  • From: HARADA Kazutaka <kazutaka@xxxxxxxxxxxxxxxx>
  • Subject: [VineSeed:17661] update: self-build-setup
  • Date: Thu, 28 May 2009 00:02:46 +0900
ハラダです。

以下のファイルを VineSeed に put しました。

   self-build-setup-0.9.1-1vl5.src.rpm
   self-build-setup-0.9.1-1vl5.noarch.rpm

第2回 定例IRCミーティングで話が出た、ビルド用のユーザーを
別に作る、という件の対応を入れてます。

具体的には
(1).self-build-setup.spec の %pre で
    %{_sbindir}/useradd -c 'Self build rpm' -u %{user_uid} \
                        -d '/usr/lib/rpm' selfbuild 2> /dev/null || :
    として 'selfbuild' というユーザーを作成。
    (%{user_uid}=110 としてマクロで冒頭で定義)
(2).self-build-rpm.sh の中では su コマンドでユーザー指定で rpmbuild
    コマンドを実行。
--- self-build-rpm.sh.orig	2009-05-27 23:48:07.000000000 +0900
+++ self-build-rpm.sh	2009-05-27 23:47:04.000000000 +0900
@@ -60,7 +60,9 @@
 echo $"Building rpm packages..."
 echo -n "      "
 echo $"(see /var/tmp/$_NAME.log for detail.)"
-if rpmbuild -bb --define="_topdir $_TOPDIR/rpm" /usr/share/$_NAME/$_SPEC >
/var/tmp/$_NAME.log 2>&1; then
+# now rpmbuild done by non-root user 'selfbuild'
+chown -R selfbuild:selfbuild $_TOPDIR
+if su selfbuild -c "rpmbuild -bb --define=\"_topdir $_TOPDIR/rpm\"
/usr/share/$_NAME/$_SPEC > /var/tmp/$_NAME.log 2>&1"; then
     echo -n "     "
     echo $"rpm packages are successfully built."
     if ls $_TOPDIR/rpm/RPMS/$_ARCH | grep -e "\.rpm$" > /dev/null ; then

という風にしてみました。

ただし、別ユーザー権限でコマンドを実行する方法についてはあまり
詳しくなく、色々調べてみた結果このようなやり方にしてみましたが、
もっと良い(ないしは安全な)方法があれば教えて下さい。

# 正直ちょっと不安だったりします。
-- 
--------------------------------------
Kazutaka HARADA
  e-mail:kazutaka@xxxxxxxxxxxxxxxx
--------------------------------------