目录

软件包“被标记为手动安装”是什么意思

软件包“被标记为手动安装”意思是该软件包是由用户手动安装的,而不是通过软件包管理系统进行安装。因此,该软件包不会被自动卸载或更新,除非用户显式地指定。标记软件包为手动安装可以让用户更好地控制他们的系统。

一、软件包“被标记为手动安装”是什么意思

当你尝试安装已安装的库或开发包时,你会看到此消息。意味着该软件包是由用户手动安装的,而不是通过软件包管理系统进行安装。因此,该软件包不会被自动卸载或更新,除非用户显式地指定。标记软件包为手动安装可以让用户更好地控制他们的系统,并避免意外地删除或升级重要软件包。此依赖包是与另一个包一起自动安装的。如果删除了主包,则使用 apt autoremove命令删除依赖包。但是由于你试图显式安装依赖包,你的 Ubuntu 系统认为你需要这个包独立于主包。因此,该软件包被标记为手动安装,因此不会自动删除。

不是很清楚,对吧?以在 Ubuntu 上安装 VLC 为例。由于主 VLC 包依赖于许多其他包,因此这些包会自动安装。

如果你检查名称中包含 vlc 的 已安装软件包列表,你会看到除了 VLC,其余都标记为“自动”。这表明这些软件包是(跟着 vlc)自动安装的,当 VLC 被卸载时,它们将使用 apt autoremove 命令自动删除。

现在假设你出于某种原因考虑安装 vlc-plugin-base。如果你在其上运行 apt install 命令,系统会告诉你该软件包已安装。同时,它将标记从自动更改为手动,因为系统认为在尝试手动安装表明你明确需要此 vlc-plugin-base。

可以看到它的状态已经从 [installed,automatic] 变成了 [installed]。

现在,让我删除 VLC 并运行 autoremove 命令。你可以看到 vlc-plugin-base 不在要删除的软件包列表中。

再次检查已安装软件包的列表。vlc-plugin-base 仍然安装在系统上。

你可以在这里看到另外两个与 VLC 相关的包。这些是 vlc-plugin-base 包的依赖项,这就是为什么它们也存在于系统上但标记为 automatic 的原因。

二、软件包

1、软件包系统

不同的Linux发行版用的是不同的软件包系统,并且原则上,适用于一种发行版的软件包与其他版本是不兼容的。多数Linux发行版采用的不外乎两种软件包技术阵营,即Debian的.deb技术和Red Hat的.rpm技术。当然也有一些特例,比如Gentoo、Slackware和Foresight等,但多数版本采取的还是下图所列的两个基本软件包系统。

2、软件包系统工作方式

在非开源软件产业中,给系统安装一个新应用,通常需先购买“安装光盘”之类的安装介质,然后运行安装向导进行安装。Linux并不是这样。事实上,Linux系统所有软件均可在网上找到,并且多数是以软件包文件的形式由发行商提供,其余则以可手动安装的源代码形式存在。

  • 软件包文件:包文件是组成软件包系统的基本软件单元,它是由组成软件包的文件压缩而成的文件集。一个包可能包含大量的程序以及支持这些程序的数据文件,包文件既包含了安装文件,又包含了有关包自身及其内容的文本说明之类的软件包元数据。此外,许多软件包中还包含了安装软件包前后执行配置任务的安装脚本。
  • :虽然一些软件项目选择自己包装和分销,但如今多数软件包均由发行商或感兴趣的第三方创建。Linux用户可以从其所使用的Linux版本的中心库中获得软件包。所谓的中心库,一般包含了成千上万个软件包,而且每一个都是专门为该发行版本建立和维护的。在软件开发生命周期的不同阶段,一个发行版本可能会维护多个不同仓库。例如,通常会有一个测试库,该库里面存放的是刚创建的、用于调试者在软件包正式发布前查找漏洞的软件包。另外,一个发行版本通常还会有一个开发库,存放的是下一个公开发行的版本中所包含的开发中的软件包。
  • 高级和低级软件包工具:软件包管理系统通常包含两类工具——执行如安装、删除软件包文件等任务的低级工具和进行元数据搜索及提供依赖性解决的高级工具。本章将要介绍Debian类型的系统(如Ubuntu等类似系统)所提供的软件包工具和最近的Red-Hat系列产品使用的工具。尽管所有Red-Hat系列版本都使用相同的低级工具(rpm),但使用的高级工具却不尽不同。下面我们将讨论高级软件包工具yum程序,它为高级Fedora、Red Hat Enterprise Linux(红帽企业版Linux)和CentOS等系统所用,而其他Red Hat系列的发行版本也提供功能与之相媲美的高级工具。

3、命令

  • 两大包管理系统(.deb技术)(.rpm技术)
  • 低级工具(rpm)(dpkg)
  • 高级工具(apt-get,aptitude)(yum)
  • 查找软件包(apt-get update,apt-cache search search_string),(yum search search_string)
  • 高级安装软件包(apt-get update ; apt-get install package_name),(yum install package_name)
  • 低级软件包安装命令(dpkg –install package_file)(rpm -i package_file)
  • 删除/卸载软件包(apt-get remove package_name)(yum erase package_name)
  • 更新库中的软件包(apt-get update; apt-get upgrade)(yum update)
  • 更新软件包文件中的软件包(dpkg –install package_file)(rpm -U package_file)
  • 查看系统已安装软件包(dpkg –list)(rpm -qa)
  • 判断软件是否安装(dpkg –status packagename)(rpm -q package_name)
  • 显示已安装软甲的相关信息(apt-cache show packagename)(yum info package_name)
  • 查看某文件或目录谁装的(dpkg –search filename)(rpm -qf file_name)

延伸阅读1:软件包管理简介

软件包管理是一种在系统上安装、维护软件的方法。目前,很多人通过安装Linux经销商发布的软件包来满足他们所有的软件需求。这与早期的Linux形成了鲜明的对比。因为在Linux早期,想要安装软件必须先下载源代码,然后对其进行编译。这并不是说编译源代码不好,源代码公开恰是Linux吸引人的一大亮点。编译源代码赋予用户自主检查、提升系统的能力,只是使用预先编译的软件包会更快、更容易些。

一站式研发项目管理平台 PingCode

一站式研发项目管理平台 PingCode

支持敏捷\瀑布、知识库、迭代计划&跟踪、需求、缺陷、测试管理,同时满足非研发团队的流程规划、项目管理和在线办公需要。