Nathan Osman Asked: 2014-08-04 20:25:19 +0800 CST2014-08-04 20:25:19 +0800 CST 2014-08-04 20:25:19 +0800 CST 如何在不停止服务的情况下删除提供服务的包? 772 我目前安装了uwsgi包。我想删除包但让当前的 uWSGI 实例保持运行。这可能吗? (是的,我知道该服务只会继续运行,直到它停止或服务器重新启动。) uninstall 2 个回答 Voted Best Answer muru 2014-09-22T11:23:23+08:002014-09-22T11:23:23+08:00 prermofuwsgi脚本包含以下内容: #!/bin/sh set -e # Automatically added by dh_installinit if [ -x "/etc/init.d/uwsgi" ] || [ -e "/etc/init/uwsgi.conf" ]; then invoke-rc.d uwsgi stop || exit $? fi # End automatically added section 你有几个选择: 编辑prerm脚本。 该脚本通常位于/var/lib/dpkg/uwsgi.prerm. 做: sudo sed -i '/invoke-rc.d/ s/^/#/' /var/lib/dpkg/uwsgi.prerm 注释掉停止服务的命令。 使用脚本中的条件对您有利 任何一个: sudo chmod -x /etc/init.d/uwsgi 由于脚本检查此脚本的执行权限, 或者: mv /etc/init/uwsgi.conf /etc/init/uwsgi.conf.bak 因为脚本会检查此 Upstart 服务文件是否存在。 根据文件列表,包中有/etc/init.d/uwsgi而不是 Upstart 脚本。 (滥用policy-rc.d invoke-rc.d由 控制policy-rc.d。但是,直接使用它有一个问题。该prerm脚本有exit $?, 并且dpkg不喜欢非零退出代码。因此,这仍然需要更改prerm脚本: echo 'exit 101' > /usr/sbin/invoke-rc.d chmod +x /usr/sbin/invoke-rc.d sed 's/exit/echo/' -i /var/lib/dpkg/uwsgi.prerm 为什么我什至回答? 已经有一些出色的答案可用:安装包而不启动后台进程和服务(可能需要一些轻微的调整)。 Kaz Wolfe 2014-09-22T10:59:35+08:002014-09-22T10:59:35+08:00 您可以保持安装包直到关机。这将完成相对相同的事情。 通过以 root 身份运行此命令来执行此操作: echo "sudo apt-get remove uwsgi" > /etc/rc6.d/K99_script 其次是: chmod +x K99_script 当您关机时,该软件包将自动卸载。 但是请注意,在您的系统恢复后,您应该删除 K99 脚本文件。
prerm
ofuwsgi
脚本包含以下内容:你有几个选择:
编辑
prerm
脚本。该脚本通常位于
/var/lib/dpkg/uwsgi.prerm
. 做:注释掉停止服务的命令。
使用脚本中的条件对您有利
任何一个:
由于脚本检查此脚本的执行权限,
或者:
因为脚本会检查此 Upstart 服务文件是否存在。
根据文件列表,包中有
/etc/init.d/uwsgi
而不是 Upstart 脚本。(滥用
policy-rc.d
invoke-rc.d
由 控制policy-rc.d
。但是,直接使用它有一个问题。该prerm
脚本有exit $?
, 并且dpkg
不喜欢非零退出代码。因此,这仍然需要更改prerm
脚本:为什么我什至回答?
已经有一些出色的答案可用:安装包而不启动后台进程和服务(可能需要一些轻微的调整)。
您可以保持安装包直到关机。这将完成相对相同的事情。
通过以 root 身份运行此命令来执行此操作:
其次是:
当您关机时,该软件包将自动卸载。
但是请注意,在您的系统恢复后,您应该删除 K99 脚本文件。