Linux 使用CMake创建RPM将导致系统无法使用
目前,我正在使用CPack将我的打包从一堆奇怪的脚本转移到CMake中。Debian和TGZ的工作非常好,但是RPM给我带来了麻烦。。。当我安装在openSUSE 15.1上创建的RPM时,它将导致一个不可用的系统(甚至连Linux 使用CMake创建RPM将导致系统无法使用,linux,bash,cmake,Linux,Bash,Cmake,目前,我正在使用CPack将我的打包从一堆奇怪的脚本转移到CMake中。Debian和TGZ的工作非常好,但是RPM给我带来了麻烦。。。当我安装在openSUSE 15.1上创建的RPM时,它将导致一个不可用的系统(甚至连ls都不能再执行了,我无法深入了解为什么到目前为止无法打开konsole或其他东西) 这是我的CPack代码(为了可读性,我用DEB和TGZ删除了所有内容): 后记: if [ -x %{_bindir}/gtk-update-icon-cache-2.0 ]; then
ls
都不能再执行了,我无法深入了解为什么到目前为止无法打开konsole
或其他东西)
这是我的CPack代码(为了可读性,我用DEB和TGZ删除了所有内容):
后记:
if [ -x %{_bindir}/gtk-update-icon-cache-2.0 ]; then
%{_bindir}/gtk-update-icon-cache-2.0 %{_datadir}/icons/hicolor > /dev/null 2>&1 || true
fi
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
%{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor > /dev/null 2>&1 || true
fi
SYSTEMD=`pidof systemd || echo '0'`
if [ "${SYSTEMD}" != "0" ]; then
if [ -e /etc/systemd/system/mytool.service ]; then
rm /etc/systemd/system/mytool.service
fi
cp /usr/share/mytool/files/systemd/mytool.service /etc/systemd/system/mytool.service
systemctl daemon-reload
systemctl enable mytool
fi
service mytool start
if [ -x %{_bindir}/update-desktop-database ]; then
%{_bindir}/update-desktop-database > /dev/null 2>&1 || true
fi
波斯顿:
if [ -x %{_bindir}/gtk-update-icon-cache-2.0 ]; then
%{_bindir}/gtk-update-icon-cache-2.0 %{_datadir}/icons/hicolor > /dev/null 2>&1 || true
fi
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
%{_bindir}/gtk-update-icon-cache %{_datadir}/icons/hicolor > /dev/null 2>&1 || true
fi
SYSTEMD=`pidof systemd || echo '0'`
if [ "${SYSTEMD}" != "0" ]; then
systemctl daemon-reload
fi
预运行:
service mytool stop > /dev/null 2>&1 || true
SYSTEMD=`pidof systemd || echo '0'`
if [ "${SYSTEMD}" != "0" ]; then
systemctl disable mytool > /dev/null 2>&1 || true
rm /etc/systemd/system/mytool.service
fi
我看不出为什么会发生这样的事情。系统发生的情况是,当使用alt+f2并运行例如
konsole
时,它会告诉我它无法使konsole
可执行。可执行文件/usr/bin/konsole
仍然存在,用户组没有更改,等等。为什么变量名前面有%
符号?这不是RPM脚本吗。。。它将被RPMBUILD取代。它不会出现在已编译的脚本中…为什么变量名前面有%
符号?这不是RPM脚本吗。。。它将被RPMBUILD取代。它不会出现在编译的脚本中。。。
service mytool stop > /dev/null 2>&1 || true
SYSTEMD=`pidof systemd || echo '0'`
if [ "${SYSTEMD}" != "0" ]; then
systemctl disable mytool > /dev/null 2>&1 || true
rm /etc/systemd/system/mytool.service
fi