【问题标题】:Is HomeBrew compatible with Debian GNU/Linux?HomeBrew 与 Debian GNU/Linux 兼容吗?
【发布时间】:2019-07-29 16:23:29
【问题描述】:

我有一块 BeagleBone Black 板。操作系统是 Debian GNU/Linux 版本 9。可以使用 HomeBrew 安装 Python 吗?还是 HomeBrew 仅适用于 Mac OS?

【问题讨论】:

  • 从标签信息来看,Homebrew 是 macOS 的包管理器。它提供了一个简单的界面来安装许多软件包。 请参阅here 了解更多信息。没有提到 Linux

标签: python debian homebrew beagleboneblack


【解决方案1】:

让我们从问题的最后一部分开始:

还是 HomeBrew 仅适用于 Mac OS?

Stack Overflow 的时间戳显示,这个问题是在 2019 年 3 月 7 日提出的。在此之前不久,一个合理的答案应该是:“是的,Homebrew 是为 macOS 设计的,但 Linuxbrew 是 Homebrew 的一个分支顾名思义:修改 Homebrew 以在 Linux 上工作”。

然而,在 2019 年 2 月 2 日——比提出问题的一个多月前——Homebrew 发布了 2.0.0 版。在他们博客上的公告中,他们以这句话开头:

今天我想宣布 Homebrew 2.0.0。最重要的 自 1.9.0 以来的更改是对 Linux 和 Windows 10 的官方支持 (带有适用于 Linux 的 Windows 子系统),正在运行 brew cleanup 自动,Homebrew/homebrew-core 中没有更多选项,并且删除 对 OS X Mountain Lion (10.8) 及更早版本的支持。

并进一步解释:

Linux 上的 Homebrew 以前称为“Linuxbrew”。你可以安装 它在你的主目录中,所以它不需要 sudo,并使用它来 安装主机发行版的包管理器执行的软件 不提供。 Linux 上的 Homebrew 使用自己的公式存储库: Homebrew/linuxbrew-core

https://brew.sh/2019/02/02/homebrew-2.0.0/

然后,在 2019 年 2 月 20 日,这条消息的 README.md 文件被添加到 Linuxbrew github 存储库根目录下的 README.md 文件的顶部:

Linuxbrew 已合并到 Homebrew 中

Linuxbrew/brew 已合并到 Homebrew/brew!现存的 Linuxbrew 的安装将自动迁移到 Homebrew。 Linuxbrew/brew 将不再更新。请参阅Homebrew documentation of Linuxbrew 和 自制 2.0.0 blog post.

https://github.com/Linuxbrew/brew/pull/942/files

总之,是的。在这个问题发布前不久,Homebrew 正式支持 Linux。问题中提到的特定发行版 Debian GNU/Linux 版本 9 包含在其中。但是在你可以使用它来安装 python 之前,你很可能需要安装 Homebrew 本身,因为它默认没有安装在 Debian 系统上。

Debian 9 甚至包括一个 'linuxbrew-wrapper' 包,它在 linuxbrew 被合并到 homebrew 之前就已经构建好了。

https://packages.debian.org/stretch/linuxbrew-wrapper

考虑到 linuxbrew 重新合并到 homebrew 中,它现在可以正常工作吗?好吧,我面前有一个最新的 Debian 9 虚拟机,让我们试一试吧:

$ sudo apt install linuxbrew-wrapper
[...]
The following additional packages will be installed:
  fonts-lato libruby2.3 rake ruby ruby-did-you-mean ruby-minitest ruby-net-telnet ruby-power-assert ruby-test-unit
  ruby2.3 rubygems-integration zip
Suggested packages:
  ri ruby-dev bundler
The following NEW packages will be installed:
  fonts-lato libruby2.3 linuxbrew-wrapper rake ruby ruby-did-you-mean ruby-minitest ruby-net-telnet ruby-power-assert
  ruby-test-unit ruby2.3 rubygems-integration zip
0 upgraded, 13 newly installed, 0 to remove and 0 not upgraded.
Need to get 6,447 kB of archives.
After this operation, 27.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
[...]
$ 

