• Linux上通常有四种方式安装软件:
    • 在线安装
    • 从磁盘安装deb软件包
    • 从二进制软件包安装
    • 从源代码编译安装
  • 这篇文章中使用的场景均为Ubuntu下,不一定适用于其他Linux发行版。

使用apt-get安装软件

  • 现在如果想安装一个名为w3m(命令行的简易网页浏览器),那么可以输入如下命令:

    1
    sudo apt-get install w3m

    image-20231201175216825

  • 在软件安装完成后,无法直接使用Tab补全命令,可以先执行如下命令:

    1
    source ~/.zshrc

apt包管理工具介绍

APT是Advance Packaging Tool(高级包装工具)的缩写,是Debian及其派生发行版的软件包管理器,APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程。APT最早被设计成dpkg的前端,用来处理deb格式的软件包。现在经过APT-RPM组织修改,APT已经可以安装在支持RPM的系统管理RPM包。这个包管理器包含以 apt- 开头的多个工具,如 apt-get apt-cache apt-cdrom 等,在Debian系列的发行版中使用。

  • 当在执行安装操作时,首先apt-get 工具会在本地的一个数据库中搜索软件的相关信息,并根据这些信息在相关的服务器上下载软件安装。
  • 我们需要定期从服务器上下载一个软件包列表,系统会使用 sudo apt-get update 命令来保持本地的软件包列表是最新的(有时你也需要手动执行这个操作,比如更换了软件源),而这个表里会有软件依赖信息的记录,对于软件依赖,比如:安装 w3m 软件的时候,而这个软件需要 libgc1c2 这个软件包才能正常工作,这个时候 apt-get 在安装软件的时候会将其一并安装,以保证 w3m 能正常工作。

apt-get

  • apt-get 是用于处理 apt包的公用程序集,我们可以用它来在线安装、卸载和升级软件包等,下面列出一些apt-get包含的常用的一些工具:
工具 说明
install 其后加上软件包名,用于安装一个软件包
update 从软件源镜像服务器上下载/更新用于更新本地软件源的软件包列表
upgrade 升级本地可更新的全部软件包,但存在依赖问题时将不会升级,通常会在更新之前执行一次update
dist-upgrade 解决依赖关系并升级(存在一定危险性)
remove 移除已安装的软件包,包括与被移除软件包有依赖关系的软件包,但不包含软件包的配置文件
autoremove 移除之前被其他软件包依赖,但现在不再被使用的软件包
purge 与remove相同,但会完全移除软件包,包含其配置文件
clean 移除下载到本地的已经安装的软件包,默认保存在/var/cache/apt/archives/
autoclean 移除已安装的软件的旧版本软件包
  • apt-get的常用参数如下:
参数 说明
-y 自动回应是否安装软件包的选项,在一些自动化安装脚本中使用这个参数将十分有用
-s 模拟安装
-q 静默安装方式,指定多个q或者-q=#,#表示数字,用于设定静默级别,这在你不想要在安装软件包时屏幕输出过多时很有用
-f 修复损坏的依赖关系
-d 只下载不安装
--reinstall 重新安装已经安装但可能存在问题的软件包
--install-suggests 同时安装APT给出的建议安装的软件包

使用apt-get安装软件包

  • 就像前面演示的一样,只需要执行apt-get install <软件包名>即可。

  • 但有时需要重新对软件包进行安装,比如在系统被破坏、软件配置错误等时候,则可以加上--reinstall参数进行重新安装,比如对前面安装的w3m进行重装:

    1
    sudo apt-get --reinstall install w3m

    image-20231201180918092

更换软件源与软件升级

  • 如果希望更换软件的下载源,可以到/etc/apt目录下修改sources.list文件:

    1
    sudo nano /etc/apt/sources.list

    image-20231201181658888

  • 更新软件源可以使用如下命令:

    1
    sudo apt-get update

    image-20231201181015727

  • 对所有没有依赖问题的软件包进行升级:

    1
    sudo apt-get upgrade
  • 全部升级并解决依赖关系:

    1
    sudo apt-get dist-upgrade

卸载软件

  • 现在想卸载掉w3m这个软件,可以使用同样的命令,带上remove参数即可完成卸载:

    1
    sudo apt-get remove w3m

    image-20231201182239343

  • 如果希望不保留配置文件的移除,可以使用:

    1
    sudo apt-get purge w3m

    或者:

    1
    sudo apt-get --purge remove
  • 同时也可以移除不再需要的被依赖软件包:

    1
    sudo apt-get autoremove

    image-20231201182505496

软件搜索

  • 如果不确定需要的软件是否已经安装,可以使用搜索功能:

    1
    sudo apt-cache search softname1 softname2 softname3……

    apt-cache 命令是针对本地数据进行相关操作的工具,search 顾名思义在本地的数据库中寻找有关 softname1 softname2 …… 相关软件的信息。

使用dpkd安装

安装deb软件包

  • 我们可以经常在网络上见到以deb形式打包的软件包,这些软件包就需要使用dpkg命令来安装,常用参数如下:
参数 说明
-i 安装指定deb包
-R 后面加上目录名,用于安装该目录下的所有deb安装包
-r remove,移除某个已安装的软件包
-I 显示deb包文件的信息
-s 显示已安装软件的信息
-S 搜索已安装的软件包
-L 显示已安装软件包的目录信息
  • 首先使用apt-get加上-d参数只下载不安装,下载emacs编辑器的deb包:

    1
    2
    sudo apt-get update
    sudo apt-get -d install -y emacs
  • 下载完成后,可以在/var/cache/apt/archives/查看下载的内容:

    1
    ls /var/cache/apt/archives/

    image-20231201190916849

  • 将第一个文件拷贝到用户目录下,并使用dpkg安装:

    1
    2
    cp /var/cache/apt/archives/emacs24_24.5+1-6ubuntu1.1_amd64.deb ~
    sudo dpkg -I emacs24_24.5+1-6ubuntu1.1_amd64.deb

    image-20231201191438879

  • 但如果安装的软件包还有额外依赖,那么意味着直接使用dpkg命令会出现一些问题,因为dpkg无法解决依赖关系问题:

    1
    sudo dpkg -i emacs24_24.5+1-6ubuntu1.1_amd64.deb

    image-20231201191718630

  • 为了解决这个问题,可以使用apt-get-f参数修复依赖关系的安装:

    1
    2
    sudo apt-get update
    sudo apt-get -f install -y

查看已安装软件包的安装目录

  • 如果希望知道每个软件分别安装到了什么地方,可以使用dpkg-L参数查看deb包目录信息:

    1
    sudo dpkg -L emacs24

    image-20231201192702116