ハラダです。
以下のファイルを 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
--------------------------------------