Chapter 11Lesson 03155–210 min

APT, Yum, Raw, RubyGems, Composer, and Operating-System or Generic Artifact Formats: Configuration, Design Choices, and Tradeoffs

Choose native repository formats or Raw deliberately by balancing client protocol, metadata/signing, repository topology, namespace ownership, retention, trust, endpoint count, recovery, and current Nexus version/edition constraints.

Format selectionSigning & TLSRepository topologyRetentionTradeoffs

Learning objectives

  • Choose Raw or a native repository format from client requirements, not operator convenience.
  • Evaluate repository topology differences, including APT's lack of groups and current Composer version boundaries.
  • Design signing and TLS controls without confusing repository metadata trust with package trust.
  • Balance endpoint consolidation, repository isolation, retention, and recovery complexity.
  • Defend a design using observable Nexus and client behavior.

Design rule. Start with the consuming client and the metadata it requires. “Can Nexus store this file?” is a weaker question than “Can the real client resolve, authenticate, verify, update, and recover this artifact through the chosen repository format?”

1. Raw simplicity versus native package-manager behavior

Decision Choose native format when... Choose Raw when...
Discovery The client expects version/dependency/index metadata. The consumer already knows the exact path or receives it from another control plane.
Trust The ecosystem uses repository/package signatures and native verification workflows. Integrity/signing is handled externally and the consumer validates exact files itself.
Updates The client asks “what versions/updates exist?” The release process publishes immutable paths and an external catalog points at them.
Tooling UX Developers should use standard apt/dnf/gem/composer commands. Automation uses HTTP/SDK downloads and does not need dependency resolution.
Metadata ownership Nexus should parse/generate/cache ecosystem metadata. Nexus should preserve bytes/path without interpreting them.

2. Repository topology is format-specific

A familiar “hosted + proxy + group” pattern is attractive because it minimizes client configuration, but it is not universally available. RubyGems, Yum, and Raw support the three types. APT currently supports hosted and proxy only. Composer proxy exists from 3.75; hosted/group from 3.95.0.

For APT, one-client-endpoint consolidation therefore requires a different architecture—such as a carefully designed reverse-proxy layer or a repository choice that does not assume an APT group recipe. Do not fabricate an unsupported Nexus group merely to make the diagram symmetric.

Topology decisions follow the format contract
flowchart TD
REQ[Consumer requirements] --> META{Needs native metadata?}
META -->|No| RAW[Raw hosted/proxy/group]
META -->|Yes| FMT{Which ecosystem?}
FMT --> APT[APT hosted/proxy - no group]
FMT --> YUM[Yum hosted/proxy/group]
FMT --> GEM[RubyGems hosted/proxy/group]
FMT --> COM[Composer v2 - verify version/edition]
APT --> TRUST[Client trust + routing]
YUM --> TRUST
GEM --> TRUST
COM --> TRUST
RAW --> TRUST

3. Repository signing versus transport TLS

TLS authenticates the network endpoint and protects transport. Repository metadata signatures authenticate metadata according to an ecosystem's trust model. They solve different problems and should normally be used together.

Format Repository metadata trust Package trust consideration
APT Hosted metadata is signed with configured GPG key; proxy can pass through or re-sign depending on configuration. Nexus does not sign individual Debian packages; package signatures/provenance are separate.
Yum Proxy/group generated repodata can be signed; clients can use repo_gpgcheck=1. RPM packages can be independently signed and checked with gpgcheck=1.
RubyGems Native index/gem metadata plus HTTPS/authentication; ecosystem package signing exists but is separate from Nexus repository routing. Do not treat checksum or source URL alone as trusted publisher identity.
Composer Composer metadata plus transport/auth; package distribution URLs and hashes are part of Composer resolution. Package source/provenance remains a separate governance question.
Raw No generated package trust metadata. Publish detached signature/checksum/manifests explicitly if consumers require them.

4. One endpoint versus per-format isolation

Within a format, groups can reduce client configuration. Across formats, a “single universal endpoint” is usually an illusion because each package manager speaks a different path/protocol anyway. A useful design may use one hostname with distinct repository paths, while still separating formats and lifecycle policies internally.

Isolation can also reflect blast radius. OS packages may have longer retention and stricter signing controls than disposable generic CI bundles. RubyGems internal packages may need namespace protection from public upstreams. Raw firmware may require immutable path naming and detached signatures. Separate repositories make those policies legible.

5. OS package lifecycle and retention are operational choices

Operating-system package repositories often serve long-lived fleets. Removing a package that an old host still needs can turn rollback or rebuild into an incident. Retention therefore belongs to compatibility policy, not only storage cost. Record supported OS versions, architectures, release channels, and rollback horizons before applying cleanup.

