【Linux常用命令系列】 apt-get 由来命令选项示例详解

【Linux常用命令系列】 apt-get 由来命令选项示例详解

由来

简介

Linux操作系统是一种开源的、基于Unix的操作系统,它提供了丰富的命令行工具和软件包管理器,使用户可以方便地安装、更新和卸载软件。

其中,apt-get是Linux中常用的软件包管理工具之一,它主要用于从软件源中获取并安装软件包。那么,apt-get是如何诞生的呢?下面我们来了解一下。

软件包管理的历史

在早期的Linux发行版中,软件包管理是一项非常复杂的任务。用户需要手动下载软件源码、解压缩、编译和安装,这个过程非常繁琐。为了简化这个过程,开发者们开始设计软件包管理系统。

最早出现的软件包管理系统是RPM(Red Hat Package Manager),它由Red Hat公司推出,并在后来成为了Linux发行版中最常用的软件包格式之一。

随着Linux发行版的不断增多,各种不同的软件包管理系统也随之诞生。Debian发行版是其中之一,它采用了一种名为dpkg的软件包管理系统。然而,dpkg并没有提供自动解决软件包依赖关系的功能,这使得软件包的安装变得更加困难。

apt-get的诞生

为了解决软件包依赖关系的问题,Debian开发者们于1998年推出了apt(Advanced Package Tool)工具。apt是一个高级软件包管理工具,它能够自动解决软件包之间的依赖关系,并提供了一套简单易用的命令行接口。

apt-get是apt工具集中的一个组件,它是apt的前端命令行工具,用于从软件源中获取、安装、更新和卸载软件包。通过apt-get,用户可以方便地管理系统上的软件包,同时它还支持自动解决软件包依赖关系,大大简化了软件包管理的流程。

结论

Linux操作系统的软件包管理一直是其成功的关键之一,而apt-get作为其中的一种工具,因其简单易用和强大的功能,在Linux社区中广受欢迎。通过apt-get,用户可以轻松地获取所需的软件包,并保证系统中的软件包处于最新状态。

命令

除非给出-h或–help选项,否则必须存在下面的命令之一。

update

用于从源重新同步软件包索引文件。可用软件包的索引从/etc/apt/sources.list(5)中指定的位置获取。在升级或dist-upgrade之前应始终执行更新操作。

upgrade

用于从/etc/apt/sources.list(5)中枚举的源安装系统上当前已安装软件包的最新版本。检索并升级当前已安装的具有新版本的软件包;绝不会删除当前已安装的软件包,也不会检索和安装尚未安装的软件包。无法在不更改其他软件包的安装状态的情况下升级的当前已安装软件包的新版本将保留在其当前版本。必须首先执行更新操作,以便apt-get知道有新版本的软件包可用。

dist-upgrade

除了执行升级功能外,此选项还智能地处理与软件包的新版本有关的更改依赖项;apt-get具有“智能”冲突解决系统,如果需要,它将以牺牲次要软件包为代价升级最重要的软件包。

/etc/apt/sources.list(5)文件包含了从中检索所需软件包文件的位置列表。有关用于覆盖单个软件包的一般设置的机制,请参阅apt_preferences(5)。

install pkg(s)

此选项后面跟随一个或多个要安装的软件包。每个软件包是一个包名称,而不是完全限定的文件名(例如,在Fedora Core系统中,参数提供的是glibc,而不是glibc-2.4.8.i686.rpm)。还会检索并安装安装所需的所有软件包。使用/etc/apt/sources.list(5)文件来定位所需软件包的存储库。如果在软件包名称后附加连字符(-)(没有空格),则如果当前已安装该软件包,则将删除该软件包。类似地,可以使用加号(+)来指定要安装的软件包。这些功能可以用于覆盖apt-get的冲突解决系统所做的决策。

也可以通过在软件包名称后跟等号(=)和要选择的软件包版本来选择特定版本的软件包进行安装。这将导致定位并选择该版本进行安装。或者,还可以通过在软件包名称后跟斜杠(/)和分发版本或存档名称的版本来选择特定分发版。

这两种版本选择机制都可以降级软件包,并且必须小心使用。

最后,apt_preferences(5)机制允许您为单个软件包创建替代安装策略。

如果没有与给定表达式匹配的软件包,并且表达式包含“。”、“?”或“”,则假设它是一个POSIX正则表达式,并将其应用于数据库中的所有软件包名称。然后安装(或删除)任何匹配项。请注意,匹配是通过子字符串完成的,因此“lo.”与“how-lo”和“lowest”匹配。如果不希望这样做,请使用“^”或“$”字符锚定正则表达式,或者创建更具体的正则表达式。

remove pkg(s)

与install相同,只是删除软件包而不是安装软件包。如果在软件包名称后附加加号(+)(没有空格),则如果当前已安装该软件包,则将安装该软件包。

