[pbs-devel] Superseded: Re: [PATCH proxmox-offline-mirror] mirror: add support for trixie repositories

Shannon Sterz s.sterz at proxmox.com
Fri Aug 29 10:24:37 CEST 2025


Superseded-by: https://lore.proxmox.com/all/20250829082323.55299-1-s.sterz@proxmox.com/T/#t

On Wed Aug 27, 2025 at 4:24 PM CEST, Shannon Sterz wrote:
> Signed-off-by: Shannon Sterz <s.sterz at proxmox.com>
> ---
>  src/bin/proxmox-offline-mirror.rs | 99 +++++++++++++++++++++----------
>  1 file changed, 69 insertions(+), 30 deletions(-)
>
> diff --git a/src/bin/proxmox-offline-mirror.rs b/src/bin/proxmox-offline-mirror.rs
> index 6a5063a..9aaf058 100644
> --- a/src/bin/proxmox-offline-mirror.rs
> +++ b/src/bin/proxmox-offline-mirror.rs
> @@ -46,6 +46,7 @@ impl Display for Distro {
>  }
>
>  enum Release {
> +    Trixie,
>      Bookworm,
>      Bullseye,
>      Buster,
> @@ -54,6 +55,7 @@ enum Release {
>  impl Display for Release {
>      fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
>          match self {
> +            Release::Trixie => write!(f, "trixie"),
>              Release::Bookworm => write!(f, "bookworm"),
>              Release::Bullseye => write!(f, "bullseye"),
>              Release::Buster => write!(f, "buster"),
> @@ -135,6 +137,17 @@ fn derive_debian_repo(
>          skip_sections,
>      };
>      let url = match (release, variant) {
> +        (Release::Trixie, DebianVariant::Main) => "http://deb.debian.org/debian trixie",
> +        (Release::Trixie, DebianVariant::Security) => {
> +            "http://deb.debian.org/debian-security trixie-security"
> +        }
> +        (Release::Trixie, DebianVariant::Updates) => "http://deb.debian.org/debian trixie-updates",
> +        (Release::Trixie, DebianVariant::Backports) => {
> +            "http://deb.debian.org/debian trixie-backports"
> +        }
> +        (Release::Trixie, DebianVariant::Debug) => {
> +            "http://deb.debian.org/debian-debug trixie-debug"
> +        }
>          (Release::Bookworm, DebianVariant::Main) => "http://deb.debian.org/debian bookworm",
>          (Release::Bookworm, DebianVariant::Security) => {
>              "http://deb.debian.org/debian-security bookworm-security"
> @@ -176,6 +189,13 @@ fn derive_debian_repo(
>
>      let url = format!("{url} {components}");
>      let key = match (release, variant) {
> +        (Release::Trixie, DebianVariant::Security) => {
> +            "/usr/share/keyrings/debian-archive-trixie-security-automatic.gpg"
> +        }
> +        (Release::Trixie, DebianVariant::Updates) | (Release::Trixie, DebianVariant::Backports) => {
> +            "/usr/share/keyrings/debian-archive-trixie-automatic.gpg"
> +        }
> +        (Release::Trixie, _) => "/usr/share/keyrings/debian-archive-trixie-stable.gpg",
>          (Release::Bookworm, DebianVariant::Security) => {
>              "/usr/share/keyrings/debian-archive-bookworm-security-automatic.gpg"
>          }
> @@ -217,6 +237,7 @@ fn action_add_mirror(config: &SectionConfigData) -> Result<Vec<MirrorConfig>, Er
>          let dist = read_selection_from_tty("Select distro to mirror", distros, None)?;
>
>          let releases = &[
> +            (Release::Trixie, "Trixie"),
>              (Release::Bookworm, "Bookworm"),
>              (Release::Bullseye, "Bullseye"),
>              (Release::Buster, "Buster"),
> @@ -238,7 +259,9 @@ fn action_add_mirror(config: &SectionConfigData) -> Result<Vec<MirrorConfig>, Er
>                      read_selection_from_tty("Select repository variant", variants, Some(0))?;
>
>                  let default_components = match release {
> -                    Release::Bookworm => "main contrib non-free non-free-firmware",
> +                    Release::Bookworm | Release::Trixie => {
> +                        "main contrib non-free non-free-firmware"
> +                    }
>                      _ => "main contrib non-free",
>                  };
>
> @@ -259,6 +282,7 @@ fn action_add_mirror(config: &SectionConfigData) -> Result<Vec<MirrorConfig>, Er
>                  }
>
>                  let releases = match release {
> +                    Release::Trixie => vec![(CephRelease::Squid, "Squid (19.x)")],
>                      Release::Bookworm => vec![
>                          (CephRelease::Quincy, "Quincy (17.x)"),
>                          (CephRelease::Reef, "Reef (18.x)"),
> @@ -286,41 +310,46 @@ fn action_add_mirror(config: &SectionConfigData) -> Result<Vec<MirrorConfig>, Er
>                      Some(releases.len() - 1),
>                  )?;
>
> -                let (base_url, components) = if matches!(release, Release::Bookworm) {
> -                    let variants = &[
> -                        (ProxmoxVariant::Enterprise, "Enterprise repository"),
> -                        (ProxmoxVariant::NoSubscription, "No-Subscription repository"),
> -                        (ProxmoxVariant::Test, "Test repository"),
> -                    ];
> +                let (base_url, components) =
> +                    if matches!(release, Release::Bookworm | Release::Trixie) {
> +                        let variants = &[
> +                            (ProxmoxVariant::Enterprise, "Enterprise repository"),
> +                            (ProxmoxVariant::NoSubscription, "No-Subscription repository"),
> +                            (ProxmoxVariant::Test, "Test repository"),
> +                        ];
>
> -                    let variant =
> -                        read_selection_from_tty("Select repository variant", variants, Some(0))?;
> +                        let variant = read_selection_from_tty(
> +                            "Select repository variant",
> +                            variants,
> +                            Some(0),
> +                        )?;
>
> -                    match variant {
> -                        ProxmoxVariant::Enterprise => {
> -                            use_subscription = Some(ProductType::Pve);
> -                            (
> -                                "https://enterprise.proxmox.com/debian/ceph",
> -                                "enterprise".to_string(),
> -                            )
> +                        match variant {
> +                            ProxmoxVariant::Enterprise => {
> +                                use_subscription = Some(ProductType::Pve);
> +                                (
> +                                    "https://enterprise.proxmox.com/debian/ceph",
> +                                    "enterprise".to_string(),
> +                                )
> +                            }
> +                            ProxmoxVariant::NoSubscription => (
> +                                "http://download.proxmox.com/debian/ceph",
> +                                "no-subscription".to_string(),
> +                            ),
> +                            ProxmoxVariant::Test => (
> +                                "http://download.proxmox.com/debian/ceph",
> +                                "test".to_string(),
> +                            ),
>                          }
> -                        ProxmoxVariant::NoSubscription => (
> +                    } else {
> +                        (
>                              "http://download.proxmox.com/debian/ceph",
> -                            "no-subscription".to_string(),
> -                        ),
> -                        ProxmoxVariant::Test => (
> -                            "http://download.proxmox.com/debian/ceph",
> -                            "test".to_string(),
> -                        ),
> -                    }
> -                } else {
> -                    (
> -                        "http://download.proxmox.com/debian/ceph",
> -                        read_string_from_tty("Enter repository components", Some("main test"))?,
> -                    )
> -                };
> +                            read_string_from_tty("Enter repository components", Some("main test"))?,
> +                        )
> +                    };
>
>                  let key = match release {
> +                    Release::Trixie => "/etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg",
>                      Release::Bookworm => "/etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg",
>                      Release::Bullseye => "/etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg",
>                      Release::Buster => "/etc/apt/trusted.gpg.d/proxmox-release-buster.gpg",
> @@ -353,6 +382,15 @@ fn action_add_mirror(config: &SectionConfigData) -> Result<Vec<MirrorConfig>, Er
>
>                  // TODO enterprise query for key!
>                  let url = match (release, variant) {
> +                    (Release::Trixie, ProxmoxVariant::Enterprise) => format!(
> +                        "https://enterprise.proxmox.com/debian/{product} trixie {product}-enterprise"
> +                    ),
> +                    (Release::Trixie, ProxmoxVariant::NoSubscription) => format!(
> +                        "http://download.proxmox.com/debian/{product} trixie {product}-no-subscription"
> +                    ),
> +                    (Release::Trixie, ProxmoxVariant::Test) => {
> +                        format!("http://download.proxmox.com/debian/{product} trixie {product}test")
> +                    }
>                      (Release::Bookworm, ProxmoxVariant::Enterprise) => format!(
>                          "https://enterprise.proxmox.com/debian/{product} bookworm {product}-enterprise"
>                      ),
> @@ -390,6 +428,7 @@ fn action_add_mirror(config: &SectionConfigData) -> Result<Vec<MirrorConfig>, Er
>                  };
>
>                  let key = match release {
> +                    Release::Trixie => "/etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg",
>                      Release::Bookworm => "/etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg",
>                      Release::Bullseye => "/etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg",
>                      Release::Buster => "/etc/apt/trusted.gpg.d/proxmox-release-buster.gpg",





More information about the pbs-devel mailing list