现在安装了吗?让我们问问dpkg:

$ dpkg --status linuxbrew-wrapper
Package: linuxbrew-wrapper
Status: install ok installed
[...]
Description: Homebrew package manager for Linux
 Linuxbrew is a fork of Homebrew, the Mac OS package manager, for Linux.
[...]
 This package provides Linuxbrew install scripts instead of linuxbrew itself.
Homepage: http://linuxbrew.sh/

所以它安装了这个包,但是这个包是一个带有安装脚本的“包装器”,而且这个包仍然有旧的 linuxbrew 描述。如果我们尝试运行 brew 会发生什么?

$ type brew
brew is /usr/bin/brew
$ brew

========================================================================
For the convenience of using linuxbrew it is recommended to update the
following environment variables after installing linuxbrew.

  PATH, MANPATH, INFOPATH 

Set HOMEBREW_BOTTLE_DOMAIN environment variable if you prefer some
homebrew mirror as your upstream.

(example: /usr/share/doc/linuxbrew-wrapper/examples/profile)
========================================================================
==> This script will install:
/home/parallels/.linuxbrew/bin/brew
/home/parallels/.linuxbrew/Library/...
/home/parallels/.linuxbrew/share/doc/homebrew
/home/parallels/.linuxbrew/share/man/man1/brew.1
/home/parallels/.linuxbrew/share/zsh/site-functions/_brew
/home/parallels/.linuxbrew/etc/bash_completion.d/brew
/home/parallels/.cache/Homebrew/

Press RETURN to continue or any other key to abort
==> Downloading and installing Linuxbrew...
[...]
==> Migrating from Linuxbrew/brew to Homebrew/brew
  Linuxbrew/brew has been merged into Homebrew/brew!
  Linuxbrew/brew will no longer be updated.
  Your git remote has been changed from
     https://github.com/Linuxbrew/brew
  to https://github.com/Homebrew/brew
  See the blog post at https://brew.sh/2019/02/02/homebrew-2.0.0/
Updating Homebrew...
[...]
==> Tapping homebrew/core
Cloning into '/home/parallels/.linuxbrew/Library/Taps/homebrew/homebrew-core'...
[...]
Warning: /home/parallels/.linuxbrew/bin is not in your PATH.
==> Installation successful!
==> Next steps
Install the Linuxbrew dependencies:

Debian, Ubuntu, etc.:
  `sudo apt-get install build-essential`

Fedora, Red Hat, CentOS, etc.:
  `sudo yum groupinstall 'Development Tools'`

See http://linuxbrew.sh/#dependencies for more information.

Add to your ~/.bash_profile by running
  echo 'export PATH="/home/parallels/.linuxbrew/bin:$PATH"' >>~/.bash_profile
  echo 'export MANPATH="/home/parallels/.linuxbrew/share/man:$MANPATH"' >>~/.bash_profile
  echo 'export INFOPATH="/home/parallels/.linuxbrew/share/info:$INFOPATH"' >>~/.bash_profile

We recommend you install GCC by running `brew install gcc`.
Run `brew help` to get started
Further documentation: https://git.io/brew-docs
==> Homebrew has enabled anonymous aggregate user behaviour analytics
Read the analytics documentation (and how to opt-out) here:
  https://git.io/brew-analytics
Homebrew 2.0.6
Homebrew/linuxbrew-core (git revision 69e4; last commit 2019-03-31)

很酷,它会自动更新以从 Linuxbrew 过渡到 Homebrew。值得注意的是,它仍然使用目录名称~/.linuxbrew 来保存其文件。我们需要做的就是完成安装:

  • 安装安装输出中提到的任何 apt 依赖项。 Homebrew 从源代码构建东西,您的 Linux 发行版可以提供它想要的大部分开发工具链。

  • 更新一些“路径”环境变量。 Homebrew 正在您的文件系统上为已安装的软件添加一个新位置,与 /bin 和 /usr/bin 等位置分开,因为您的操作系统包管理器管理这些目录的内容。将 Homebrew 的安装位置添加到这些路径可以找到安装了 Hombrew 的软件。

  • brew install gcc。虽然他们要求您的操作系统提供大部分开发工具链,但他们显然认为要求您安装 brew 管理的编译器很重要。这是有道理的,因为您的机器用来构建其他自制公式的编译器可能会与他们发布这些公式时正在测试的编译器同步。

