Upgrade all the things

Overview

Introduction

Note This is a fork of topgrade by r-darwish to keep it maintained.

Keeping your system up to date usually involves invoking multiple package managers. This results in big, non-portable shell one-liners saved in your shell. To remedy this, Topgrade detects which tools you use and runs the appropriate commands to update them.

Installation

Packaging status

Other systems users can either use cargo install or the compiled binaries from the release page. The compiled binaries contain a self-upgrading feature.

Topgrade requires Rust 1.60 or above.

Usage

Just run topgrade.

Visit the documentation at topgrade-rs.github.io for more information.

Warning Work in Progress

Configuration

See config.example.toml for an example configuration file.

Configuration Path

The configuration should be placed in the following paths depending on the operating system:

  • Windows - %APPDATA%/topgrade.toml
  • macOS and other Unix systems - ${XDG_CONFIG_HOME:-~/.config}/topgrade.toml

Custom Commands

Custom commands can be defined in the config file which can be run before, during, or after the inbuilt commands, as required. By default, the custom commands are run using a new shell according to the $SHELL environment variable on unix (falls back to sh) or pwsh on windows (falls back to powershell).

On unix, if you want to run your command using an interactive shell, for example to source your shell's rc files, you can add -i at the start of your custom command. But note that this requires the command to exit the shell correctly or else the shell will hang indefinitely.

Remote Execution

You can specify a key called remote_topgrades in the configuration file. This key should contain a list of hostnames that have Topgrade installed on them. Topgrade will use ssh to run topgrade on remote hosts before acting locally. To limit the execution only to specific hosts use the --remote-host-limit parameter.

Contribution

Problems or missing features?

Open a new issue describing your problem and if possible provide a solution.

Missing a feature or found an unsupported tool/distro?

Just let us now what you are missing by opening an issue. For tools, please open an issue describing the tool, which platforms it supports and if possible, give us an example of its usage.

Want to contribute to the code?

Just fork the repository and start coding.

Contribution Guidelines

  • Check if your code passes cargo fmt and cargo clippy.
  • Check if your code is self explanatory, if not it should be documented by comments.

Roadmap

  • Add a proper testing framework to the code base.
  • Add unit tests for package managers.
  • Split up code into more maintainable parts, eg. putting every linux package manager in a own submodule of linux.rs.