source source_pkg

导致apt-get获取源代码包。APT将检查可用的软件包以决定要获取哪个源代码包。然后,它将在当前目录中找到并下载该源代码包的最新可用版本。通过sources.list(5)文件中的rpm-src类型行,源代码包与二进制包分别跟踪。这可能意味着您将不会获取与您已安装的软件包相同的源代码包,或者可以安装。如果指定了–compile选项,则将使用rpmbuild编译软件包;如果指定了–download-only选项,则不会解压缩源代码包。

可以通过在源名称后跟等号(=)然后是要获取的版本来检索特定的源版本,类似于用于软件包文件的机制。这将使得能够精确匹配源代码包名称和版本,并隐式启用APT::Get::Only-Source选项。

请注意,源代码包不像二进制包那样进行跟踪,它们仅存在于当前目录中,并且类似于下载源代码tar包。

build-dep source_pkg
导致apt-get安装/删除软件包,以满足源代码包的构建依赖关系。

check

诊断工具;更新软件包缓存并检查是否存在损坏的依赖项。

clean

清除本地存储库中检索到的软件包文件。它从/var/cache/apt/archives/和/var/cache/apt/archives/partial/中删除所有内容,但保留锁文件。

autoclean

与clean类似,autoclean会清除本地存储库中检索到的软件包文件。区别在于,它只会删除无法再次下载并且基本上无用的软件包文件。这允许在长时间内保持缓存而不会失控。如果设置了配置选项APT::Clean-Installed,则安装的软件包将不会被删除。

示例

以下是一些Linux中使用apt-get的示例命令:

  1. 更新软件包索引:

    sudo apt-get update
    

    此命令将从所有配置的存储库中获取最新的软件包列表。在执行任何其他操作之前,通常应该先运行此命令。

  2. 升级已安装的软件包:

    sudo apt-get upgrade
    

    此命令将升级系统上已安装的所有软件包到其最新版本。它会检查可用的更新,并提示您是否要进行升级。

  3. 安装软件包:

    sudo apt-get install package_name
    

    将替换package_name为要安装的实际软件包名称。此命令将下载并安装指定软件包及其依赖项。

  4. 删除软件包:

    sudo apt-get remove package_name
    

    将替换package_name为要删除的实际软件包名称。此命令将卸载指定软件包,但保留其配置文件。

  5. 完全删除软件包:

    sudo apt-get purge package_name
    

    将替换package_name为要完全删除的实际软件包名称。此命令将卸载指定软件包及其相关的配置文件和数据。

  6. 搜索可用的软件包:

    apt-cache search keyword
    

    将替换keyword为要搜索的关键字。此命令将在软件包数据库中查找与关键字匹配的软件包。

  7. 显示软件包详细信息:

    apt-cache show package_name
    

    将替换package_name为要显示详细信息的实际软件包名称。此命令将显示与指定软件包相关的详细信息,如描述、版本和依赖项。

这些是apt-get的一些常见用法示例,您可以根据自己的需求使用适当的命令进行软件包管理。

选项

所有命令行选项都可以使用配置文件进行设置,描述中指示了要设置的配置选项。对于布尔选项,您可以通过使用类似-f-、–no-f、-f=no或其他几种变体来覆盖配置文件。

-d, --download-only

仅下载;只检索软件包文件,不解压缩或安装。
配置项:APT::Get::Download-Only。

-f, --fix-broken

修复。尝试纠正具有损坏依赖关系的系统。此选项与install/remove一起使用时,可以省略任何软件包以允许APT推断可能的解决方案。指定的任何软件包必须完全解决问题。当第一次运行APT时,使用此选项有时是必需的;APT本身不允许在系统上存在损坏的软件包依赖关系。系统的依赖结构可能非常损坏,以至于需要手动干预。与-m一起使用此选项可能会在某些情况下产生错误。

配置项:APT::Get::Fix-Broken。

-m, --ignore-missing, --fix-missing

忽略缺少的软件包。如果无法检索软件包或在检索后无法通过完整性检查(损坏的软件包文件),则保留这些软件包并处理结果。与-f一起使用可能会在某些情况下产生错误。如果选择安装软件包(特别是如果它在命令行中提到),但无法下载,则将静默地保留该软件包。

配置项:APT::Get::Fix-Missing。

–no-download

禁用软件包下载。最好与–ignore-missing一起使用,以强制APT仅使用已经下载的软件包。

配置项:APT::Get::Download。

-q, --quiet

安静模式。产生适合记录的输出,省略进度指示符。更多的q会产生更安静的效果,最多可以有两个。您还可以使用-q=#来设置安静级别,覆盖配置文件。请注意,安静级别2意味着-y,请不要在没有-no-action修改器的情况下使用-qq,因为APT可能会执行您没有预期的操作。

配置项:quiet。

-s, --simulate, --just-print, --dry-run, --recon, --no-act

