我一直试图找出在rpm创建过程中设置固定文件名的最简单方法.它可以在.spec文件中设置或作为rpmbuild参数设置吗?默认名称取决于版本和版本号.我的rpm名称必须始终相同.
谢谢
同步
在Fedora Gnome ......
在我的rpm中使用.desktop文件,我已成功将我的gui软件放入gnome应用程序菜单中.
我想知道是否有办法在安装rpm时将图标放到gnome桌面上?
更新:
现在我可以在...中rpmbuild成功使用rpmbuild 并在此过程中在我的桌面上放置一个图标(甚至在安装rpm之前!)我做错了.有什么建议?xdg-desktop-icon%install
这是我的spec文件的相关部分:
Source1: %{name}.desktop
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: gettext, python-devel, desktop-file-utils, xdg-utils
...
%install
rm -rf $RPM_BUILD_ROOT
%{__python} setup.py install -O1 --skip-build --root $RPM_BUILD_ROOT
desktop-file-install --dir=${RPM_BUILD_ROOT}%{_datadir}/applications %{SOURCE1}
xdg-desktop-icon install --novendor %{SOURCE1}
Run Code Online (Sandbox Code Playgroud) 我正在构建一个自定义rpm来安装apache等等.当我尝试构建时,我得到上述错误,然后列出/httpd-2.2.17/及其所有子文件.
据我所知,这是构建目录,所以不应该打包.为了尝试修复此问题,我添加了rm -rf /httpd-2.2.17,但这似乎没有帮助.
我不想将它添加到%files部分,因为我们完成后不应该在系统上安装它们.
有人知道我做错了什么吗?
值得注意的是,apache是第二个源文件,第一个是未编译的tar文件
我想在rpm spec文件的%install部分中使用'chkconfig --del NetworkManager'命令.如果我包含此命令,rpm正在构建正常但是当我安装该rpm时,它看起来命令没有被执行.安装后我使用'chkconfig --list'命令验证并观察到服务一直运行.
这是我正在使用的spec文件.请让我知道我错了.
%define name disable_network-manager
%define version 1.0
%define release fc
Name: %{name}
Version: %{version}
Release: 1%{?dist}
Summary: Includes the script to disable Network Manager services
Group: Development/Other
License: GPL
URL: www.abcd.com
Source0: %{name}-%{version}.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
%description
sample text.
%prep
%setup -q
#%build
%install
/sbin/chkconfig --del NetworkManager
rm -rf $RPM_BUILD_ROOT
install -m 0755 -d $RPM_BUILD_ROOT/usr/bin
install -m 0755 enablenm.sh $RPM_BUILD_ROOT/usr/bin/enablenm.sh
%clean
rm -rf $RPM_BUILD_ROOT
%files
/usr/bin/enablenm.sh
Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的RPM问题,我是新手,所以请耐心等待...我创建了spec文件,当我运行构建时出现错误:
/var/tmp/rpm-tmp.ajKra4:第36行:cd:hero-01:没有这样的文件或目录错误:/var/tmp/rpm-tmp.ajKra4的错误退出状态(%prep)
然后我检查那个临时文件,它正在尝试将CD发送到一个不存在的目录.它应该在spec文件中创建吗?如果是这样的话?
这是我的spec文件:
Summary: Install Hero
Name: hero
Version: 01
Release: 1
Group: Billing reporting
Source: %{name}-%{version}.tar.gz
License: SLA
%description
Hero billing reports system
%prep
rm -rf %{_topdir}/BUILD/*
%setup
%install
mkdir -p /opt/%{name}
cp -r * /opt/%{name}
%post
find /opt/%{name} -type d -exec chmod 755 {} \;
find /opt/%{name} -type f -exec chmod 644 {} \;
chmod -R 755 /opt/%{name}/bin
%files
/opt/%{name}
%defattr(-,root,root,0755)
%clean
rm -rf $RPM_BUILD_ROOT
%postun
rm -rf /opt/%{name}
Run Code Online (Sandbox Code Playgroud)
也许我错过了什么?不会是第一个大声笑,谢谢
这也是tmp文件输出的内容:
#!/bin/sh
RPM_SOURCE_DIR="/root/rpmbuild/SOURCES"
RPM_BUILD_DIR="/root/rpmbuild/BUILD"
RPM_OPT_FLAGS="-O2 -g"
RPM_ARCH="x86_64" …Run Code Online (Sandbox Code Playgroud) 我正在尝试在REDHAT 6系统上从二进制文件构建RPM.我有所有文件包含在%files部分(查找/ path/to/fake/install -type f >> specfile)
当我运行rpmbuild -bb specfile --target x86_64时,我得到了
检查未打包的文件:/ usr/lib/rpm/check-files /path/to/rpmbuild/BUILDROOT/Package-1.0.0-1.el6.x86_64错误:已找到已安装(但未打包)的文件:
RPM构建错误:已找到已安装(但未打包)的文件:
请注意,错误消息中未列出任何文件.我不确定什么是错的,还有想法?
我在构建日志中收到以下内容:
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.CgE2Qn
+ umask 022
+ cd /export/home/svn_checkouts/*snip*/Output/release/bin/packaging/BUILD
+ /bin/rm -rf /export/home/svn_checkouts/*snip*/Output/release/bin
+ exit 0
Run Code Online (Sandbox Code Playgroud)
我想避免rpmbuild删除构建目录中的所有文件,因为在构建RPM之后我需要将其他文件删除.我可以覆盖此行为吗?
我读到某些版本的RPM支持一个--noclean参数,但不幸的是我们的.
我正在尝试创建一个只更新系统上文件的软件包,但是在运行rpmbuild时我一直遇到错误.该错误表示文件丢失.
我在CentOS 5和6上尝试过这个,结果相同.
我曾经rpmdev-setuptree设置过文件系统,也就是设置~/.rpmmacros文件.然后我用来rpmdev-newspec初始化spec文件.
我作为非root用户运行.
我有spec文件~/rpmbuild/SPECS/test.spec,我的来源是:~/rpmbuild/SOURCES/test-1.tar.gz.提取此文件会创建一个以test-12个文件命名的目录.我已经确认~/rpmbuild/BUILD/test-1在我尝试构建软件包时它会被提取出来.
我跑: rpmbuild -ba ~/rpmbuild/SPECS/test.spec
然后我收到这个错误:
- ./configure --build = x86_64-redhat-linux-gnu --host = x86_64-redhat-linux-gnu --target = x86_64-redhat-linux-gnu --program-prefix = --prefix =/usr - exec-prefix =/usr --bindir =/usr/bin --sbindir =/usr/sbin --sysconfdir =/etc --datadir =/usr/share --includedir =/usr/include --libdir =/usr/lib64 --libexecdir =/usr/libexec --localstatedir =/var --sharedstatedir =/usr/com --mandir =/usr/share/man --infodir =/usr/share/info/home/me/rpmbuild /tmp/rpm-tmp.58942:line 37:./ configure:没有这样的文件或目录错误:/home/me/rpmbuild/tmp/rpm-tmp.58942(%build)的退出状态错误
RPM构建错误:/home/me/rpmbuild/tmp/rpm-tmp.58942(%build)的退出状态错误
这是我的spec文件:
Name: test
Version: 1
Release: 1%{?dist}
Summary: Test
Group: Test
License: …Run Code Online (Sandbox Code Playgroud) 我的spec文件路径如下所示:
/opt/OV
/opt/OV/NonOV
/opt/OV/NonOV/ABCD
/opt/OV/NonOV/ABCD/ABC
/opt/OV/NonOV/ABCD/ABC/Test1
/opt/OV/NonOV/ABCD/ABC/Test1/test1.txt
/opt/OV/NonOV/ABCD/ABC/Test2
/opt/OV/NonOV/ABCD/ABC/Test2/test2.txt
/opt/OV/newconfig
/opt/OV/newconfig/inventory
/opt/OV/newconfig/inventory/HPOvXYZ.xml
Run Code Online (Sandbox Code Playgroud)
我不希望将此路径包含在spec文件中
/opt/OV/newconfig/inventory"因为如果多个rpm具有此公共路径,则会出现错误"与包中的文件冲突."
我已经检查过%excludes如下命令:
%files
%exclude /opt/OV/newconfig/inventory
Run Code Online (Sandbox Code Playgroud)
这个命令的问题是,它是直接排除和文件递归.rpm.spec文件路径如下所示:
/opt/OV
/opt/OV/NonOV
/opt/OV/NonOV/ABCD
/opt/OV/NonOV/ABCD/ABC
/opt/OV/NonOV/ABCD/ABC/Test1
/opt/OV/NonOV/ABCD/ABC/Test1/test1.txt
/opt/OV/NonOV/ABCD/ABC/Test2
/opt/OV/NonOV/ABCD/ABC/Test2/test2.txt
/opt/OV/newconfig
Run Code Online (Sandbox Code Playgroud)
它也排除了/opt/OV/newconfig/inventory/HPOvXYZ.xml这条道路.是否有任何命令,所以我只排除/删除目录路径.
提前致谢.
我有一个库,我想从中创建两个RPM包.
虽然我找到了几个关于如何创建基本RPM包的链接,但我找不到如何创建devel包(如果你想知道包是什么的话,请参阅这个问题devel).
如何生成RPM包的版本devel和non-devel版本,我该怎么办?
谢谢.