Linux 使用CMake创建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

目前,我正在使用CPack将我的打包从一堆奇怪的脚本转移到CMake中。Debian和TGZ的工作非常好,但是RPM给我带来了麻烦。。。当我安装在openSUSE 15.1上创建的RPM时,它将导致一个不可用的系统(甚至连
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