我正在尝试构建一个我正在研究的node.js项目的RPM。项目的代码完全包含在一个目录及其子目录中。这是我的构建脚本的一部分:
Put everything in the SOURCES directory, except the node_modules
echo "Copying sources..."
cd $DIR/dashboard
tar -zcf $DIR/rpmbuild/SOURCES/project-$VERSION.tgz . --exclude=node_modules > /dev/null
cd $DIR
# Create the spec file
touch $DIR/rpmbuild/SPECS/specfile
# write to it
cat >$DIR/rpmbuild/SPECS/specfile <<EOL
Summary: [Summary]
Name: [Name]
Version: $VERSION
Release: 1
License: GPL
Group: Applications/WebApp
Source: [Name]-$VERSION.tgz
Vendor: None
Requires: nodejs
%description
[Description]
%prep
echo "in prep"
echo $(ls -al)
%setup -c
npm install
yes | ./compile_all.sh
mv app/index.html app/index_big.html
mv app/index_small.html app/index.html
%build
echo "Nothing to build!"
%install
mkdir -p /opt/project
mv -r ./ /opt/project
ln -s /opt/project/server_start /usr/local/bin
ln -s /opt/project/server_stop /usr/local/bin
%files
$DIR/rpmbuild/SOURCES
$DIR/rpmbuild/SPECS
EOL
HOME=`pwd` rpmbuild -bs $DIR/rpmbuild/SPECS/specfile
compile_all.sh
脚本只是缩小html,css和javascript并将它们连接起来。 index_small.html
使用较小的版本。 $ DIR指向脚本的位置,该位置是项目代码上方的一个目录。
该脚本确实生成了源rpm。我使用mc
查看了它,在CONTENTS.cpio
里面有源代码的specfile和tgz存档。但是,尝试安装不起作用。使用rpm -Vp project.rpm
,我可以看到它将specfile和tgz存档列为missing
。启用详细模式后,我会看到类似的内容:
Directories not explicitly included in package:
/home/USERNAME/rpmbuild/SPECS/
/home/USERNAME/rpmbuild/SOURCES`
我的rpmbuild目录不在我的主目录中,它与构建脚本位于同一目录中。这导致了我的实际问题:如何将rpmbuild指向正确的位置?