Topgrade και αναβαθμίστε τα πάντα

Η αναβάθμιση σε μια τυπική διανομή Linux είναι μια απλή υπόθεση σωστά; Αρκεί να επιλέξεις τα πακέτα από το εργαλείο της διανομής σου και είσαι εντάξει σωστά; Ε όχι ακριβώς …

Έχω Linux Mint, και έχω διάφορά εφαρμογίδια, μια επέκταση του cinnamon και κάποια desklets και θέματα. Και αυτά θα πρέπει να τα αναβαθμίσω ξεχωριστά. Επίσης να δω αν υπάρχει κάτι καινούργιο στο conky που χρησιμοποιώ, α ναι και στα flatpacks, α ναι και στα snaps, μισό αλλά έχω κάποια gems που χρησιμοποιώ για ruby, και κάποια cargo πακέτα από την rust. Επίσης έχω αυτό το πρόγραμμα σε node.js α ναι και εκείνο το Python pip, επίσης τα plugins για τα IDE που χρησιμοποιώ, επίσης πρέπει να αναβαθμίσω τα …

Τελικά η αναβάθμιση δεν είναι τόσο απλή υπόθεση, ειδικά αν βάζεις πράγματα εκτός διανομής. Θα μου πεις πως τα μεταξωτά βρακιά θέλουν, ξέρουμε, αλλά τι καλά που θα ήταν να μπορούσαμε με κάποιο τρόπο να τα κάνουμε αυτά με μια απλή εντολή.

Και η εντολή αυτή υπάρχει, όπως θα μάντεψε ήδη ο υποψιασμένος αναγνώστης, αλλιώς γιατί να γραφτεί αυτό το κατεβατό εεε; Και ξέρει πως την λένε και topgrade. Γιατί; Μα το λέει στον τίτλο …


Το topgrade είναι γραμμένο σε Rust :rust: , και θα αναβαθμίσει τον εαυτό του μέσα από το cargo αν έχουμε ιδέα τι είναι αυτό το Rust και το cargo :grinning: Σε αυτή την περίπτωση

cargo install topgrade

Διαφορετικά το κατεβάζουμε από την σελίδα


Απλά δίνουμε την εντολή


Επίσης έχουμε τις παρακάτω επιλογές

Topgrade 2.2.1
Roey Darwish Dror <>
Command line arguments

    topgrade [FLAGS] [OPTIONS]

    -c, --cleanup     Cleanup temporary or old files
    -n, --dry-run     Print what would be done
    -h, --help        Prints help information
        --no-retry    Do not ask to retry failed steps
    -t, --tmux        Run inside tmux
    -V, --version     Prints version information
    -v, --verbose     Output logs

        --disable <disable>...    Do not perform upgrades for the given steps [possible values: vim, git-repos, emacs,
                                  system, gem]

Τι ακριβώς κάνει ;

Αντιγράφω από το αρχείο README, μιας και είναι πραγματικά πάρα πολλά :slight_smile:

  • Try to self-upgrade if compiled with this feature. Topgrade will respawn itself if it was upgraded.
  • Linux: Run the system package manager:
    • Arch based: Run yay or fall back to pacman
    • Redhat based: Run yum upgrade (or dnf if present)
    • Debian based: Run apt update && apt dist-upgrade
    • Gentoo: Run layman -s ALL && emerge --sync -q && eix-update && emerge -uDNa world
    • openSUSE: Run zypper refresh && zypper dist-upgrade
    • Void: Run xbps-install -Su
  • Linux: Run etc-update:
  • FreeBSD: Upgrade and audit packages
  • Unix: Run brew update && brew upgrade. This should handle both Homebrew and Linuxbrew
  • Unix: Run nix upgrade-nix && nix --upgrade.
  • Unix: Run Pearl pearl update.
  • Windows: Run Topgrade inside WSL.
  • Windows: Upgrade Powershell modules
  • Windows: Upgrade all Chocolatey packages
  • Windows: Upgrade all Scoop packages
  • Check if the following paths are tracked by Git. If so, pull them:
    • ~/.emacs.d (Should work whether you use Spacemacs or a custom configuration)
    • ~/.zshrc
    • ~/.oh-my-zsh
    • ~/.tmux
    • ~/.config/fish
    • ~/.config/nvim
    • ~/.vim
    • ~/.config/openbox
    • ~/.config/bspwm
    • ~/.config/i3
    • Powershell Profile
    • Custom defined paths
  • Unix: Run zplug update
  • Unix: Run fisher
  • Unix: Upgrade tmux plugins with TPM. Note: Do not use
    the -b flag in your configuration as suggested by the TPM readme.
  • Update Rustup by running rustup update. This will also attempt to run rustup self update when Rustup is installed inside the home directory.
  • Run Cargo install-update
  • Upgrade Emacs packages (You’ll get a better output if you have Paradox installed)
  • Upgrade OCaml packages
  • Upgrade vcpkg globally installed packages
  • Upgrade myrepos managed sourcecode repositories
  • Upgrade Python packages installed using pipx
  • Upgrade R globally installed packages
  • Upgrade Vim/Neovim packages. Works with the following plugin frameworks:
  • Node
    • Run yarn global update if yarn is installed.
    • Run npm update -g if NPM is installed and npm root -g is a path inside your home directory.
  • Run composer global update if Composer’s home directory is inside the home directory of the
    user. Run valet install after.
  • Upgrade Atom packages
  • Run gem upgrade --user-install if ~/.gem exists
  • Linux: Update Flatpak packages
  • Linux: Update snap packages
  • Linux: Run fwupdmgr to show firmware upgrade. (View
    only. No upgrades will actually be performed)
  • Linux: Run rpi-update to update Raspberry Pi Firmware
  • Linux: Run pihole updater
  • Run custom defined commands
  • Final stage
    • Linux: Run needrestart
    • Windows: Run Windows Update (You’ll have to install PSWindowsUpdate)
    • macOS: Upgrade App Store applications
    • FreeBSD: Run freebsd-upgrade

Τι δεν κάνει;

Οι παρατηρητικοί θα παρατήρησαν πως δεν φτιάχνει καφέ :coffee:.

Πέραν αυτού δεν κάνει αναβάθμιση στα διάφορα καλούδια του cinnamon ή του conky. Για το cinnamon, στα επόμενα mint κάποια στιγμή, θα λυθεί το πρόβλημα. Είδα να τρέχει το fwupdmgr κατι που δεν μου άρεσε καθόλου. Τα firmware είναι απο τα πραγματα που δεν θέλω καθόλου προτοβουλίες. Αλλά ειδοποιεί μόνο αν υπαρχει κάποια διαθέσιμη αναβάθμιση και δεν τι κάνει. Καλώς.

Όσο για τον καφέ τι να πώ; Απαράδεκτον !!!