我在 CentOS 7.4 机器上遇到了一个我不明白的问题。
有人安装了一个 wine,但没有记录他们是如何安装它的(是用yum
、直接用 arpm
还是从源代码构建?我不知道)。现在我需要卸载它,所以我做了以下操作:
- 我使用
sudo yum remove wine*
它卸载了大约 15 个不同的软件包 - 使用
rpm -qa | grep wine
我检查以前的软件包确实已卸载。
问题是,当我which wine
获取/usr/local/bin/wine
并ls -l /usr/local/bin/ | grep wine
返回时,我仍然有一个 wine 可执行文件
-rwxr-xr-x 1 root root 17616 wine
-rwxr-xr-x 1 root root 1973 wineboot
-rwxr-xr-x 1 root root 247924 winebuild
-rwxr-xr-x 1 root root 1973 winecfg
-rwxr-xr-x 1 root root 1973 wineconsole
lrwxrwxrwx 1 root root 7 winecpp -> winegcc
-rwxr-xr-x 1 root root 1973 winedbg
-rwxr-xr-x 1 root root 413540 winedump
-rwxr-xr-x 1 root root 1973 winefile
lrwxrwxrwx 1 root root 7 wineg++ -> winegcc
-rwxr-xr-x 1 root root 72700 winegcc
-rwxr-xr-x 1 root root 95099 winemaker
-rwxr-xr-x 1 root root 1973 winemine
-rwxr-xr-x 1 root root 1973 winepath
-rwxr-xr-x 1 root root 32256 wine-preloader
-rwxr-xr-x 1 root root 2821988 wineserver
所以我有删除这些文件的想法(我实际上移动了它们),但是当我使用命令 wine 而不是收到预期的not a command
错误消息时,我得到了/usr/local/bin/wine: No such file or directory
这让我认为卸载没有完全执行。 (所以现在我将文件移回/usr/local/bin
)
因此我的问题是:
- 什么是保留引用
/usr/local/bin/wine
以及为什么保留该引用? (注意alternatives --list | grep wine
没有返回任何内容) - 我如何以干净的方式完全摆脱这个 wine 安装?
编辑我必须补充一点,sudo yum erase wine* --remove-leaves
返回Command line error: no such option: --remove-leaves
。
[user@host]$ yum --version
3.4.3
Installed: rpm-4.11.3-32.el7.x86_64 at 2018-05-04 08:10
Built : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> at 2017-11-13 15:51
Committed: Panu Matilainen <[email protected]> at 2017-11-13
Installed: yum-3.4.3-154.el7.noarch at 2018-04-06 13:07
Built : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> at 2017-03-27 16:30
Committed: Valentina Mukhamedzhanova <[email protected]> at 2017-03-27
答案1
当您离开时/usr/local/bin/wine*
,您的 shell 仍然会记住您之前运行的命令;移动路径中的文件后,您需要运行
hash -r
当您尝试运行可执行文件时,强制 shell 重新发现哪些可执行文件可用。
要干净地删除 Wine,您确实需要知道它是如何安装的。就您而言,我认为您能做的最好的事情就是删除/usr/local/bin
( wine*
、regedit
、regsrv32
、msiexec
) 中的所有 Wine 可执行文件,并删除其关联的目录/usr/local/lib/wine
和/usr/local/share/wine
(或类似的目录)。您可能想要查找 Wine 前缀,并删除它们;find / -type d -name drive_c -printf %p\\n
将为您列出这些。