Hacker News new | past | comments | ask | show | jobs | submit login

Fantastic, I use RipGrep every day and just noticed I was on 0.4.0. I wish they had a PPA or an easier way for me to have it update automatically...



I would love for someone to maintain a PPA. :-)

I've looked into it before, but it looks like a fairly weighty process to go through.

It does look like someone is working on it though! https://github.com/x4121/ripgrep-ubuntu


Ah, fantastic! I've never deployed a PPA so I don't know the process, but how hard would it be to write a tool that would take a few debs and render the static dir to host the PPA? It seems like it shouldn't be as hard as it is?


I don't use Ubuntu or Debian. I honestly have not much idea about how any of it works. Like I said, I looked into it and balked. The Linux distro I use has a much simpler build system. It had ripgrep in its repos in a matter of days from the initial release IIRC.

ripgrep's releases do include binary debs, but there's no auto-update:

    $ curl -LO https://github.com/BurntSushi/ripgrep/releases/download/0.10.0/ripgrep_0.10.0_amd64.deb
    $ sudo dpkg -i ripgrep_0.10.0_amd64.deb


Yeah, unfortunately those are versioned so I can't even make a script to have it download https://someurl/ripgrep_latest_amd64.deb. I just added `cargo install ripgrep` to my script but that might prove too slow every time, so I'll see. Thank you!


Here's a quick little script I put together that should do the trick. It's idempotent, so it won't do anything if there are no updates. I did use `jq` for convenience though.

    #!/bin/sh
    
    curvers=
    if command -V rg > /dev/null 2>&1; then
        curvers="$(rg -V | cut -d' ' -f2)"
    fi
    latesturl="https://api.github.com/repos/BurntSushi/ripgrep/releases/latest"
    latestvers="$(curl -s "$latesturl" | jq -r .tag_name)"
    if [ "$curvers" = "$latestvers" ]; then
        echo "ripgrep is up to date"
        exit 0
    fi
    
    name="ripgrep_${latestvers}_amd64.deb"
    url="https://github.com/BurntSushi/ripgrep/releases/download/$latestvers/$name"
    (cd /tmp && curl -LO "$url" && sudo dpkg -i "$name")
    echo "ripgrep updated from $curvers to $latestvers"


I changed it a bit to be able to update more than one package: https://www.pastery.net/mushya/


This is perfect, thank you! I didn't know that there was a GH API endpoint to give you latest release names, that's pretty neat.


It's in Ubuntu, fwiw (via being in Debian). https://packages.ubuntu.com/cosmic/ripgrep

It might even be installable on older versions of Ubuntu.


Great news, thanks! I might as well upgrade, I've been putting it off.


If you don’t mind the wait to compile rustc from source once (only for tools written in rust, of course), linuxbrew is a pretty neat way of keeping tools that aren’t directly on your distro’s repos up-to-date. Nix is another option.


Oh that's very interesting, thank you! Do you know if Nix works well with Ubuntu? I'd love to use it but I didn't think it would play well with apt.


It stands separate from apt, yes.


linuxbrew tryikg to install stuff at a non standard location like /home/linuxbrew makes me question their technical decisions to get started with it.


I agree that `/home/linuxbrew/.linuxbrew` looks weird, but `~/.linuxbrew` seems somewhat okay.

Other locations like `/usr/local` or `/opt/linuxbrew` or somesuch might not be writable by the current user, and it seems they would like to avoid requiring root access.


How would /home/linuxbrew/ be writeable by a non root?

Using /home/ like /opt/ is just weird. It seems the installer picks ~/.linuxbrew/ if the user doesn't have sudo privilege but no idea how it got to the conclusion of using /home/linuxbrew/ otherwise.


I agree with you about `/home/linuxbrew`. `/opt/linuxbrew` would be better.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: