- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
为什么基于 Debian 的 Linux 发行版具有apt以及apt-get?apt是替换还是他们apt-get 有不同的目的?我们解释这两个命令之间的关系。
创建Linux 发行版的主要工作是设计和创建包管理系统。您的用户需要有一种方法来安装和卸载软件包。这需要软件从您的软件存储库中检索软件包文件并将它们正确安装在用户的计算机上。
这不是一件小事。即使将软件工程放在一边,托管软件存储库也需要时间、精力和费用。这就是为什么这么多“新”Linux 发行版是现有 Linux 发行版的衍生产品的原因之一。
这导致了 Linux 发行版的家族或谱系,例如基于Debian的发行版、基于Red Hat的发行版、基于Arch的发行版等等。
Debian 系列发行版——包括Ubuntu和所有Ubuntu 派生的发行版——使用 Debian 包管理器。这使用带有“.deb”文件扩展名的包文件,称为 DEB 文件。DEB 文件是包含其他存档文件的压缩文件。归档文件包含应用程序的可执行文件、手册页、库等。
从 DEB 文件安装软件意味着解压缩所有这些组件文件并将它们放置在计算机上的正确位置。它还需要与操作系统和桌面环境进行交互,以便应用程序显示在应用程序搜索中,并且可以将其图标添加到停靠栏或系统菜单中。
和命令都这样做apt-get。apt但是为什么我们对同一件事有两个命令呢?
真正执行安装的包称为dpkg. 它实际上是一系列命令,包括dpkg-split,dpkg-trigger和dpkg-divert. 如果需要,这些将由高级软件包工具套件或 APT 中的工具调用。APT 是另一个工具集合,包括apt-get、apt-cache和apt.
该dpkg命令被视为低级命令。除了最简单的交互之外,它变得非常复杂,有很多选择。该命令充当命令套件的apt-get前端。dpkg这大大简化了事情。apt-get被设计为面向用户的命令,而不是低级后台命令。即便如此,尽管它是面向人类的角色,但另一个名为的命令apt-cache被用来向用户显示信息。
该命令提供了另一种通过更易于访问和用户友好的命令行工具apt“交谈”的方式。它提供.dpkgapt-getapt-cache
Linux Mint在这里需要特别提及。Linux Mint 维护者开发了他们自己 apt的apt-get. 这不是apt我们在这里谈论的。我们指的是主流的 Debian apt,它于 2014 年发布,并在 2016 年包含在 Ubuntu 16.04 中时在用户节中获得了关注和牵引力。
所以,dpkg是低级的后台应用程序。该命令是apt-get一个功能齐全但经过简化的.dpkgaptapt-get
但是apt-get,apt提供的不仅仅是一个简单的dpkg. 他们做不做的事情dpkg。他们将从存储库中检索文件,并尝试帮助解决缺少的依赖项和冲突。
反过来,该apt命令会做一些apt-get不做的事情。它提供了更多普通用户在安装过程中希望看到的类型的信息,并抑制了apt-get显示的一些更晦涩的信息。apt提供出色的视觉反馈,并在终端窗口中使用颜色高亮和进度条。
apt和之间有一些常用命令apt-get。所有这些命令都可以以aptor开头,apt-get并且行为相同:
这些是新的命令apt:
您可以使用apt search来查看存储库中是否存在包或检查您是否获得了正确的包名称。假设您想安装Scribus,但您不知道软件包名称。您可以尝试寻找scribus-desktop.
apt search scribus-desktop
那次搜索什么也没找到。我们将使用更短、更通用的搜索线索再次尝试。
apt search scribus
这会返回几个命中,我们可以看到有一个叫做“scribus”,而且它看起来肯定是 Scribus 桌面发布应用程序的核心包。该apt show命令将为我们提供更多详细信息。
apt show scribus
我们得到有关软件包的信息转储,包括将安装的内容和软件描述。
它还建议可能需要的其他软件包,具体取决于我们的需要。
要安装我们需要使用的包sudo。
sudo apt install scribus
这些文件是从存储库中检索的。当前正在检索的文件以棕色突出显示。
检索文件后,将安装它们。安装进度显示为以数字显示的百分比和进度条。
apt list和apt edit-sources命令是 中apt不存在的选项apt-get。
该apt list 命令可以与–installed或–upgradeable选项一起使用,以查看计算机上已安装的软件包以及可以升级的软件包。
要查看计算机上安装的应用程序列表,请使用:
apt list --installed
滚动输出,我们可以看到新安装的 Scribus 应用程序的两个条目。
要查看是否可以升级任何已安装的应用程序,请使用该–upgradeable选项。
apt list --upgradeable
该apt命令还为您提供了一种方法来编辑存储的有关存储库apt 搜索包的信息。仅当您知道自己在做什么时才这样做。
sudo apt edit-sources
此命令打开您的默认编辑器并加载包含存储库信息的文件。
该apt-get命令不经常更新,这是一件好事。它必须保持向后兼容性。向后兼容性对于apt. 它被视为面向用户的命令。
对于日常使用,请使用apt.
如果您编写任何与软件包安装有关的脚本apt-get,请使用. 这为您的脚本提供了最大的可移植性和兼容性机会。
平时很少在jquery中用到this。查看代码时发现用到了,就调试出this的值,心想原来如此。还是挺有用的。这里总结一下this与$(this)的区别和使用。 $(this)生成的是什么?
使用单例类和应用程序范围的托管 bean 来保存应用程序数据有区别吗? 我需要查找某些 JNDI 资源,例如远程 bean 接口(interface),因此我为自己编写了一个单例来缓存我的引用并且只允
如果您仔细查看包含的图片,您会注意到您可以使用 Eclipse IDE 重构 Groovy 代码并将方法转换为闭包,反之亦然。那么,闭包到底是什么,它与方法有什么不同呢?有人可以举一个使用闭包的好例子
vagrant box repackage有什么区别( docs ) 和 vagrant package ( docs )? 我意识到 vagrant package仅适用于 VirtualBox 提
我想看看是否有人可以解释为什么以下代码适用于 valueOf 但不适用于其他代码。 import java.math.BigDecimal; public class Change { publ
这个问题已经有答案了: 已关闭12 年前。 Possible Duplicates: What is Closures/Lambda in PHP or Javascript in layman te
This question already has answers here: Vagrant, Docker, Puppet, Chef (3个答案) 2年前关闭。 docker和chef有什么共同
以下代码在95%的机器上产生相同的输出,但是在几台机器上却有所不同。在 Debug模式下,输出: Changing from New to Fin OK 但在 Release模式下: Changing
////Creating Object var Obj; // init Object Obj= {}; 它们之间有什么区别两个? 有没有可能把它变成一个单行? 这样使用有什么好处吗?
我想找出定时器服务之间的区别。我应该使用哪个以及何时使用。我正在使用 Jboss 应用服务器。 1) java.ejb.Schedule。 @Schedule注解或配置自xml。 2) javax.e
我发现在 C++ 中可以通过三种不同的方式将对象传递给函数。假设我的类(class)是这样的: class Test { int i; public: Test(int x);
有什么区别。 public class Test { public static void main(String args[]) { String toBeCast = "c
如果我有一列,设置为主索引,设置为INT。 如果我不将其设置为自动递增,而只是将唯一的随机整数插入其中,与自动递增相比,这是否会减慢 future 的查询速度? 如果我在主索引和唯一索引为 INT 的
这两种日期格式有什么区别。第一个给出实际时间,第二个给出时间购买添加时区偏移值。 NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]
如果有一个函数,请说foo: function foo() { console.log('bar'); } 那么在 JavaScript 中,从另一个函数调用一个函数有什么区别,如下所示: f
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
代码是什么: class Time { private: int hours; int minutes; int seconds; pu
我知道这是非常基本的,但有人介意解释一下这两个数组声明之间的区别吗: #include array myints; ...和: int myints[5]; ...以及为什么 myints.size
我学会了如何根据 http://reference.sitepoint.com/css/specificity 计算 css 特异性但是,基于this reference,我不明白伪类(来自c)和伪元
为什么在运行 2) 时会出现额外的空行?对我来说 1 就像 2。那么为什么 2) 中的额外行? 1) export p1=$(cd $(dirname $0) && pwd) #
我是一名优秀的程序员,十分优秀!