For Raw, retention is entirely your own contract. An immutable path such as firmware/device-a/2.4.1/image.bin is easier to reason about than repeatedly overwriting latest.bin. For gems and Composer packages, immutable version discipline similarly improves reproducibility.

6. Composer current-version and edition tradeoff

Composer is the chapter's best example of why version-aware design matters. A design document copied from 2024 may say “native Composer proxy only, Pro only.” Current 3.95 documentation adds hosted and group. Current CE onboarding says Composer is included among formats now available to Community, while the Composer page still contains Pro-only wording. A production ADR should therefore record the exact build, edition, observed recipes, and licensing evidence—not merely “Nexus 3”.

7. Worked scenario: mixed Linux, Ruby, PHP, and firmware estate

Assume 120 Linux hosts, two Ruby services, one PHP service, and embedded devices receiving signed firmware. The team wants “one artifact platform” but not necessarily one repository.

Artifact family Recommended Nexus pattern Reason
Ubuntu internal packages APT hosted + appropriate APT proxy endpoints Native dependency/index/signing semantics; do not assume a group.
RPM fleet packages Yum hosted + proxy + group if one client URL is valuable Native repodata and optional Nexus-generated metadata signing for proxy/group.
Ruby dependencies RubyGems hosted + proxy + group, internal hosted first Native gem UX plus internal namespace precedence.
PHP Composer Composer group only after verifying 3.95+ and entitlement; otherwise supported proxy/design alternative Composer v2 semantics and version-sensitive hosted/group capability.
Firmware and manifests Raw hosted with versioned immutable paths Client already knows exact URL; no package-manager dependency metadata is needed.

The common platform is Nexus, but the repository contract remains format-specific.

8. Security and least privilege

  • Give CI publishers add/edit only to their hosted target, not proxy/group repositories.
  • Give consumers read/browse only to the endpoints they need.
  • Keep GPG private keys restricted to the signing system/Nexus configuration that actually needs them; distribute only public keys.
  • Do not disable APT/Yum signature verification globally to “fix” a trust error.
  • For Raw, require explicit checksum/signature verification in the consuming automation if authenticity matters.
  • Close public fallbacks when internal namespaces must not resolve from external registries.

9. Recovery consequences of format choice

Backups must preserve Nexus database/configuration state and blob content consistently regardless of format. Native metadata can sometimes be regenerated from stored package content, but that does not make blob-only backups complete. Raw has less generated metadata, yet its path names and repository configuration still live inside Nexus state. Chapter 25 will handle full backup/restore procedures; here, record the dependency.

10. Decision worksheet

Question Evidence to collect
What client protocol consumes the artifact? Actual client command/config and expected repository URL shape.
What metadata must exist? APT Packages/Release, Yum repodata, gem index, Composer v2 metadata, or none for Raw.
What repository types are supported? Current Nexus format matrix and live recipe list.
What trust roots exist? TLS CA, APT/Yum metadata key, RPM/package signing key, checksum/signature policy.
Can public fallback occur? Client source list plus proxy/group membership and member order.
What must survive recovery? Package bytes, database/config, keys, repository settings, and client routing documentation.

Knowledge check

Why might Raw reduce operator work initially but increase client complexity?

Why is APT topology different from Yum topology in current Nexus?

Should TLS replace APT/Yum metadata signatures?

What should an ADR record for Composer in 2026?

What is the safest default for generic versioned files in Raw?

11. Summary and next step

Repository choice is an architecture decision tied to the client protocol, metadata lifecycle, trust model, and recovery requirements. Native formats improve package-manager fidelity; Raw deliberately trades those semantics for path-level flexibility.

Lesson 4 applies this model to realistic failures and shows how to diagnose the wrong layer.

Official references and version notes

Version-sensitive statements were rechecked on 2026-08-26. The chapter uses Nexus Repository 3.95.0 as the verified feature floor because current Sonatype release notes explicitly list it as released on 2026-08-05 and document Composer hosted/group support there. Some adjacent Sonatype download/version-status pages still lag at 3.94.1, so record the exact version/edition on your lab instance before applying version-specific steps. If you are continuing with a later 3.95.x instance from a prior chapter, it satisfies this chapter's 3.95.0 feature floor. Mandatory labs use Community-compatible RubyGems and Raw features and do not depend on the documentation-sensitive Composer entitlement boundary.

Keep the academy open

Support free, practical DevOps education.

Every lesson is designed to remain readable in a browser, downloadable from GitHub, and usable without a paid learning platform. Contributions help expand and maintain the curriculum.

Ethereum / ERC-20
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0 Send only Ethereum/ERC-20 compatible assets to this address.