当前位置:首页 > Linux > 正文

linux下编译安装的软件如何卸载

Linux下卸载编译安装的软件,通常进入软件安装目录执行 make uninstall命令,若没有该命令,需手动删除安装文件及相关配置文件

Linux系统中,通过编译安装的软件卸载过程相对复杂一些,因为这类软件不像使用包管理器安装的软件那样有统一的卸载入口,以下是详细的卸载步骤和方法:

查找软件安装路径

  • 查看安装日志:如果在编译安装过程中有记录安装日志,可以通过查看日志文件来确定软件的安装路径,常见的日志文件位置可能在/var/log目录下,如/var/log/install.log(具体名称取决于安装时的设置),使用catlessmore等命令查看日志文件,查找与软件安装相关的信息,确定安装路径。

  • 使用find命令:如果没有安装日志,可以使用find命令在常见安装目录中搜索软件相关文件,如果知道软件的可执行文件名称,可以在/usr/local/bin/usr/bin等目录中搜索,假设可执行文件名为my_software,可以使用以下命令:

    sudo find /usr/local/bin -name "my_software"

    如果找到了可执行文件,其所在目录及上级目录可能就是软件的安装路径,也可以在整个文件系统范围内搜索,但这样可能会花费较长时间:

    sudo find / -name "my_software" 2>/dev/null

    2>/dev/null用于忽略搜索过程中的权限错误提示。

    linux下编译安装的软件如何卸载  第1张

  • 查看环境变量:有些软件在安装时会将其安装路径添加到环境变量中,如PATHLD_LIBRARY_PATH等,可以通过echo $PATHecho $LD_LIBRARY_PATH等命令查看相关环境变量,看是否能找到软件安装路径的线索。

进入软件安装目录

  • 一旦确定了软件的安装路径,使用cd命令进入该目录,如果软件安装在/usr/local/my_software目录下,执行以下命令:
    cd /usr/local/my_software

执行卸载操作

  • 查找并执行make uninstall命令:在软件安装目录中,查看是否存在Makefile文件,如果存在,通常可以在该目录下执行make uninstall命令来卸载软件,这个命令会按照编译安装时的反向顺序删除软件安装过程中创建的文件,包括可执行文件、库文件、配置文件等。

  • 手动删除文件:如果软件没有提供make uninstall命令,或者执行该命令后仍有残留文件,需要手动删除相关文件和目录,需要删除以下几类文件:

    • 可执行文件:通常位于/usr/local/bin/usr/bin目录下,可以使用which命令查找可执行文件的路径,然后使用rm命令删除,要删除my_software可执行文件,执行以下命令:
      sudo rm $(which my_software)
    • 库文件:如果软件安装了库文件,可能位于/usr/local/lib/usr/lib目录下,可以使用ldconfig -p | grep my_software命令查找库文件,然后使用rm命令删除。
      sudo rm /usr/local/lib/libmy_software.so
    • 配置文件:配置文件的位置因软件而异,可能在/etc/usr/local/etc或软件安装目录下的特定配置目录中,需要仔细查找并删除与软件相关的配置文件。
    • 数据文件和日志文件:如果软件有相关的数据文件和日志文件,也需要一并删除,这些文件的位置通常在软件安装目录或其指定的数据目录下。

清理残留文件和目录

  • 检查空目录:在删除软件相关文件后,可能会有一些空目录残留,可以使用以下命令查找并删除空目录:

    sudo find /usr/local -type d -empty -delete

    这个命令会在/usr/local目录下查找所有空目录并删除,可以根据软件安装路径调整命令中的目录。

  • 清理包管理器缓存:如果是通过源码编译安装的软件,一般不需要清理包管理器缓存,但如果之前使用包管理器安装了软件的一些依赖包,在卸载软件后,可以使用包管理器的相应命令清理缓存,对于使用apt包管理器的系统,可以执行以下命令:

    sudo apt clean

以下是不同场景下卸载通过编译安装软件的示例:

场景 软件名称 安装路径 卸载命令或操作
简单可执行文件 example_program /usr/local/bin cd /usr/local/bin<br>sudo make uninstall(如果有Makefile)或sudo rm example_program
包含多个文件和目录 complex_software /opt/complex_software cd /opt/complex_software<br>sudo make uninstall(如果有Makefile),然后手动检查并删除残留文件和目录
无Makefile文件 no_makefile_app /usr/local/no_makefile_app 手动删除可执行文件、库文件、配置文件等,如sudo rm /usr/local/no_makefile_app/binary_filesudo rm /usr/local/no_makefile_app/lib/

相关问答FAQs

问题1:卸载通过编译安装的软件时,如果不知道软件的安装路径怎么办?

回答:可以尝试以下方法来查找软件的安装路径,查看安装时是否有记录安装日志,若有则在日志中查找相关信息,如果没有日志,可以使用find命令在常见安装目录如/usr/local/bin/usr/bin等中搜索软件的可执行文件,根据可执行文件的位置推断安装路径,还可以查看环境变量,如PATHLD_LIBRARY_PATH等,看是否能找到与软件相关的路径信息。

问题2:执行make uninstall命令时提示权限不足怎么办?

回答:在Linux中,执行涉及系统文件和目录操作的命令通常需要管理员权限,当执行make uninstall提示权限不足时,可以在命令前加上sudo来获取管理员权限,原本的命令是make uninstall,加上权限后变为sudo make uninstall,输入命令后,系统会提示输入管理员密码,输入正确的密码后即可执行命令,需要注意的是,使用sudo时要谨慎操作,确保命令的正确性,以免

0