Comments
  • Paru issue and Distrobox again !

    Paru issue and Distrobox again !

    What did you expect to happen?

    For it to work....

    What actually happened?

    Failed for Paru and Distrobox..

    Additional Details

    • XeroLinux an Arch based disro
    • Installed from AUR
    • Topgrade 10.1.2
    ― 18:02:55 - Distrobox ――――――――――――――――――――――――――――――――――――――――――――――――――――――――
     2022-11-06T16:02:55.916Z DEBUG topgrade::executor   > Running "/usr/bin/distrobox" "upgrade" "--all"
    Missing dependency: we need a container manager.
    Please install one of podman or docker.
    You can follow the documentation on:
            man distrobox-compatibility
    or:
            https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md
    

    An error occurred 2022-11-06T16:02:55.923Z DEBUG topgrade::runner > Step "distrobox" failed: exit status: 127 2022-11-06T16:02:55.923Z DEBUG topgrade::terminal > Desktop notification: distrobox failed

    ―― 18:02:46 - System update ―――――――――――――――――――――――――――――――――――――――――――――――――――― 2022-11-06T16:02:46.641Z DEBUG topgrade::utils > Cannot find "powerpill" 2022-11-06T16:02:46.641Z DEBUG topgrade::utils > Detected "/usr/bin/paru" as "paru" /usr/bin/paru: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory 2022-11-06T16:02:46.641Z DEBUG topgrade::executor > Running "/usr/bin/paru" "--pacman" "pacman" "-Syu" "--nodevel" "--noconfirm" /usr/bin/paru: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory 2022-11-06T16:02:46.641Z DEBUG topgrade::runner > Step "System update" failed: exit status: 127 2022-11-06T16:02:46.641Z DEBUG topgrade::terminal > Desktop notification: System update failed

    opened by TechXero 50
  • custom commands stopped and topgrade exited

    custom commands stopped and topgrade exited

    What did you expect to happen?

    Topgrade runs all custom commands

    What actually happened?

    Topgrade stops after the first custom command when starting the second one and send itself in the background without continuing the scripts.

    Topgrade hangs then in the background without continuing.

    Downgrading to an older version did also not work, because it is automatically updated and I could not find an option to disable self-update.

    So topgrade could not be used anymore.

    Additional Details

    • Which operating system or Linux distribution are you using? Ubuntu 22.04
    • How did you install Topgrade? Download from Github
    • Which version are you running? Topgrade 10.3.2
    Ubuntu-22.04> reini@ubuntu:~$ topgrade --only custom_commands -v
    DEBUG Configuration at /home/reini/.config/topgrade.toml
    DEBUG Path .config/PrusaSlicer expanded to .config/PrusaSlicer
    DEBUG Loaded configuration: ConfigFile { pre_sudo: None, pre_commands: Some({}), post_commands: None, commands: Some({"01 Update downloaded apps": "~/bin/update_downloaded-apps.sh", "12 Create/update ~/.ssh/config.known_hosts": "~/.config/topgrade-ssh_config.known-hosts", "13 Create/update ~/.ssh/pssh_lists": "~/.config/topgrade-pssh_lists", "14 Clone/update Git repositories (with MyRepos)": "~/.config/topgrade-myrepos", "20 Sync home with git": "~/bin/sync-home-with-git.sh", "50 Backup": "~/bin/backup-user", "90 Update & backup home routers": "~/.config/topgrade-update_routers", "99 Status of Git repositories (with MyRepo)": "~/.config/topgrade-myrepos --status"}), git_repos: None, predefined_git_repos: None, disable: Some([Myrepos]), ignore_failures: None, remote_topgrades: Some(["octoprint.lan"]), remote_topgrade_path: None, ssh_arguments: Some("-o ConnectTimeout=2"), git_arguments: None, tmux_arguments: None, set_title: None, display_time: None, display_preamble: None, assume_yes: Some(true), yay_arguments: None, aura_aur_arguments: None, aura_pacman_arguments: None, python: None, no_retry: Some(true), run_in_tmux: None, cleanup: Some(true), notify_each_step: None, accept_all_windows_updates: None, skip_notify: None, bashit_branch: None, only: None, composer: Some(Composer { self_update: None }), brew: Some(Brew { greedy_cask: Some(true), autoremove: None }), linux: Some(Linux { yay_arguments: None, aura_aur_arguments: None, aura_pacman_arguments: None, arch_package_manager: None, show_arch_news: None, garuda_update_arguments: None, trizen_arguments: None, pikaur_arguments: None, pamac_arguments: None, dnf_arguments: None, nix_arguments: None, apt_arguments: None, enable_tlmgr: None, redhat_distro_sync: None, rpm_ostree: None, emerge_sync_flags: None, emerge_update_flags: None }), git: Some(Git { max_concurrency: None, arguments: None, repos: Some([".config/PrusaSlicer"]), pull_predefined: None }), windows: Some(Windows { accept_all_updates: None, self_rename: None, open_remotes_in_new_terminal: None, enable_winget: None, wsl_update_pre_release: None, wsl_update_use_web_download: None }), npm: Some(NPM { use_sudo: None }), yarn: None, vim: None, firmware: Some(Firmware { upgrade: None }), vagrant: None, flatpak: Some(Flatpak { use_sudo: None }), distrobox: None }
    DEBUG Detected "/usr/bin/notify-send" as "notify-send"
    DEBUG Version: 10.3.1
    DEBUG OS: x86_64-unknown-linux-gnu
    DEBUG Args { inner: ["topgrade", "--only", "custom_commands", "-v"] }
    DEBUG Binary path: Ok("/home/reini/bin/topgrade")
    DEBUG Self Update: true
    Due to a design issue with notify-send it could be that topgrade hangs when it's finished.
    If this is the case on your system add the --skip-notify flag to the topgrade command or set skip_notify = true in the config file.
    If you don't want this message to appear any longer set display_preamble = false in the config file.
    For more information about this issue see https://askubuntu.com/questions/110969/notify-send-ignores-timeout and https://github.com/topgrade-rs/topgrade/issues/288.
    DEBUG Detected "/usr/bin/git" as "git"
    DEBUG Cannot find "doas"
    DEBUG Detected "/usr/bin/sudo" as "sudo"
    

    ── 11:17:39 - Self update ────────────────────────────────────────────────────── DEBUG starting new connection: https://api.github.com/
    DEBUG resolving host="api.github.com" DEBUG connecting to 140.82.121.6:443 DEBUG connected to 140.82.121.6:443 DEBUG No cached session for DnsName(DnsName(DnsName("api.github.com")))
    DEBUG Not resuming any session
    DEBUG Using ciphersuite TLS13_AES_128_GCM_SHA256
    DEBUG Not resuming
    DEBUG TLS1.3 encrypted extensions: [ServerNameAck, Protocols([6832])]
    DEBUG ALPN protocol is Some(b"h2")
    DEBUG binding client connection DEBUG client connection bound DEBUG send frame=Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384 } DEBUG Connection{peer=Client}: new DEBUG Connection{peer=Client}: send frame=WindowUpdate { stream_id: StreamId(0), size_increment: 5177345 } DEBUG pooling idle connection for ("https", api.github.com) DEBUG Connection{peer=Client}: send frame=Headers { stream_id: StreamId(1), flags: (0x5: END_HEADERS | END_STREAM) } DEBUG Connection{peer=Client}: Ticket saved
    DEBUG Connection{peer=Client}: Ticket saved
    DEBUG Connection{peer=Client}: received frame=Settings { flags: (0x0), max_concurrent_streams: 100, initial_window_size: 67108864, max_frame_size: 65536 } DEBUG Connection{peer=Client}: send frame=Settings { flags: (0x1: ACK) } DEBUG Connection{peer=Client}: received frame=Settings { flags: (0x1: ACK) } DEBUG Connection{peer=Client}: received settings ACK; applying Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384 } DEBUG Connection{peer=Client}: received frame=Headers { stream_id: StreamId(1), flags: (0x4: END_HEADERS) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1), flags: (0x1: END_STREAM) } DEBUG Connection{peer=Client}: close DEBUG starting new connection: https://api.github.com/
    DEBUG resolving host="api.github.com" DEBUG connecting to 140.82.121.6:443 DEBUG connected to 140.82.121.6:443 DEBUG No cached session for DnsName(DnsName(DnsName("api.github.com")))
    DEBUG Not resuming any session
    DEBUG Using ciphersuite TLS13_AES_128_GCM_SHA256
    DEBUG Not resuming
    DEBUG TLS1.3 encrypted extensions: [ServerNameAck, Protocols([6832])]
    DEBUG ALPN protocol is Some(b"h2")
    DEBUG binding client connection DEBUG client connection bound DEBUG send frame=Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384 } DEBUG Connection{peer=Client}: new DEBUG Connection{peer=Client}: send frame=WindowUpdate { stream_id: StreamId(0), size_increment: 5177345 } DEBUG pooling idle connection for ("https", api.github.com) DEBUG Connection{peer=Client}: send frame=Headers { stream_id: StreamId(1), flags: (0x5: END_HEADERS | END_STREAM) } DEBUG Connection{peer=Client}: Ticket saved
    DEBUG Connection{peer=Client}: Ticket saved
    DEBUG Connection{peer=Client}: received frame=Settings { flags: (0x0), max_concurrent_streams: 100, initial_window_size: 67108864, max_frame_size: 65536 } DEBUG Connection{peer=Client}: send frame=Settings { flags: (0x1: ACK) } DEBUG Connection{peer=Client}: received frame=Settings { flags: (0x1: ACK) } DEBUG Connection{peer=Client}: received settings ACK; applying Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384 } DEBUG Connection{peer=Client}: received frame=Headers { stream_id: StreamId(1), flags: (0x5: END_HEADERS | END_STREAM) } DEBUG redirecting 'https://api.github.com/repos/topgrade-rs/topgrade/releases/assets/99107741' to 'https://objects.githubusercontent.com/github-production-release-asset-2e65be/549714010/deb90ec7-3b37-4434-b118-cf5e3f77547e?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20230313%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230313T101739Z&X-Amz-Expires=300&X-Amz-Signature=e3ee9109c773c309feeb101cb59197897a1ca88896c8476e6b8fe4ac134052cd&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=549714010&response-content-disposition=attachment%3B%20filename%3Dtopgrade-v10.3.2-x86_64-unknown-linux-gnu.tar.gz&response-content-type=application%2Foctet-stream'
    DEBUG starting new connection: https://objects.githubusercontent.com/
    DEBUG resolving host="objects.githubusercontent.com" DEBUG connecting to 185.199.111.133:443 DEBUG connected to 185.199.111.133:443 DEBUG No cached session for DnsName(DnsName(DnsName("objects.githubusercontent.com")))
    DEBUG Not resuming any session
    DEBUG Using ciphersuite TLS13_AES_128_GCM_SHA256
    DEBUG Not resuming
    DEBUG TLS1.3 encrypted extensions: [ServerNameAck, Protocols([6832])]
    DEBUG ALPN protocol is Some(b"h2")
    DEBUG Ticket saved
    DEBUG binding client connection DEBUG client connection bound DEBUG send frame=Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384 } DEBUG Connection{peer=Client}: new DEBUG Connection{peer=Client}: send frame=WindowUpdate { stream_id: StreamId(0), size_increment: 5177345 } DEBUG pooling idle connection for ("https", objects.githubusercontent.com) DEBUG Connection{peer=Client}: send frame=Headers { stream_id: StreamId(1), flags: (0x5: END_HEADERS | END_STREAM) } DEBUG Connection{peer=Client}: received frame=Settings { flags: (0x0), max_concurrent_streams: 100 } DEBUG Connection{peer=Client}: send frame=Settings { flags: (0x1: ACK) } DEBUG Connection{peer=Client}: received frame=WindowUpdate { stream_id: StreamId(0), size_increment: 16711681 } DEBUG Connection{peer=Client}: received frame=Settings { flags: (0x1: ACK) } DEBUG Connection{peer=Client}: received settings ACK; applying Settings { flags: (0x0), enable_push: 0, initial_window_size: 2097152, max_frame_size: 16384 } DEBUG Connection{peer=Client}: received frame=Headers { stream_id: StreamId(1), flags: (0x4: END_HEADERS) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:00] [>---------------------------------------] 8.00KiB/4.42MiB (1s) [00:00:00] [>---------------------------------------] 23.37KiB/4.42MiB (7s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:00] [>---------------------------------------] 55.37KiB/4.42MiB (10s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:00] [>---------------------------------------] 103.37KiB/4.42MiB (11s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:00] [=>--------------------------------------] 199.37KiB/4.42MiB (9s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:00] [===>------------------------------------] 343.37KiB/4.42MiB (6s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:00] [====>-----------------------------------] 551.37KiB/4.42MiB (4s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: send frame=WindowUpdate { stream_id: StreamId(1), size_increment: 703865 } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:00] [=======>--------------------------------] 855.37KiB/4.42MiB (3s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:00] [===========>----------------------------] 1.24MiB/4.42MiB (2s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: send frame=WindowUpdate { stream_id: StreamId(1), size_increment: 714972 } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: send frame=WindowUpdate { stream_id: StreamId(0), size_increment: 1752441 } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:00] [================>-----------------------] 1.82MiB/4.42MiB (1s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: send frame=WindowUpdate { stream_id: StreamId(1), size_increment: 711083 } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:00] [=====================>------------------] 2.40MiB/4.42MiB (1s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: send frame=WindowUpdate { stream_id: StreamId(1), size_increment: 703865 } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:01] [==========================>-------------] 2.92MiB/4.42MiB (1s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: send frame=WindowUpdate { stream_id: StreamId(0), size_increment: 1736704 } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: send frame=WindowUpdate { stream_id: StreamId(1), size_increment: 704512 } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:01] [===============================>--------] 3.52MiB/4.42MiB (1s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:01] [====================================>---] 4.01MiB/4.42MiB (0s) DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: send frame=WindowUpdate { stream_id: StreamId(1), size_increment: 714107 } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } DEBUG Connection{peer=Client}: received frame=Data { stream_id: StreamId(1) } [00:00:01] [========================================] 4.42MiB/4.42MiB (0s) Done DEBUG Connection{peer=Client}: close DEBUG Connection{peer=Client}: close DEBUG Detecting archive type using extension: Some("gz")
    DEBUG Detected .tar.gz archive
    DEBUG Detected archive type: Ok(Tar(Some(Gz)))
    DEBUG Attempting to extract "topgrade" file from "/home/reini/bin/topgrade_downloadT0H4Jz/topgrade-v10.3.2-x86_64-unknown-linux-gnu.tar.gz"
    DEBUG Extracting from tar
    DEBUG Archive path: Ok("topgrade")

    Topgrade upgraded to 10.3.2:

    What's Changed

    • use documented way of updating by @vzze in https://github.com/topgrade-rs/topgrade/pull/344
    • Add support for please (access elevation) by @dsully in https://github.com/topgrade-rs/topgrade/pull/310
    • run_custom_command: use interactive shell on unix by @utkarshgupta137 in https://github.com/topgrade-rs/topgrade/pull/347
    • ruby_gems: Fixes asdf by @DottoDev in https://github.com/topgrade-rs/topgrade/pull/350
    • vim: Adds Astrovim support by @DottoDev in https://github.com/topgrade-rs/topgrade/pull/352
    • CI: Update cross to v0.2.5 by @guihkx in https://github.com/topgrade-rs/topgrade/pull/354
    • Silence misleading warning on other platforms. by @jstelzer in https://github.com/topgrade-rs/topgrade/pull/353
    • apt: Recognise mist by @DottoDev in https://github.com/topgrade-rs/topgrade/pull/351
    • pip3: Check for EXTERNALLY-MANAGED (PEP 668) by @TGRCdev in https://github.com/topgrade-rs/topgrade/pull/367
    • pacdef: support new version 1.x by @arctic-penguin in https://github.com/topgrade-rs/topgrade/pull/364
    • Support antidote by @r-darwish in https://github.com/topgrade-rs/topgrade/pull/368
    • cargo: add cleanup step (using cargo-cache) by @IsaacTay in https://github.com/topgrade-rs/topgrade/pull/371
    • skip skip-notify warning on Win by @DottoDev in https://github.com/topgrade-rs/topgrade/pull/362
    • 10.3.2 patch by @DottoDev in https://github.com/topgrade-rs/topgrade/pull/378

    New Contributors

    • @dsully made their first contribution in https://github.com/topgrade-rs/topgrade/pull/310
    • @utkarshgupta137 made their first contribution in https://github.com/topgrade-rs/topgrade/pull/347
    • @TGRCdev made their first contribution in https://github.com/topgrade-rs/topgrade/pull/367
    • @IsaacTay made their first contribution in https://github.com/topgrade-rs/topgrade/pull/371

    Full Changelog: https://github.com/topgrade-rs/topgrade/compare/v10.3.1...v10.3.2 Respawning... DEBUG Configuration at /home/reini/.config/topgrade.toml DEBUG Path .config/PrusaSlicer expanded to .config/PrusaSlicer DEBUG Loaded configuration: ConfigFile { pre_sudo: None, pre_commands: Some({}), post_commands: None, commands: Some({"01 Update downloaded apps": "~/bin/update_downloaded-apps.sh", "12 Create/update ~/.ssh/config.known_hosts": "~/.config/topgrade-ssh_config.known-hosts", "13 Create/update ~/.ssh/pssh_lists": "~/.config/topgrade-pssh_lists", "14 Clone/update Git repositories (with MyRepos)": "~/.config/topgrade-myrepos", "20 Sync home with git": "~/bin/sync-home-with-git.sh", "50 Backup": "~/bin/backup-user", "90 Update & backup home routers": "~/.config/topgrade-update_routers", "99 Status of Git repositories (with MyRepo)": "~/.config/topgrade-myrepos --status"}), git_repos: None, predefined_git_repos: None, disable: Some([Myrepos]), ignore_failures: None, remote_topgrades: Some(["octoprint.lan"]), remote_topgrade_path: None, ssh_arguments: Some("-o ConnectTimeout=2"), git_arguments: None, tmux_arguments: None, set_title: None, display_time: None, display_preamble: None, assume_yes: Some(true), yay_arguments: None, aura_aur_arguments: None, aura_pacman_arguments: None, python: None, no_retry: Some(true), run_in_tmux: None, cleanup: Some(true), notify_each_step: None, accept_all_windows_updates: None, skip_notify: None, bashit_branch: None, only: None, composer: Some(Composer { self_update: None }), brew: Some(Brew { greedy_cask: Some(true), autoremove: None }), linux: Some(Linux { yay_arguments: None, aura_aur_arguments: None, aura_pacman_arguments: None, arch_package_manager: None, show_arch_news: None, garuda_update_arguments: None, trizen_arguments: None, pikaur_arguments: None, pamac_arguments: None, dnf_arguments: None, nix_arguments: None, apt_arguments: None, enable_tlmgr: None, redhat_distro_sync: None, rpm_ostree: None, emerge_sync_flags: None, emerge_update_flags: None }), git: Some(Git { max_concurrency: None, arguments: None, repos: Some([".config/PrusaSlicer"]), pull_predefined: None }), windows: Some(Windows { accept_all_updates: None, self_rename: None, open_remotes_in_new_terminal: None, enable_winget: None, wsl_update_pre_release: None, wsl_update_use_web_download: None }), npm: Some(NPM { use_sudo: None }), yarn: None, vim: None, firmware: Some(Firmware { upgrade: None }), vagrant: None, flatpak: Some(Flatpak { use_sudo: None }), distrobox: None } DEBUG Detected "/usr/bin/notify-send" as "notify-send" DEBUG Version: 10.3.2 DEBUG OS: x86_64-unknown-linux-gnu DEBUG Args { inner: ["/home/reini/bin/topgrade", "--only", "custom_commands", "-v"] } DEBUG Binary path: Ok("/home/reini/bin/topgrade") DEBUG Self Update: true Due to a design issue with notify-send it could be that topgrade hangs when it's finished. If this is the case on your system add the --skip-notify flag to the topgrade command or set skip_notify = true in the config file. If you don't want this message to appear any longer set display_preamble = false in the config file. For more information about this issue see https://askubuntu.com/questions/110969/notify-send-ignores-timeout and https://github.com/topgrade-rs/topgrade/issues/288. DEBUG Detected "/usr/bin/git" as "git" DEBUG Cannot find "doas" DEBUG Cannot find "please" DEBUG Detected "/usr/bin/sudo" as "sudo" DEBUG Detected "/usr/bin/pwsh" as "pwsh" DEBUG Executing command /usr/bin/pwsh -NoProfile -Command 'Split-Path $profile' DEBUG Path "/home/reini/.config/powershell" exists DEBUG Path "/home/reini/.config/emacs" doesn't exist DEBUG Path "/home/reini/.emacs.d" doesn't exist DEBUG /home/reini/.ideavimrc does not exists DEBUG /home/reini/.intellimacs does not exists DEBUG /home/reini/.zshrc is a file. Checking /home/reini DEBUG Checking if /home/reini is a git repository DEBUG Executing command /usr/bin/git rev-parse --show-toplevel DEBUG Command failed: Err( 0: Command failed: /usr/bin/git rev-parse --show-toplevel

      Stderr:
      fatal: not a git repository (or any of the parent directories): .git
    

    1: /usr/bin/git failed: exit status: 128

    Location: src/steps/git.rs:167

    Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it. Run with RUST_BACKTRACE=full to include source snippets.) DEBUG /home/reini/.config/fish does not exists DEBUG /home/reini/.config/openbox does not exists DEBUG /home/reini/.config/bspwm does not exists DEBUG /home/reini/.config/i3 does not exists DEBUG /home/reini/.config/sway does not exists DEBUG Checking if /home/reini/.config/powershell is a git repository DEBUG Executing command /usr/bin/git rev-parse --show-toplevel DEBUG Command failed: Err( 0: Command failed: /usr/bin/git rev-parse --show-toplevel

      Stderr:
      fatal: not a git repository (or any of the parent directories): .git
    

    1: /usr/bin/git failed: exit status: 128

    Location: src/steps/git.rs:167

    Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it. Run with RUST_BACKTRACE=full to include source snippets.) DEBUG Step "01 Update downloaded apps"

    ── 11:17:42 - 01 Update downloaded apps ──────────────────────────────────────── DEBUG Executing command /bin/bash -i -c ~/bin/update_downloaded-apps.sh 2023-03-13 11:17:42: Update as-tree 2023-03-13 11:17:43: Update bat 2023-03-13 11:17:43: Update delta 2023-03-13 11:17:44: Update fd 2023-03-13 11:17:44: Update fzf 2023-03-13 11:17:45: Update gitui 2023-03-13 11:17:45: Update hexyl 2023-03-13 11:17:45: Update lnav ERROR: Download URL for lnav not available 2023-03-13 11:17:46: Update pandoc 2023-03-13 11:17:46: Update rclone 2023-03-13 11:17:47: Update ripgrep 2023-03-13 11:17:47: Update shellcheck DEBUG Step "12 Create/update ~/.ssh/config.known_hosts"

    ── 11:17:48 - 12 Create/update ~/.ssh/config.known_hosts ─────────────────────── DEBUG Executing command /bin/bash -i -c ~/.config/topgrade-ssh_config.known-hosts

    [1]+ Stopped topgrade --only custom_commands -v

    Ubuntu-22.04> reini@ubuntu:~$ jobs -l [1]+ 36581 Stopped (tty input) topgrade --only custom_commands -v

    Ubuntu-22.04> reini@ubuntu:~$ topgrade --version Topgrade 10.3.2

    See also my comment in pull request #347 (https://github.com/topgrade-rs/topgrade/pull/347#issuecomment-1465850005)

    opened by reini-1 17
  • Distrobox always fails

    Distrobox always fails

    I installed Garuda yesterday and have been slowly building it up. Shortly after installing I installed you version of Topgrade. Everytime it's run it gets to a tool called Distrobox and won't do anything with it, it just fails and I'm asked if I want to try again. I looked for Distrobox using Pamac and of the 3 versions listed according to Pamac none are installed. I contacted Garuda to see if it was something they added and according to them no. I'm at a lost on how to either fix Distrobox or remove it since it's not liusted as installed. Any help with this would be greatly appreciated. Thanks

    Additional Details

    • Garuda - Arch based distro
    • Use pamac to install Topgrade - it just updated
    • Topgrade version 10.0.1
    ╭─locutus@Unimatrix in ~ 
    ╰─λ topgrade
    
    ―― 07:06:53 - System update ――――――――――――――――――――――――――――――――――――――――――――――――――――
    [sudo] password for locutus:
    :: Synchronizing package databases...
    garuda is up to date
    core is up to date
    extra is up to date
    community is up to date
    multilib is up to date
    chaotic-aur                              2.3 MiB  4.89 MiB/s 00:00 [-------------------------------------] 100%
    arcolinux_repo                         131.7 KiB   775 KiB/s 00:00 [-------------------------------------] 100%
    arcolinux_repo_3party                  283.3 KiB  1445 KiB/s 00:00 [-------------------------------------] 100%
    arcolinux_repo_xlarge                   34.6 KiB   324 KiB/s 00:00 [-------------------------------------] 100%
    nemesis_repo is up to date
    endeavouros is up to date
    xerolinux_repo is up to date
    xerolinux_repo_xl is up to date
    :: Starting full system upgrade...
    warning: topgrade-git: local (10.0.1.r1163.5a6f0d2-1) is newer than arcolinux_repo_3party (r1080.57f38a0-1)
    there is nothing to do
    :: Searching databases for updates...
    :: Searching AUR for updates...
    -> topgrade-git: local (10.0.1.r1163.5a6f0d2-1) is newer than arcolinux_repo_3party (r1080.57f38a0-1)
    -> Flagged Out Of Date AUR Packages:  komga
    there is nothing to do
    
    ―― 07:07:05 - Configuration update ―――――――――――――――――――――――――――――――――――――――――――――
    ==> pacnew file found for /etc/pamac.conf
    :: (V)iew, (M)erge, (S)kip, (R)emove pacnew, (O)verwrite with pacnew, (Q)uit: [v/m/s/r/o/q] s
    
    ―― 07:07:09 - oh-my-zsh ――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    Pulling custom plugins and themes
    Pulling /home/locutus/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
    Pulling /home/locutus/.oh-my-zsh/custom/themes/powerlevel10k
    Pulling /home/locutus/.oh-my-zsh/custom/plugins/zsh-autosuggestions
    Pulling /home/locutus/.oh-my-zsh/custom/plugins/zsh-completions
    Up-to-date /home/locutus/.oh-my-zsh/custom/themes/powerlevel10k
    Up-to-date /home/locutus/.oh-my-zsh/custom/plugins/zsh-completions
    Up-to-date /home/locutus/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
    Up-to-date /home/locutus/.oh-my-zsh/custom/plugins/zsh-autosuggestions
    Updating Oh My Zsh
    __                                     __
    ____  / /_     ____ ___  __  __   ____  _____/ /_
    / __ \/ __ \   / __ `__ \/ / / /  /_  / / ___/ __ \
    / /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / /
    \____/_/ /_/  /_/ /_/ /_/\__, /    /___/____/_/ /_/
    /____/
    
    Oh My Zsh is already at the latest version.
    
    To keep up with the latest news and updates, follow us on Twitter: https://twitter.com/ohmyzsh
    Want to get involved in the community? Join our Discord: https://discord.gg/ohmyzsh
    Get your Oh My Zsh swag at: https://shop.planetargon.com/collections/oh-my-zsh
    
    ―― 07:07:10 - TLDR ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    Successfully updated cache.
    
    ―― 07:07:10 - micro ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    Checking for plugin updates
    Nothing to install / update
    
    ―― 07:07:11 - Flatpak User Packages ――――――――――――――――――――――――――――――――――――――――――――
    Looking for updates…
    
    Nothing to do.
    
    ―― 07:07:11 - Flatpak System Packages ――――――――――――――――――――――――――――――――――――――――――
    Looking for updates…
    
    Nothing to do.
    
    ―― 07:07:11 - Distrobox ――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    
    Retry? (y)es/(N)o/(s)hell/(q)uit
    
    ―― 07:07:13 - Firmware upgrades ――――――――――――――――――――――――――――――――――――――――――――――――
    Firmware metadata last refresh: 18 hours ago. Use --force to refresh again.
    Devices with no available firmware updates:
    • System Firmware
    • Unifying Receiver
    • Unifying Receiver
    • WD Blue SN570 500GB
    Devices with the latest available firmware version:
    • UEFI dbx
    No updates available
    
    ―― 07:07:13 - Summary ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    System update: OK
    config-update: OK
    oh-my-zsh: OK
    TLDR: OK
    micro: OK
    Flatpak: OK
    distrobox: FAILED
    Firmware upgrades: OK
    
    Pacman backup configuration files found:
    /etc/pamac.conf.pacnew
    /etc/paru.conf.pacsave
    
    ╭─locutus@Unimatrix in ~ as 🧙 took 1ms
    ╰─λ topgrade --dry-run
    
    ―― 07:09:36 - System update ――――――――――――――――――――――――――――――――――――――――――――――――――――
    Dry running: /usr/bin/yay --pacman pacman -Syu
    
    ―― 07:09:37 - Configuration update ―――――――――――――――――――――――――――――――――――――――――――――
    Dry running: /usr/bin/sudo --preserve-env=DIFFPROG /usr/bin/pacdiff
    
    ―― 07:09:37 - oh-my-zsh ――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    Pulling custom plugins and themes
    Would pull /home/locutus/.oh-my-zsh/custom/plugins/zsh-autosuggestions
    Would pull /home/locutus/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
    Would pull /home/locutus/.oh-my-zsh/custom/plugins/zsh-completions
    Would pull /home/locutus/.oh-my-zsh/custom/themes/powerlevel10k
    Dry running: zsh /home/locutus/.oh-my-zsh/tools/upgrade.sh
    
    ―― 07:09:37 - TLDR ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    Dry running: /usr/bin/tldr --update
    
    ―― 07:09:37 - micro ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    Dry running: /usr/bin/micro -plugin update
    
    ―― 07:09:37 - Flatpak User Packages ――――――――――――――――――――――――――――――――――――――――――――
    Dry running: /usr/bin/flatpak update --user
    
    ―― 07:09:37 - Flatpak System Packages ――――――――――――――――――――――――――――――――――――――――――
    Dry running: /usr/bin/flatpak update --system
    
    ―― 07:09:37 - Distrobox ――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    Dry running: distrobox upgrade --all
    
    ―― 07:09:37 - Firmware upgrades ――――――――――――――――――――――――――――――――――――――――――――――――
    Dry running: /usr/bin/fwupdmgr refresh
    Dry running: /usr/bin/fwupdmgr get-updates
    
    ―― 07:09:37 - Summary ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    System update: OK
    config-update: OK
    oh-my-zsh: OK
    TLDR: OK
    Flatpak: OK
    distrobox: OK
    Firmware upgrades: OK
    
    Pacman backup configuration files found:
    /etc/pamac.conf.pacnew
    /etc/paru.conf.pacsave
    
    opened by Locutus64 17
  • run_custom_command: allow using interactive shell on unix

    run_custom_command: allow using interactive shell on unix

    Standards checklist:

    • [x] The PR title is descriptive.
    • [x] The code compiles (cargo build)
    • [x] The code passes rustfmt (cargo fmt)
    • [x] The code passes clippy (cargo clippy)
    • [x] The code passes tests (cargo test)
    • [x] Optional: I have tested the code myself
      • [x] I also tested that Topgrade skips the step where needed

    This allows loading environment & aliases from the user's rc files.

    @reini-1 @ealap Please test once for any regressions.

    opened by utkarshgupta137 16
  • Add support for aura AUR helper

    Add support for aura AUR helper

    Which tool is this about? Where is its repository?

    aura is an AUR helper and can be used for all regular pacman commands

    Which operating systems are supported by this tool?

    Arch Linux and its derivatives

    What should Topgrade do to figure out if the tool needs to be invoked?

    check if it is installed and the user has set arch_package_manager to aura

    Which exact commands should Topgrade run?

    sudo aura -Akux (for aur packages)(this step has a hard dependency on sudo) sudo aura -Syu (for pacman packages)

    request-package-manager just-needs-check 
    opened by name-tar-xz 16
  • AUR PKGBUILD outdated

    AUR PKGBUILD outdated

    Hey

    I was wondering how to build package from this fork. PKGBUILD on AUR still points to old Git repo... Am not good at making PKGBUILD files...

    Thanks...

    opened by TechXero 16
  • Topgrade can't close the process

    Topgrade can't close the process

    Hello there! It's been a couple of days that I noticed a strange behavior from Topgrade, never happened before. Basically it executes but won't close, the process hangs up indefinitely.

    What actually happened?

    After updating everything, topgrade won't stop running. Only solved by manually killing the process from htop.

    Additional Details

    Operating System: Manjaro Linux KDE Plasma Version: 5.26.4 KDE Frameworks Version: 5.101.0 Qt Version: 5.15.7 Kernel Version: 5.15.85-1-MANJARO (64-bit) Graphics Platform: X11 Processors: 12 × AMD Ryzen 5 3600XT 6-Core Processor Memory: 15,6 GiB of RAM Graphics Processor: NV137 Topgrade -V 10.2.4

    [nicola@nicola-desktop ~]$ sudo topgrade
    [sudo] password for nicola: 
    
    ―― 02:28:43 - System update ――――――――――――――――――――――――――――――――――――――――――――――――――――
    Preparing...
    Synchronizing package databases...
    Nothing to do.
    Transaction successfully finished.
    
    ―― 02:28:45 - Configuration update ―――――――――――――――――――――――――――――――――――――――――――――
    
    ―― 02:28:45 - pip3 ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    Requirement already satisfied: pip in /root/.local/lib/python3.10/site-packages (22.3.1)
    WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
    
    ―― 02:28:46 - Flatpak User Packages ――――――――――――――――――――――――――――――――――――――――――――
    Looking for updates…
    
    Nothing to do.
    
    ―― 02:28:46 - Flatpak System Packages ――――――――――――――――――――――――――――――――――――――――――
    Looking for updates…
    
    Nothing to do.
    
    ―― 02:28:46 - snap ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    All snaps up to date.
    
    ―― 02:28:47 - Firmware upgrades ――――――――――――――――――――――――――――――――――――――――――――――――
    Firmware metadata last refresh: 10 hours ago. Use --force to refresh again.
    Devices with no available firmware updates: 
     • CT500P5SSD8
     • System Firmware
     • WDC WD10EZEX-08WN4A0
    Devices with the latest available firmware version:
     • UEFI dbx
    No updates available
    
    ―― 02:28:47 - Summary ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    System update: OK
    config-update: OK
    pip3: OK
    Flatpak: OK
    snap: OK
    Firmware upgrades: OK
    _
    
    
    
    
    just-needs-check 
    opened by NicolaM94 14
  • topgrade 10.2.2 failure due to Glib trouble on bullseye

    topgrade 10.2.2 failure due to Glib trouble on bullseye

    What did you expect to happen?

    Topgrade update and run

    What actually happened?

    Topgrade failure to update

    Additional Details

    • Debian bullseye
    • Self-update
    • 10.2.1
    ―― 11:42:51 - Self update ――――――――――――――――――――――――――――――――――――――――――――――――――――――
    [00:00:00] [========================================] 4.34MiB/4.34MiB (0s) Done
    
    Topgrade upgraded to 10.2.2:
    
    (...)
    
    Respawning...
    /home/.../topgrade: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/.../topgrade)
    /home/.../topgrade: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/.../topgrade)
    /home/.../topgrade: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/.../topgrade)
    
    
    
    opened by tygerlord 13
  • Repo packages error Paru/Yay

    Repo packages error Paru/Yay

    What did you expect to happen?

    For it to work lol...

    What actually happened?

    It error-ed out on system update with Paru n Yay. Works fine without them

    Additional Details

    • Which operating system or Linux distribution are you using? +> ArchLinux (XeroLinux)
    • How did you install Topgrade? => AUR
    • Which version are you running? => 10.2.0
    -> error installing repo packages
    System update failed: 
       0: Command failed: `/usr/bin/yay --pacman pacman -Syu`
       1: `/usr/bin/yay` failed: exit status: 1
    

    Location: src/steps/os/archlinux.rs:49

    Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it. Run with RUST_BACKTRACE=full to include source snippets.

    System update failed: 0: Command failed: /usr/bin/paru -Pw 1: /usr/bin/paru failed: exit status: 1

    Location: src/steps/os/archlinux.rs:34

    Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it. Run with RUST_BACKTRACE=full to include source snippets.

    opened by TechXero 13
  • Fixes dotnet if dotnet tool is not available

    Fixes dotnet if dotnet tool is not available

    Closes #225 Closes #269

    Standards checklist:

    • [x] The PR title is descriptive.
    • [x] The code compiles (cargo build)
    • [x] The code passes rustfmt (cargo fmt)
    • [x] The code passes clippy (cargo clippy)
    • [x] The code passes tests (cargo test)
    • [ ] Optional: I have tested the code myself
      • [ ] I also tested that Topgrade skips the step where needed

    If you developed a feature or a bug fix for someone else and you do not have the means to test it, please tag this person here. @BackSpace54 could you please try this out

    opened by DottoDev 12
  • npm failure

    npm failure

    Npm fails because of permission.

    ―― 20:47:24 - Node Package Manager ―――――――――――――――――――――――――――――――――――――――――――――
    npm ERR! code EACCES
    npm ERR! syscall rename
    npm ERR! path /usr/lib/node_modules/is-stream
    npm ERR! dest /usr/lib/node_modules/.is-stream-ibQnO7oZ
    npm ERR! errno -13
    npm ERR! Error: EACCES: permission denied, rename '/usr/lib/node_modules/is-stream' -> '/usr/lib/node_modules/.is-stream-ibQnO7oZ'
    npm ERR!  [Error: EACCES: permission denied, rename '/usr/lib/node_modules/is-stream' -> '/usr/lib/node_modules/.is-stream-ibQnO7oZ'] {
    npm ERR!   errno: -13,
    npm ERR!   code: 'EACCES',
    npm ERR!   syscall: 'rename',
    npm ERR!   path: '/usr/lib/node_modules/is-stream',
    npm ERR!   dest: '/usr/lib/node_modules/.is-stream-ibQnO7oZ'
    npm ERR! }
    npm ERR! 
    npm ERR! The operation was rejected by your operating system.
    npm ERR! It is likely you do not have the permissions to access this file as the current user
    npm ERR! 
    npm ERR! If you believe this might be a permissions issue, please double-check the
    npm ERR! permissions of the file and its containing directories, or try running
    npm ERR! the command again as root/Administrator.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /home/said/.npm/_logs/2022-11-10T17_47_24_556Z-debug-0.log
    

    Specifications

    OS: Pop!_OS 22.04 LTS x86_64 Topgrade version 10.1.2 unknown linux GNU, downloaded from releases

    If I run sudo npm update

    ❯ sudo npm update
    
    up to date, audited 36 packages in 4s
    
    2 packages are looking for funding
      run `npm fund` for details
    
    found 0 vulnerabilities
    
    bug 
    opened by ercan1104 12
  • Replace `directories` with `home` & `etcetera`

    Replace `directories` with `home` & `etcetera`

    In most places, the BaseDirs struct is just used for getting the user's home directory. I've made it a global lazy variable & replaced all instances of base_dirs.home_dir() with HOME_DIR (commit 1). After that, I removed all the places where base_dirs or ctx was no longer required (commit 2). Finally, I replaced the directories crate with the etcetera crate (commit 3), since none of the crates use the ~/Library paths returned for macOS. Also created a global variable for XDG_DIRS & WINDOWS_DIRS (if compiling for Windows) to remove unnecessary argument passing.

    I only have a few applications installed, but it is working for me on macOS. In case you want to be extra cautious, you could release commit 1/2 & commit 3 separately.

    Standards checklist:

    • [x] The PR title is descriptive.
    • [x] The code compiles (cargo build)
    • [x] The code passes rustfmt (cargo fmt)
    • [x] The code passes clippy (cargo clippy)
    • [x] The code passes tests (cargo test)
    • [x] Optional: I have tested the code myself
      • [x] I also tested that Topgrade skips the step where needed
    opened by utkarshgupta137 0
  • Container with wrong platform pulled

    Container with wrong platform pulled

    What did you expect to happen?

    topgrade should update/pull all docker images for the proper platform.

    In https://github.com/topgrade-rs/topgrade/blob/master/src/steps/containers.rs there should also the platform for the container be determined and added to the docker pull call with option "--platform", see https://docs.docker.com/engine/reference/commandline/pull/.

    What actually happened?

    When topgrade processes the "containers" steps and uses docker pull to download/update the image it did not specify the --platform parameter to pull the proper image.

    I have images on my Mac M1 multipass Ubuntu vm for platform linux/arm64 (linux/aarch64) and linux/amd64 (linux/86_64) but topgrade always pulls linux/arm64 images no matter if this is right.

    I have these images on my machine:

    Multipass~Ubuntu-22.04> [ssh] ubuntu@MBP:~$ .config/topgrade-docker-pull --list
    Docker default platform: linux/arm64 (linux/aarch64)
    
    REPOSITORY:TAG                                       PLATFORM     CREATED
    grafana/oncall:latest                                linux/arm64  2023-04-19T16:08:40.849901636Z
    portainer/portainer-ce:latest                        linux/arm64  2023-04-18T03:39:48.003125532Z
    redis:latest                                         linux/arm64  2023-04-17T22:43:33.190112885Z
    localhost/webserver:latest                           linux/arm64  2023-04-14T12:41:59.404768251+02:00
    quay.io/prometheusmsteams/prometheus-msteams:latest  linux/amd64  2023-04-07T15:26:12.950797626Z
    prom/prometheus:latest                               linux/arm64  2023-03-21T13:39:06.125286225Z
    grafana/grafana:latest                               linux/arm64  2023-03-17T00:06:13.178743487Z
    prom/alertmanager:latest                             linux/arm64  2022-12-22T15:18:01.508240991Z
    

    One is linux/amd64 all others are linux/arm64 and when I use topgrade to update the containers it fails for the amd64 image because this one did not have a arm64 image available:

    Multipass~Ubuntu-22.04> [ssh] ubuntu@MBP:~$ topgrade --only containers
    Due to a design issue with notify-send it could be that topgrade hangs when it's finished.
    If this is the case on your system add the --skip-notify flag to the topgrade command or set skip_notify = true in the config file.
    If you don't want this message to appear any longer set display_preamble = false in the config file.
    For more information about this issue see https://askubuntu.com/questions/110969/notify-send-ignores-timeout and https://github.com/topgrade-rs/topgrade/issues/288.
    
    ── 11:18:04 - Self update ──────────────────────────────────────────────────────
    Topgrade is up-to-date
    
    ── 11:18:04 - Containers ───────────────────────────────────────────────────────
    latest: Pulling from grafana/oncall
    Digest: sha256:c2c03166d69d5a0bd69807128c2f1d245fa29a164fb8e29563906add8b3fa2e8
    Status: Image is up to date for grafana/oncall:latest
    docker.io/grafana/oncall:latest
    latest: Pulling from portainer/portainer-ce
    Digest: sha256:45104bb2ecbc7c24de937b4c43f87b85c9c7dd46924d27203c2aa2a613f78322
    Status: Image is up to date for portainer/portainer-ce:latest
    docker.io/portainer/portainer-ce:latest
    latest: Pulling from library/redis
    Digest: sha256:f50031a49f41e493087fb95f96fdb3523bb25dcf6a3f0b07c588ad3cdbe1d0aa
    Status: Image is up to date for redis:latest
    docker.io/library/redis:latest
    latest: Pulling from prometheusmsteams/prometheus-msteams
    no matching manifest for linux/arm64/v8 in the manifest list entries
    ERROR Pulling container 'quay.io/prometheusmsteams/prometheus-msteams:latest' failed: Command failed: `/usr/bin/docker pull quay.io/prometheusmsteams/prometheus-msteams:latest`
    latest: Pulling from prom/prometheus
    Digest: sha256:f5c29683a301d4e5427fb0d985f794b1f743498310a4eadee75e85f5dba73a6d
    Status: Image is up to date for prom/prometheus:latest
    docker.io/prom/prometheus:latest
    latest: Pulling from grafana/grafana
    Digest: sha256:1a359d92f40ef98049b1aac3e43cb4a569f5dc0e552caa883a6b6f4ae1eacded
    Status: Image is up to date for grafana/grafana:latest
    docker.io/grafana/grafana:latest
    latest: Pulling from prom/alertmanager
    Digest: sha256:fd4d9a3dd1fd0125108417be21be917f19cc76262347086509a0d43f29b80e98
    Status: Image is up to date for prom/alertmanager:latest
    docker.io/prom/alertmanager:latest
    Total reclaimed space: 0B
    
    ── 11:18:22 - Summary ──────────────────────────────────────────────────────────
    Containers: FAILED
    
    
    Multipass~Ubuntu-22.04> [ssh] ubuntu@MBP:~$  docker image inspect quay.io/prometheusmsteams/prometheus-msteams:latest | jq -r '.[] | "\(.Os)/\(.Architecture)"'
    linux/amd64
    
    Multipass~Ubuntu-22.04> [ssh] ubuntu@MBP:~$ docker system info --format '{{.OSType}}/{{.Architecture}}'
    linux/aarch64
    

    Additional Details

    • Which operating system or Linux distribution are you using?
    Multipass~Ubuntu-22.04> [ssh] ubuntu@MBP:~$ uname -a
    Linux MBP-009 5.15.0-70-generic #77-Ubuntu SMP Tue Mar 21 15:58:51 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
    
    Multipass~Ubuntu-22.04> [ssh] ubuntu@MBP:~$ lsb_release -a
    No LSB modules are available.
    Distributor ID:	Ubuntu
    Description:	Ubuntu 22.04.2 LTS
    Release:	22.04
    Codename:	jammy
    
    • How did you install Topgrade?

    From github releases assets once and self update afterwards

    • Which version are you running?
    Multipass~Ubuntu-22.04> [ssh] ubuntu@MBP:~$ topgrade -V
    Topgrade 10.3.3
    
    • Workaround

    I disabled step containers and added a custom script to do this:

    #!/usr/bin/env bash
    docker_default_platform=$(docker system info --format '{{.OSType}}/{{.Architecture}}')
    docker_default_platform_normalized=$(echo $docker_default_platform | \
      sed -e 's/aarch64/arm64/' -e 's/armhf/arm/' -e 's/armel/arm\/v6/' -e 's/i386/386/' -e 's/x86[_-]64/amd64/')
    
    echo "Docker default platform: $docker_default_platform_normalized ($docker_default_platform)"
    echo
    
    unset header
    for i in $(docker image list --format '{{.Repository}}:{{.Tag}}' | grep -v '<none>'); do
      image_json=$(docker image inspect "$i")
      image_platform=$(echo "$image_json" | jq -r '.[] | "\(.Os)/\(.Architecture)"')
      [[ "$*" == *"--foreign"* && "$image_platform" == "$docker_default_platform_normalized" ]] && continue
    
      if [[ "$*" == *"--list"* ]]; then
        if [[ -z "$header" ]]; then
          printf "REPOSITORY:TAG\tPLATFORM\tCREATED\tSIZE/BYTES\tIMAGE ID\n"
          header=1
        fi
        printf "%s\t%s\n" "$i" \
          "$(echo "$image_json" | jq -r '.[] | "\(.Os)/\(.Architecture)\t\(.Created)\t\(.Size)\t\(.Id)"')"
      else
        printf "\033[0;34m%s\033[0m (\033[0;36m%s\033[0m)%s\n" \
          "$i" \
          "$(echo "$image_json" | jq -r '.[] | "\(.Os)/\(.Architecture)"')" \
          "$(echo "$image_json" | jq -r '.[] | ", created \(.Created), \(.Size) Bytes"')"
        if [[ "$i" == "localhost"* ]]; then
          echo "Skipping local created image"
          echo
          continue
        fi
        docker pull --platform "$image_platform" "$i"
        echo
      fi
    done | if [[ "$*" != *"--list"* ]] ; then cat ; else column -t -s $'\t'; fi
    
    
    
    opened by reini-1 0
  • Include directive in topgrade.toml

    Include directive in topgrade.toml

    I want to suggest some general feature

    I want to suggest that topgrade add an include directive in its configuration file, so that configuration can be included from another named file. This feature is supported by other tools, including Bash (source), tmux (source-file), Vim (source), OpenSSH (Include), Git ([include]) and others.

    I find this ability helpful when I synchronize dotfiles between computers, but want one small piece of configuration to be different on a particular computer for some reason. For example, my Git configuration file (.config/git/config) uses my personal email address, but also includes this section at the bottom:

    [include]
      # Include local configurations, if any.
      path = config.local
    

    On my work computer, the config.local file sets the email address to my work email address.

    With topgrade, I would do something similar, using this ability to run certain custom commands on some machines, but not others.

    I would be happy to help test this.

    opened by openjck 0
  • Fedora 38 - Incorrect use of rpm-ostree vs dnf

    Fedora 38 - Incorrect use of rpm-ostree vs dnf

    My computer is running Fedora 38 Workstation beta (not Silverblue).

    ── 20:28:29 - System update ──────────────────────────────────────────────────── error: This system was not booted via libostree. Currently, most rpm-ostree commands only work on ostree-based host systems.

    System update failed: 0: Command failed: /usr/bin/rpm-ostree upgrade 1: /usr/bin/rpm-ostree failed: exit status: 1

    Location: src/steps/os/linux.rs:176

    Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it. Run with RUST_BACKTRACE=full to include source snippets.

    opened by mdhankins1 3
  • Migrate open issues and PRs from darwish repo

    Migrate open issues and PRs from darwish repo

    https://github.com/r-darwish/topgrade/issues?q=is%3Aopen+sort%3Aupdated-desc maybe we could use some migration tool, or just make a checklist so the improvements and suggestions over there do not get lost

    opened by xeruf 0
  • Allow step array for `assume_yes` config key

    Allow step array for `assume_yes` config key

    Like in the CLI flags, there should be the ability to specify steps which are autoconfirmed in the config toml, such as assume_yes = ["emacs"]

    opened by xeruf 0
Releases(v10.3.3)
Dangerously fast dns/network/port scanner, all-in-one

Skanuvaty Dangerously fast dns/network/port scanner, all-in-one. Start with a domain, and we'll find everything about it. Features: Finds subdomains f

CCCC 701 Dec 31, 2022
Rusty Mimikatz - All credits to: github.com/ThottySploity/mimiRust (Original author deleted account so I uploaded for community use)

MimiRust - Hacking the Windows operating system to hand us the keys to the kingdom with Rust. ███▄ ▄███▓ ██▓ ███▄ ▄███▓ ██▓ ██▀███ █ ██ ██

null 179 Jan 5, 2023
Attempts to suspend all known AV/EDRs processes on Windows using syscalls and the undocumented NtSuspendProcess API. Made with <3 for pentesters. Written in Rust.

Ronflex Attempts to suspend all known AV/EDRs processes on Windows using syscalls and the undocumented NtSuspendProcess API. Made with <3 for penteste

null 5 Apr 17, 2023
MangoBOX is a fork and upgrade of fund-raising protocol Juicebox on Ethereum.

Mangoboxink MangoBOX is a fork and upgrade of fund-raising protocol Juicebox on Ethereum. It rewrites the logic and functions of Juicebox in the smart

Mangobox 0 Oct 13, 2022
Ideas => Creations, a multi-language CMS(Content Management System) based on Rust Web stacks, with long-term upgrade and maintenance.

Ideas => Creations 中文 RustHub: Rust ideas yesterday, shining creations today! This repository holds source code used to run https://rusthub.org, it's

rusthub.org 4 May 9, 2023
Host These Things Please - a basic http server for hosting a folder fast and simply

http Host These Things Please - a basic HTTP server for hosting a folder fast and simply Selected features See the manpage for full list. Symlinks fol

thecoshman 367 Dec 23, 2022
A stopwatch library for Rust. Used to time things.

rust-stopwatch This is a simple module used to time things in Rust. Usage To use, add the following line to Cargo.toml under [dependencies]: stopwatch

Chucky Ellison 77 Dec 11, 2022
Rust library for putting things in a grid

rust-term-grid This library arranges textual data in a grid format suitable for fixed-width fonts, using an algorithm to minimise the amount of space

Benjamin Sago 61 Nov 4, 2022
A collection of small Rust programs for doing weird things

This is a repo of small programs, proof of concepts, or templates written in Rust that relate in some way to hacking and/or CTF. I think Rust is real

d3npa 22 Nov 9, 2022
A Discord bot for lichess and Rosen related things

liro Liro is a Discord bot that follows in the footsteps of Lichess-discord-bot, without necessarily aiming to replace it. The main pain point that th

Sebastian Lauwers 5 Feb 16, 2022
Scouty is a command-line interface (CLI) to keep an eye on substrate-based chains and hook things up

scouty is a command-line interface (CLI) to keep an eye on substrate-based chains and hook things up

TurboFlakes 15 Aug 6, 2022
Brutally simple command line app for jotting things down

jot Brutally simple command line app for jotting things down. About jot lets you get things down before you forget, without fiddling folders, naming,

Alexander Alexandrov 1 Apr 8, 2022
A collection (eventually) of examples that use some non-beginner things.

nannou examples A collection (eventually) of examples that use some non-beginner things. Right now the only example combines nannou's standard draw AP

Alexis Andre 22 Oct 21, 2022
Giddy up! Things are going to be wild.

Jocky - For controlling your horses Current Idea The idea is essentially to have a custom directory that writes immutable segments, this means only 2

Harrison Burt 3 Jan 7, 2023
Work out how far apart things should be (very quickly)

Kern determiner Work out how far apart things should be (very quickly) kerndeterminer is a Rust-based library for determining a kern value between two

Simon Cozens 10 Oct 29, 2022
Tool to copy things!

zp zp is a cli command to copy the contents of the source file or of the std output buffer to the clipboard. To use the zp, simply open your terminal

Gokul 26 Apr 22, 2023
A crate to help you copy things into raw buffers without invoking spooky action at a distance (undefined behavior).

?? presser Utilities to help make copying data around into raw, possibly-uninitialized buffers easier and safer. presser can help you when copying dat

Embark 131 Mar 16, 2023
ratlab is a programming platform designed loosely for hobbyist and masochist to analyse and design stuff and things that transform our world?

ratlab A programming language developed by Quinn Horton and Jay Hunter. ratlab is a programming platform designed loosely for hobbyists and masochists

Jay 10 Sep 4, 2023
A visual canvas and virtual machine for writing assembly to build cool things. Create machines and connect them together.

Visual Assembly Canvas A highly visual assembly editor, infinite canvas for wiring blocks and machines together, bytecode virtual machine runnable nat

Phoomparin Mano 31 Oct 11, 2023
An Azalea plugin with things that will probably trigger anticheats.

Azalea Hax An Azalea plugin with useful features that will probably trigger anticheats. Usage async fn handle(mut bot: Client, event: azalea::Event, s

null 4 Oct 17, 2023