原来的问题还问:

可以使用 HomeBrew 安装 Python 吗?

让我们试试吧:

$ brew install python
==> Installing dependencies for python: patchelf, pkg-config, gdbm, openssl, gpatch, ncurses, readline, sqlite, xz, bzip2, libffi and zlib
[...]
==> Installing python
==> Downloading https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz
[...]
==> Caveats
Python has been installed as
  /home/parallels/.linuxbrew/bin/python3
[...]
See: https://docs.brew.sh/Homebrew-and-Python
[...]
parallels@debian-gnu-linux-vm:~$

看起来你可以!

那么,既然可以使用 apt 来安装 python,为什么还要费心使用 Homebrew 来安装 python?好吧,围绕此类问题进行了全面的讨论和辩论,但这是简短的答案...

apt安装的python:

$ /usr/bin/python3 --version
Python 3.5.3

自制安装的python:

$ ~/.linuxbrew/bin/python3 --version
Python 3.7.3

3.7.3 是我写这篇文章时的当前 python 版本。 Apt 管理的软件包会在几个月或几年的时间范围内更新。 Homebrew 管理的软件包以天或小时为单位更新。

为什么我们会看到 apt 和 homebrew 之间的巨大差异?将 homebrew 视为提供一个分层在 apt 提供的系统之上的系统。许多操作系统级别的实用程序都依赖于 apt 管理的 python 安装,Debian 团队正在小心不要破坏它们。但也许你正在做一些需要新功能的东西,而这些新功能只有最新的 python 版本才有。这就是 Homebrew 旨在解决的问题。

【讨论】:

    【解决方案2】:

    在 Linux 上,您可以使用名为 Linuxbrew 的 Homebrew 分支:

    Homebrew 包管理器可用于 Linux 和 Windows 10,使用适用于 Linux 的 Windows 子系统 (WSL)。在 Linux 或 Windows 上运行时,Homebrew 被称为 Linuxbrew。它可以安装在你的主目录中,在这种情况下它不使用 sudo。

    【讨论】:

    • Linuxbrew 已合并到 Homebrew 中
    【解决方案3】:

    不,您不能使用 HomeBrew 在 Debian Linux 上安装,因为它仅适用于 MacO。

    python 也已经安装在 Debian Linux 发行版中,例如 Ubuntu。但是,可以使用 apt-get 命令安装 Linux 发行版中提供的特定版本。我们可以使用 apt-cache 命令检查 Python(预构建)可用包的名称。然而,这种安装额外 Python 版本的方式可能会导致潜在问题(与 OS 发行版的原始安装版本冲突)。因此,请注意这一点。

     $ apt-cache search python | less
     $ sudo apt-get install pythonX.X
    

    相反,最好继续安装所需版本的 Python 源代码。

    有关如何从源代码安装的更多信息和说明,请点击此链接: http://www.rasadacrea.com/en/web-training-courses/howto-install-python

    【讨论】:

      【解决方案4】:

      Homebrew 仅适用于 MacOS。

      Debian 使用 apt,然而,另一个包管理器,从快速的谷歌搜索来看,你的开发板似乎有它。

      如果有可以运行的python版本,它应该可以通过类似的命令安装

      sudo apt-get update
      sudo apt-get install python 
      

      对于python3:

      sudo apt-get install python3
      

      但是,python 完全有可能已经与操作系统捆绑在一起,在这种情况下,您不必安装 python。要检查是否/安装了什么版本的python,您可以执行以下操作:

      python --version 
      

      或者对于python3:

      python3 --version 
      

      【讨论】:

        猜你喜欢
        • 2019-10-28
        • 2012-01-08
        • 2010-10-27
        • 1970-01-01
        • 1970-01-01
        • 2014-12-13
        • 2018-07-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多