不进行任何操作。对将发生但不会实际改变系统的事件进行模拟。
配置项:APT::Get::Simulate。
模拟打印一系列行,每行表示一个rpm操作:配置(Conf)、删除(Remv)、解压缩(Inst)。方括号表示没有影响的破损软件包(很少见)。

-y, --yes, --assume-yes

自动回答是。假定对所有提示的回答都是“是”,并以非交互方式运行。如果出现不希望的情况(例如更改保持软件包或删除基本软件包),apt-get将中止。
配置项:APT::Get::Assume-Yes。

-u, --show-upgraded

显示升级的软件包。打印出要升级的所有软件包的列表。
配置项:APT::Get::Show-Upgraded。

-V, --verbose-versions

显示已升级和已安装软件包的完整版本。
配置项:APT::Get::Show-Versions。

-b, --compile, --build

在下载源代码包后进行编译。
配置项:APT::Get::Compile。

–ignore-hold

忽略软件包保持。这将导致apt-get忽略对软件包的保持。如果在dist-upgrade中使用,可以覆盖大量不需要的保持。

配置项:APT::Ignore-Hold。

–no-upgrade

不升级软件包。在与install一起使用时,no-upgrade将阻止升级列出的软件包(如果它们已经安装)。

配置项:APT::Get::Upgrade。

–force-yes

强制是。这是一个危险的选项,如果正在执行可能有害的操作,则会导致apt-get继续而无需提示。除非在非常特殊的情况下,不应使用–force-yes选项。使用–force-yes可能会破坏您的系统!

配置项:APT::Get::force-yes。

–print-uris

而不是获取要安装的文件,打印它们的URI。每个URI都将具有路径、目标文件名、大小和预期的MD5哈希值。请注意,要写入的文件名不始终与远程站点上的文件名匹配!这也适用于源和更新命令。当与更新命令一起使用时,不包括MD5和大小,并且由用户解压缩任何压缩文件。

配置项:APT::Get::Print-URIs。

–reinstall

重新安装已经安装并且是最新版本的软件包。

配置项:APT::Get::ReInstall。

–list-cleanup

此选项默认为开启状态,请使用–no-list-cleanup来关闭它。在开启状态下,apt-get将自动管理/var/lib/apt/lists的内容,以确保清除过时的文件。唯一关闭它的原因是如果您经常更改源列表。

配置项:APT::Get::List-Cleanup。

-t, --target-release, --default-release

此选项控制策略引擎的默认输入。它使用指定的发行版字符串创建一个默认的优先级为990的pin。首选项文件可以进一步覆盖此设置。简而言之,此选项使您可以简单地控制从哪个发行版中检索软件包。一些常见的示例可能是-t’2.1*'或-t unstable。

配置项:APT::Default-Release;请参阅apt_preferences(5)手册页。

–trivial-only

仅执行“平凡”操作。逻辑上可以认为这与–assume-yes有关。在–assume-yes将对任何提示回答是的情况下,–trivial-only将回答否。
配置项:APT::Get::Trivial-Only。

–no-remove

如果要删除软件包,则立即中止而无需提示。
配置项:APT::Get::Remove。

–only-source

只对源命令有意义。指示给定的源名称不通过二进制表映射。这意味着如果指定了此选项,则源命令将仅接受源软件包名称作为参数,而不是接受二进制软件包名称并查找相应的源软件包。

配置项:APT::Get::Only-Source。

-h, --help

显示简短的用法摘要。

-v, --version

显示程序版本。

-c, --config-file

配置文件。指定要使用的配置文件。程序将首先读取默认的配置文件,然后读取此配置文件。有关语法信息,请参阅apt.conf(5)。

-o, --option

设置配置选项。这将设置一个任意的配置选项。语法是-o Foo::Bar=bar。

文件

/etc/apt/sources.list
获取软件包的位置。
配置项:Dir::Etc::SourceList。

/etc/apt/apt.conf
APT配置文件。
配置项:Dir::Etc::Main。

/etc/apt/apt.conf.d/
APT配置文件片段。
配置项:Dir::Etc::Parts。

/etc/apt/preferences
版本首选项文件。这是您将为单个软件包指定“固定”的地方,即从不同源或发行版的不同版本获取某些软件包。
配置项:Dir::Etc::Preferences。

/var/cache/apt/archives/
存储检索到的软件包文件的位置。
配置项:Dir::Cache::Archives。

/var/cache/apt/archives/partial/
正在传输的软件包文件的存储位置。
配置项:Dir::Cache::Archives(隐式部分)。

/var/lib/apt/lists/
每个在sources.list(5)中指定的软件包资源的状态信息存储区。
配置项:Dir::State::Lists。

/var/lib/apt/lists/partial/
正在传输的状态信息的存储区。
配置项:Dir::State::Lists(隐式部分)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值