Giter VIP home page Giter VIP logo

topgrade's Introduction

Topgrade

No longer maintained

This repository is no longer maintained. An effort was made by the community to keep maintaining the project at https://github.com/topgrade-rs/topgrade. I am not involved in this effort nor do I know the people behind it, so I encourage you to inspect their work before using the fork.

I'm not the owner of the packages that ship Topgrade for various package managers, so their maintainers will need to decide what to do. I'm only the owner of the package in creates.io, which will no longer be updated.

Travis AppVeyor GitHub release Crates.io AUR homebrew

Demo

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

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

Topgrade requires Rust 1.51 or above.

Usage

Just run topgrade. See the wiki for the list of things Topgrade supports.

Customization

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

Configuration path

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

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

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.

topgrade's People

Contributors

aehmlo avatar akeshihiro avatar alexanderwillner avatar bors[bot] avatar br1ght0ne avatar byron avatar chhe avatar confusedsky avatar czwinzscher avatar derphilipp avatar divinegod avatar drrlvn avatar ericmarkmartin avatar ermshiperete avatar funky185540 avatar hugoh avatar idanski avatar jasikpark avatar mcofficer avatar ncrazed avatar niheaven avatar oleschoenburg avatar qcloutier avatar r-darwish avatar severinkaderli avatar slotthe avatar smcavoy avatar tranzystorekk avatar tuxiqae avatar xeruf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

topgrade's Issues

Use dnf instead of yum on Fedora

While there is a yum binary, that's redirecting to dnf, because yum has been deprecated for years (since Fedora 22).

It would probably be nicer to use dnf directly on Fedora.

Rustup

I'm not sure what to do with Rustup, so I'm opening it up for discussion:

  • The stable channel - It's safe to update. However, Rust versions don't release often, and when they do, people are usually aware of that, so maybe it's a bit of a waste to try to update something which doesn't update very often?

  • The nightly channel - This actually updates every night, but has the potential for breaking things. I don't use nightly personally so I'm not sure what's the desired workflow for people who actually use nightly. Do such people update nightly every day, or do they only do that whenever they feel ready?

Parallalization

We can perform git pulls in parallel, as well as non interactive upgrades such as vim, emacs, etc.

The system upgrade should not run in parallel.

Does not recognize Manjaro KDE

Topgrade throws an error "Unkown Linux Distribution", only upgrades flatpaks and snaps.
I'm running Manjaro Linux 17.1.10 w 4.17.0-2-MANJARO kernel.

Windows support?

It would be really nice to be able to run this on Windows.

Suggested package managers:

  • Chocolatey
  • MSYS (Pacman)

add update-usbids and update-pciids

Hi,

Would be nice to add in support (if found) for:

sudo /usr/sbin/update-usbids
and
sudo /usr/sbin/update-pciids

to pull the latest snapshots for each.

Thanks!

Better error handling

Update procedures should be exported to functions that returns Result and fail when the process fails. The main function should not propagate these errors, but instead report them to the console

topgrade ignores `--help` flag

$ topgrade --help                                                                                                                                                         
                                                                                                                                                                                                                   
―― System update ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――                                                                                                                                  
:: Synchronizing package databases...                                                                                                                                                                              
 core is up to date                                                                                                                                                                                                
 extra                                                                                               1640.0 KiB   430K/s 00:04 [#############################################################################] 100%
 community                                                                                              4.4 MiB   348K/s 00:13 [#############################################################################] 100%
:: Searching databases for updates...                                                                                                                                                                              
:: Searching AUR for updates...                                                                                                                                                                                    
:: Querying AUR...                                                                                                                                                                                                 
:: 24 Packages to upgrade.                                                                                                                                                                                         
24  core/cryptsetup          2.0.3-1    -> 2.0.3-2                                                                                                                                                                 
23  core/iproute2            4.16.0-1   -> 4.17.0-1                                                                                                                                                                
22  core/json-c              0.13-1     -> 0.13.1-1                                                                                                                                                                
21  core/libsystemd          238.133-1  -> 238.133-2                                                                                                                                                               
20  core/systemd             238.133-1  -> 238.133-2                                                                                                                                                               
19  core/systemd-sysvcompat  238.133-1  -> 238.133-2                                                                                                                                                               
18  extra/bind-tools         9.13.0-1   -> 9.13.0-2                                                                                                                                                                
17  extra/bluez              5.50-2     -> 5.50-3                                                                                                                                                                  
16  extra/bluez-libs         5.50-2     -> 5.50-3                                                                                                                                                                  
15  extra/bluez-utils        5.50-2     -> 5.50-3                                                                                                                                                                  
14  extra/flatpak            0.11.8.1-1 -> 0.11.8.2-1                                                                                                                                                              
13  extra/imagemagick        7.0.7.38-1 -> 7.0.7.39-1                                                     

Allow skip checks option during run

I think topgrade is really neat, however... when I'm installing a lot of package dependencies in rapid succession while trying to figure out what I need to build something else, I wish there were a way to override the topgrade checks if I've just run apt commands in the last few minutes.

Something like "press 'q' to skip upgrade checks"

Also, perhaps an internal config setting like "don't check for upgrades if last run was less than N hours/days ago" -- that might be a good overall solution.

Vim

  • Neobundle
  • Plug

sudo should not reference relative paths

It's easier to have sudo reference a relative path, like sudo yum upgrade, but there's basically only two cases where that would work.

  1. sudo is configured to allow ALL as root
  2. sudo is configured to allow a relative path, like just saying yum

While 1 isn't uncommon, 2 should never be done for the sake of security, because anyone could drop any file in ~ and name it to the relative name to satisfy the requirement.

I think that a better approach here would be to have an assumed path on the various distributions for the binaries and have sudo exec from there. It's pretty safe to assume that on Debian, that apt-get will be /usr/bin/apt-get, and if it isn't, I don't know that I'd trust it unless they officially made a move.

As part of supporting different distributions, I think this would be the safest choice.

Add dry-run mode

Add a mode in which nothing is really done but instead the commands that would be run are printed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.