Skip to content

Use Ubuntu packages for FastTree and other programs? #127

@victorlin

Description

@victorlin

Context

FastTree is currently built from source for the nextstrain/base Docker image.

While working on #123, I discovered that it is also available as an Ubuntu package fasttree which can be installed directly via apt-get install fasttree. This made me think whether we should be installing from that directly instead of building from source.

Up-sides to installing from Ubuntu's APT package manager

  1. It reduces build times (upon cache miss) and prevents "re-inventing the wheel" by having to figure out software-specific build instructions.
  2. The package manager can define/install dependencies that would otherwise have to be handled separately within the Dockerfile.
  3. If the desired binaries are not yet available via the package manager, updating the package has the potential to benefit a wider community (any Ubuntu-using bioinformatician in addition to Nextstrain users).

Notes on the above, with examples:

  1. The Ubuntu package mafft is available for both amd64 and arm64, whereas we have a TODO to figure out how to build it from source.
  2. This helps prevent issues such as FastTreeDblMP doesn't work in docker #123.
  3. Two examples:
    1. Augur prefers FastTreeDblMP which is built for the Docker image. The Ubuntu fasttree package provides less-optimal versions. The FastTreeDblMP build instructions can be copied over to the Ubuntu package builder to benefit non-Nextstrain users.
    2. The Ubuntu package iqtree is only available as amd64. The Dockerfile also only downloads a pre-built binary for amd64. There is a TODO to build from source which would provide arm64-native IQ-TREE binaries in the nextstrain/base image. This could instead be done in the Ubuntu package builder to benefit non-Nextstrain users.

Considerations

  1. Are the Ubuntu package maintainers trustworthy?
  2. Can the version be pinned?
  3. Is it up to date with the latest version?
  4. Does it have the right binary?
  5. If the answer to (3) and/or (4) is "no", is it easy/quick to propose changes to the package and make a new version available?

I'm not familiar with Ubuntu packages, but it seems like all those questions can be answered by clicking around the package websites.

Metadata

Metadata

Assignees

No one assigned

    Labels

    proposalProposals that warrant further discussion

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions