如果这与主题无关,请提前致歉。
当我想在 Ubuntu 中安装一个应用程序时,我会转到终端并输入一些表示我想要安装该应用程序的内容。
我没有做的是输入我想要安装它的确切位置。
这与基于 GUI 的 Windows 或 OS X 有很大不同,在这些系统中,人们会使用浏览器导航到 WWW 上的某个页面,下载一个大软件包,然后双击它进行安装。
我的问题:
- Linux 应用程序来自哪里?
- 谁能确保这些存储库没有被恶意软件破坏?
- 我假设有多个存储库。如果是这样,我的 Linux PC 如何决定从哪个存储库下载软件包?
- 不同的发行版是否都有相同的存储库,还是不同的?
- 如果我使用的是功能齐全的最新版本的 Ubuntu,而不是轻量级版本(例如 Puppy Linux),并且我在终端中输入完全相同的命令来安装某个应用程序,那么在两种情况下我安装的应用程序是相同的还是不同的?如何处理所有这些问题,以免将错误的版本安装在错误的位置?
答案1
有很多问题。很多问题都很深奥。我只能总结一下。
你开始的问题:
我没有做的是输入我想要安装它的确切位置。
软件包管理器知道在哪里以及如何安装程序。这是管理器了解安装了什么以及保持系统清洁所必需的。Linux 使用一个程序应该执行一项任务并出色地执行它的理念。当您在 Linux 中安装程序时,管理器会查找所需的内容并为您安装软件包。
Linux 应用程序来自哪里?
大多数二进制文件来自存储库。有些是你自己从源代码构建的。
谁能确保这些存储库没有被恶意软件破坏?
这些软件包由 GPG 私钥签名。这可以防止任何非开发人员以相同名称发布代码。因此,存储库的保护者是通过数学加密。但实际上你需要信任存储库。不要添加随机存储库。使用 Ubuntu 存储库是安全的,因为你知道谁在管理它们。
我假设有多个存储库。如果是这样,我的 Linux PC 如何决定从哪个存储库下载软件包?
Linux 发行版的维护者决定使用哪个存储库。Ubuntu 的每个版本都有一个存储库。
不同的发行版是否都有相同的存储库,还是不同的?
不同。有许多不同的发行版,Ubuntu 使用 Ubuntu/Debian 存储库,Red Hat 使用自己的存储库。取决于发行版。
如果我使用的是功能齐全的最新版本的 Ubuntu,而不是轻量级版本(如 Puppy Linux),并且我在终端中输入相同的命令来安装某个应用程序,那么在两种情况下我都会安装相同的应用程序,还是不同的应用程序?
每个发行版都使用不同的方法来访问存储库。对于 Ubuntu 是这样的,
apt-get
但对于 Red Hat 是这样的yum
。一些发行版的文件结构和操作方式略有不同。例如,Ubuntu 的母版 Debian 使用与 Ubuntu 完全不同的电子邮件代理。一个包管理器无法在所有 Linux 发行版上运行。我们也不想要这样。垄断不利于 Linux 带来的安全和自由。如何处理这一切,以免错误的版本安装在错误的地方?
软件包管理器记录所有已安装的软件(即软件包管理器安装的软件)。但有时这并不奏效(您可能从源代码安装),因此,真正处理任何问题的还是用户。
答案2
取决于你到底在问什么。你可以从存储库获取它们。存储库获取二进制(我们这里不计算 Gentoo)软件包,这些软件包由软件包维护者或自动执行此操作的机器人编译而成。这仅适用于开源软件(代码公开可用且可合法分发的软件)。源代码来自开发人员,他们将 tarball 上传到他们的网站或源代码托管网站,例如SourceForge或者Github。鉴于您是初学者,请不要自行下载和编译软件包。
正如 Linus 所说,“只要有足够的眼光,所有的 bug 都是浅显的”(莱纳斯定律)。这也适用于恶意软件。任何人(是的,甚至包括你)都可以查看软件包的代码,检查 md5sum、GPG 密钥等,以确保软件不包含可能对你造成伤害的代码。软件包维护者(将源代码从互联网上发布并打包到存储库中的人)对软件包负责。然而,恶意软件在闭源软件中更难被发现咳嗽Skype咳嗽。如果您是偏执狂类型,请避免使用闭源软件。
如果您使用 Linux 发行版,它很可能已经配置了自己的存储库(例如 Ubuntu)。多个存储库可以存储在单个主机上,例如 multiverse、universe、restricted 等。同一主机上的不同存储库具有不同的软件包,因此不会发生冲突。这就是第三方存储库可能存在问题的原因。
一些基于其他发行版的发行版(在 Linux 世界中很常见)可能使用自己的存储库来存放他们使用的核心软件包,但用户需要的软件包则从他们所基于的发行版中获取。Linux Mint 就是一个很好的例子。Linux Mint 的服务器负载很小,并且只有 Mint 团队的核心软件包。但是,如果您想安装随机软件包(如 SuperTuxKart),Mint 会从 Ubuntu 存储库中获取它。软件包缓存会不时同步,因此您的计算机知道哪些软件包在哪里。
您可能使用相同的命令,也可能不使用相同的命令。命令因发行版使用的包管理器而异。Debian、Ubuntu 等使用 APT,而 Red Hat、Fedora 等使用 YUM。如果包名称相同,您很可能(仅在极少数情况下)获得相同的包。但是,您很可能获得不同的版本。这又取决于您的发行版使用哪个存储库。过时和/或稳定的存储库获得旧软件,前沿/新存储库获得最新版本。
包管理器处理所有包并确保一切都在正确的位置。
我建议你读一些手册页;)
欢迎来到 Linux 世界!