【问题标题】:RPM build fails on install sectionRPM 构建在安装部分失败
【发布时间】:2011-11-14 12:29:01
【问题描述】:

我正在尝试构建我的第一个 rpm 包,它是一个简单的可执行文件 (mysh)。

我的规格文件:

Summary: bla <br>
Name: mysh <br>
Version: 1.0 <br>
Release: 1 <br>
Group: Applications <br>
Source: mysh-1.0.tar.gz <br>
URL: http://www.google.com <br>
Vendor: tadas sofware inc. <br>
Packager: tadas <br>
License: GPL 

%description <br>
a very good program!

%prep <br>
rm -rf $RPM_BUILD_DIR/mysh-1.0 <br>
zcat $RPM_SOURCE_DIR/mysh-1.0.tar.gz | tar -xvf -

%build <br>
make 

%install <br>
cp mysh /usr/local/bin/mysh

%files <br>
/usr/local/bin/mysh

它失败并出现以下错误:

cd: 8: can't cd to /home/tadzys/rpm/BUILDROOT/mysh-1.0-1.x86_64

当然这个文件在那里不存在。我试过复制它仍然有同样的错误。不确定我的安装部分是否应该将任何内容放入 BUILDROOT 文件夹。

我在 Ubuntu 11.04 上。

【问题讨论】:

标签: linux ubuntu rpm rpmbuild


【解决方案1】:

当您在%install 部分中引用目标计算机中的目录时,您需要引用与$RPM_BUILD_ROOT(或%{buildroot})相关的所有内容:

%install
cp mysh $RPM_BUILD_ROOT/usr/local/bin/mysh

不过,%files 部分确实不需要需要更新。

此外,您应该考虑在复制文件时使用install 命令。它类似于cp,但install 允许您设置目标文件的权限位:

%install
install -m 755 mysh $RPM_BUILD_ROOT/usr/local/bin/mysh

【讨论】:

  • 但 /usr/local/bin/ 是绝对路径。当然,当在它前面添加 $RPM_BUILD_ROOT 时,它也找不到它: install: cannot create regular file `/home/tadzys/rpm/BUILDROOT/mysh-1.0-1.x86_64/usr/local/bin/mysh' : 没有这样的文件或目录
  • 是的,这是因为它试图将文件移动到暂存区中不存在的目录中。您需要发出类似mkdir -p /usr/local/bin 的命令,它将在 RPM 构建目录中创建它,但对目标计算机没有影响,假设该目录存在。
  • 抱歉,应该是mkdir -p $RPM_BUILD_ROOT/usr/local/bin
  • 啊!这有帮助:) 顺便说一句,我已经根据您的评论删除了 %files 部分,但是它没有创建 RPM:错误:找到已安装(但未打包)的文件:/usr/local/bin/mysh。在我带回 %files 部分后,一切都很好。再次感谢您的帮助!
  • 哦不,我的意思是说您根本不需要更改 %files 部分即可使用宏,但很高兴您恢复了 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-16
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多