Linux 中的包、存储库和安装过程

Linux 中的包、存储库和安装过程

我在互联网上阅读了很多关于如何在 Linux(例如 Ubuntu)上安装程序的文章,但我仍然很困惑!

到目前为止我所理解的是:

  1. 首先,我们应该添加包含我们想要的包的存储库。在 Ubuntu 中,这将通过取消/etc/apt/sources.list文件中相关行的注释来完成。

  2. 然后我们应该通过执行来更新我们的存储库的包列表apt-get update

  3. 最后,通过执行安装我们的程序apt install

……但我还是不明白!

  1. 当我们取消注释中的存储库时sources.list,这是否意味着我们告诉操作系统:“在我的计算机上下载此存储库”?是否需要下载存储库?如果没有,那么取消对sources.list中一行的注释会发生什么?

  2. 具体是做什么apt-get update的呢?正如我读到的:

     apt-get update downloads the package lists from the repositories and
    "updates" them to get information on the newest versions of packages
     and their dependencies.
    

这究竟意味着什么?我们有一个包含一些包的存储库;这是否意味着某些存储库可能已过时?那么为什么他们不更新服务器上的存储库,而这些存储库始终是最新的并且没有人需要这样做 apt-get update呢?

答案1

当我们取消注释中的存储库时sources.list,这是否意味着我们告诉操作系统:“在我的计算机上下载此存储库”?

不。

是否需要下载存储库?

通常不会。除非您想下载可能数百GB的数据。

如果没有,那么取消对sources.list中一行的注释会发生什么?

没什么,然而

我们有一个存储库,它有一些软件包,这是否意味着某些存储库可能已过时?

是的,存储库可能会过时,但这不是这里讨论的内容。

那么为什么他们不更新服务器上始终最新的存储库并且没有人需要执行 apt-get update 呢?

但事实并非如此。发生的事情是这样的:

  1. 存储库包含包,这是事实,但它们还包含有关这些包的信息(元数据):包名称、版本、包的依赖项、包包含的文件列表、包的哈希值等等。
  2. apt-get update下载此元数据。
  3. apt-get install然后upgrade,当您告诉它安装软件包时,它会使用此元数据 - 它会检查可用版本,检查是否需要安装其他软件包作为依赖项,等等。
  4. 当存储库更新时,元数据将更新为,但之前下载的本地副本不会。这是很自然的,您不希望您的 PC 不断检查服务器是否元数据副本已过时。
  5. 现在,下次您需要安装软件包时,您可能会遇到问题,因为您的系统具有过时的元数据,因此它无法找出正确的操作。
  6. 然后你需要运行apt-get update来更新这个元数据。
  7. 正如我所说,当您取消注释源行时,什么也没有发生。下次运行时apt-get update,它也会从该源下载元数据。下次当您安装、升级或删除软件包时,apt 会在解决问题时考虑额外的元数据。

这就是 apt 的工作原理。另一方面,Yum 会在您添加、删除或升级软件包时检查更新的元数据并下载它。两种方法都有其优点和缺点。

答案2

长话短说

如果您来自 Windows,您可能会有点困惑,因为在 Windows 中,您可以从任何地方下载并安装软件。在 Linux 中这也是可能的,但只能作为最后的手段! (阅读长版本以获取更多详细信息)

以下是对您问题的简短回答:

  1. “取消注释”存储库使其可用。正如你已经困惑的那样,不要取消注释任何存储库除非您找到可靠的来源告诉您专门这样做才能安装特定的软件。 (再次:阅读长版本)

  2. 通过取消注释或添加 PPA(再次:阅读长版本)来添加软件源后,必须更新本地可用软件列表,以确保您不会遇到所谓的“依赖地狱”。

因此,在 Ubuntu 上安装软件时请遵循以下指南:

长版本:

16.04 及更高版本:Ubuntu Software Center已重命名为Ubuntu Software

(其他一切保持不变)

最重要的是要记住,有一天您将不得不删除要安装的这个软件,所以始终使用与安装方法相同的拆卸方法。

因此,在 Ubuntu 上安装软件时请使用以下优先级:

  1. 忘记从各地网站下载和安装的知识,并使用以下有关如何在 Ubuntu 下安装软件的优先级列表,因为您现在拥有(并希望保持)稳定的系统。
  2. 对于初级用户:使用 Ubuntu 的前 3 个月,最多一年
    使用以下命令从标准 Ubuntu 存储库安装/删除图形用户界面Ubuntu 软件(中心)。

    根据下面的屏幕截图,单击左上角的破折号,输入software,单击Ubuntu Software(中心)。

    打开 Ubuntu 软件中心

    Ubuntu 软件(中心)打开:

    Ubuntu 软件中心启动

    左侧有大量的应用程序类别可供选择。或者在右上角的搜索框中输入软件的名称(这就是我们将要使用的)

    垃圾软件

    我和你一样惊讶,但是Ubuntu 确实有垃圾软件,:-)所以只需点击你想要的垃圾,点击“安装”,稍等一下就完成了!

    使用此方法删除软件,点击第二个屏幕截图中的“已安装”按钮,点击你想要卸载的垃圾,然后点击“卸载”按钮!十分简单。

    如果该软件不存在,请不要从其他地方下载它并使用下面的一些更高级的功能来安装它!你是一个初学者!

  3. (中级用户,6个月-1年经验)
    使用途易aptitude
    Ctrl+ Alt+T转到终端并输入:

    sudo aptitude
    

    并按Enter

    如果得到aptitude: command not found,请输入:

    sudo apt install aptitude
    

    安装 aptitude 并等待,直到没有任何动静然后类型:

    sudo aptitude
    

    开始它。

    屏幕截图能力

    这仍然有点熟悉:你可以使用鼠标,但这就像你回到了万维网发明之前的 1988 年。现在第一个障碍来了:实时FM通过输入以下内容来获取资质:

    man aptitude 
    

    这个很重要! aptitude可以让你做更高级的事情,却是一个背后捅刀子的仆人!

  4. 现在来看看更高级的东西:(仅在本网站上拥有 >5000 声誉 + 至少一枚金徽章的知识渊博的人员指导下使用)

    Ctrl+ Alt+T并输入:

    • apt install szPackageName安装
    • apt purge szPackageName完全地消除
    • apt remove szPackageName要删除该应用程序,保持它的配置文件。 (意思是:你稍后可能需要重新安装而且你只是花了几个小时配置该死的东西,并且不想丢失配置!)
  5. 确实很先进的东西:(仅在神仙指导下使用,即:此网站上拥有> 10000声望的知识渊博的人+一些金徽章)

    A。下载并安装 .deb 文件:使用dpkg --install szPackageNamedpkg --purge szPackageNamedpkg --remove szPackageName安装、完全删除和删除而无需配置文件。

    b.安装 PPA:明确遵循说明。如果出现任何问题,请复制粘贴错误,在此网站上提问,插入您正在关注的问题和答案的链接,并向不朽者报告! ;-)

  6. “只需从源代码下载并构建!!!”

    可能是开发人员告诉您这一点,但他对安装和维护稳定的系统一无所知,没有任何问题,但有地球上最酷的东西!
    取决于你的观点,是用爱拥抱还是像瘟疫一样躲避。

    所以如果您确实从源代码下载并构建, 使用CheckInstall而不是为了make install将来能够更容易地删除这个软件,就像这个例子一样 不管开发商说什么!

来源

相关内容