What are your must-have packages?

Ret2libsanity@lemmy.world to Linux@lemmy.ml – 170 points –

I’ll start:

  • Tmux
  • vim
  • ghidra
  • okteta (hex editor)
  • speedcrunch (calculator with bit manipulation)
  • python3 with IPython for nice reply and embed(), pwntools
140

I'd drop keepassxc and pick up GNU password store or gopass. Pgp+git and a nice cli to wrap them onto an encrypted password store that's pretty easy to move around these days.

GNU password store

The tool, unless something has changed in the meantime, has one major drawback for me. The filename of the encrypted files is displayed in plain text. However, I don't want people to be able to see, for example, which Internet sites I have an account with. Sure you can name the files otherwise. But how should I remember for example that the file dafderewrfsfds.gpg contains the access data for Mastodon?

In addition, I miss with pass some functions. As far as I know, you can't save file attachments. Or define when a password expires. And so on. Pass is therefore too KISS for me.

Pgp+git and a nice cli to wrap them onto an encrypted password store that’s pretty easy to move around these days.

A matter of opinion, I would say. I prefer my Keepass file which I can access via my Nextcloud instance or which is stored on a USB stick on my keychain.


By the way, the file is secured with a Yubikey in addition to a Diceware password. So saving it in the so-called cloud is no problem. Just as a note, in case someone reading my post wants to make smart remarks about the cloud.

micro text editor is very good. powerful and simple.

For me, this is the main reason why I use micro. And because I don't like the handling of vim. Funnily enough, I've been playing around with Helix for a while now and I really like the editor, even though it's a modal editor, just like vim. Maybe because of the selection → action model. The question is, do I like Helix better than micro? I still have to answer that question for myself at some point.

I see a lot of the good ones are already mentioned. But I can't use a linux system for more than an hour without 'thefuck' installed

Well I'm installing this as soon as I get home.

For everything:

  • vi/vim
  • ssh & sshd

For everything except firewalls:

  • C, C++, Perl, Common Lisp, Scheme programming tools
  • lynx
  • wget/curl
  • git
  • ksh (on *BSD)
  • telnet (yeah, there's equipment that still uses telnet out there)

For a desktop:

  • Emacs
  • xterm
  • GNU plotutils
  • TeXlive
  • X11 utilities (xcalc, editres, etc.)
  • Atmel and Arduino toolchains
  • xpdf
  • KDE
  • KiCad
  • GIMP
  • Inkscape
  • Firefox
  • Chromium
  • Kerbal Space Program

• git
• vim
• openssh
• openssl
• fail2ban
• curl
• byobu
• webmin (to give limited access to non-Linux help desk technicians)

  • Kitty
  • fish + all the shell builtins
  • LunarVim (Neovim)
  • git + lazygit
  • openssh
  • npm
  • cargo
  • docker

Edit:

  • wget
  • httpie
  • tar & (un)zip

Am I really the first.

Nano!!!!!!

Comes preinstalled anyways, but vim is the way for me.

Not always preinstalled and in those times f$&k haha vim search engine arghhhh!!!!!!!

Try vimv

Looks cool, I'm getting that.

By pure chance, do you know the name of the tool that lets you pipe to vim, then from vim to the next command?

No, but that sounds amazing.

Found it. It's vipe from moreutils. Seemingly it just uses your $EDITOR

Thanks for letting me know. I'll definitely check it out. I can already think of a couple uses.

  • jq
  • vim
  • ag (silver searcher)
  • kubectl
  • k9s
  • oh-my-zsh
  • go
  • xclip
  • openssl
  • tcpdump
  • neovim
  • alacritty
  • zsh
    • oh my zsh
    • starship (promp)
  • zellij
  • btop | htop
  • ripgrep
  • fd-find
  • exa
  • fnm (nvm alternative, since nvm starts too slow for me)
  • yt-dlp
  • bat (batcat)
  • the usual base-devel / build-essential
  • docker (What, you never wanted to use a optimized version of cmatrix that uses only 512KiB of ram while barely scratching your CPU?)
  • foot
  • brave
  • (on docker) btop, cmatrix, lynx

What is this optimized cmatrix you speak of? The normal one slows my desktop to a crawl when it runs.

Basically, a "handcrafted" cmatrix with compilation flags focused on optimization and the musl library (which is "technically better" than glib, a standard library on most distros).

Do feel free to try it out however, its only 139KiB -- click here.

tl;dr guide on how to get it running

1- Install docker (docker on most distros -- docker.io on ubuntu and friends)

2- sudo usermod -aG docker (addyourusernamehere)

3- reboot

4- run it with "docker run -it --rm --log-driver none --net none --read-only defnotgustavom/cmatrix:marchedition"

One that I didn't see on here that I've added to my list

  • tldr
    • simplified man pages with common example commands.-

If on desktop

  • distro-box
  • yakuake

As boring as it is, gcc.

I feel that.

I still favor gcc over clang

I switched to clang a long time ago, when gcc’s support for C++11 was not that good.

Why do you personally prefer gcc?

I develop mostly in C and largely for creating shellcode.

I have run into very weird issues with clang relocating code and data segments even when using a custom linker script

  • zsh+ohmyzsh
  • tilix
  • neovim
  • fzf
  • exa
  • pv
  • htop+iotop+nethogs
  • iperf3
  • nc
  • socat
  • nmap
  • python3
  • ansible
  • lolcat

If you like exa and fzf, you'll also like fd (or sometimes fd-find).

Woah, how I missed this? Thanks! Seems very comfy and way faster, btw on my deb machines it's fdfind

  • exa
  • ripgrep
  • tree
  • difftastic
  • fzf
  • git
  • neovim
  • zsh
  • starship
  • direnv
  • bat

clipcopy to pipe output of commands into the system clipboard

cat foo.txt | clipcopy

  • Tmux
  • NeoVim
  • Git
  • FZF
  • Fish
  • ssh Lots of others, but these are the day-to-day

+1 for fish shell. The lack of POSIX compliance really doesn't matter at all day-to-day, but all the qol features that the shell has absolutely do matter and they are so worth it.

And I forgot Python. As a Data Engineer. Whoops!

Every time I setup a new system, I always install these:

  • vim

  • zsh

  • git

  • rsync

  • tmux

  • mosh

  • btop

  • autossh

  • mc

  • direnv

  • asdf-vm

If the system is a desktop/laptop for personal use, then I'll install these too:

  • virt-manager
  • vscode
  • firefox
  • filezilla
  • mpv
  • yt-dlp
  • kdeconnect
  • onlyoffice

I would swap only with Libreoffice

This is just a matter of personal preference, but I can't stand libreoffice UI. It has more features but I don't open office documents much, mostly just some basic spreadsheets, so I can get away with using a document editor with less feature but easier to the eye.

To add to all great comments here I have one that I’ve used for ages and not seen mentioned here: lftp

It supports many protocols for ftp like over ssh and allows for shaky connections with resume and back in the days when this was more common I used to just run it in the background to download huge files that took days to download and it would gracefully just reconnect/resume/retry until done.

A few from the top of my head:

  • git
  • neovim
  • nix (package manager)
  • mpv + yt-dlp (stream music from yt with --no-video argument)
  • unbound
  • caddy (quickly spin up local web servers with https)

Edit: almost forgot, I've been using zsh + znap package manager and loving it.

I just tried out mpv and found it weird that it doesn't offer a menu for settings like vlc does. Is that the same for you too or do I just not know how to use it?

mpv is very barebones. Which is why I love it. You're supposed to configure it through its configuration file, and mainly use it with keyboard shortcuts.

There are wrappers for mpv that provide a more "full" GUI including settings, but mpv itself is more hotkey and config focused. You can do a lot of cool stuff using profiles and scripts. I get it if having docs open to configure a media player isn't your cup of tea, tho.

Some of the wrapper built on mpv are mpv.net, iina, and gnome-mpv.

Adding to that:

  • neovim for workstations
  • curl
  • wget
  • zsh

Edit: So essentially for me, I forgot to include it: vim, my beloved, always and for ever

Def curl and wget!

Zsh is great but I ended up falling back to bash for simplicity.

Im not really into the bash simplicity, but it's proven and stable.

I just have a git repo with configs on my git Server, I make changes regularly and roll them out with a quick bash script.

I always made sure my laptops had tlp installed. Now it seems openSUSE has cpu power profiles daemon or something by default, which it says conflicts with tlp when I tried to install it. So, I'm giving that a shot.

In order of use:

  • Firefox
  • Nvim (with a slightly modified kickstart.nvim)
  • SSH
  • Minicom
  • Python3
  • Git
  • CopyQ
  • Curl
  • Wget
  • Tmux
  • vim
  • git
  • rust (via rustup)
  • codium
  • pycharm ce
  • nu (shell)
  • starship (shell prompt)
  • firefox
  • sway
  • alacritty
  • python
  • iproute (or whatever package has ip in distro)
  • keepassxc
  • gcc/g++
  • make
  • podman (or docker)
  • ardour
  • kdenlive
  • vscode
  • kdenlive
  • gnome
  • xmrig
  • fish
  • element
  • telegram

I don't see enough of these here:

  • fzf

  • z (or zoxide)

Check them out

Stuff that I insist on regardless of platform (that is, I install these even onto Windows systems if I'm forced to use them):

  • Pale Moon (web browser)

  • Claws Mail

  • GIMP

  • vbindiff (command-line hex editor + diff utility for binary files)

  • mercurial

  • perl

Stuff that I require only on Linux systems for desktop use:

  • Pan (yes, really, I still use a Usenet newsreader on a daily basis)
  • qemu
  • conky
  • Aqualung (music player—I like odd software)
  • Inkscape
  • Scribus
  • PySol ;)
  • rdesktop (less a favourite than a regrettable necessity)
  • various TDE built-ins: konqueror (as file manager only), kedit, kate, konsole, ark

Is there a reason you use mercurial (like work) or are you using it, because you like it better than git or fossil?

Fossil I've never tried, but I utterly hate git. Nothing about how it works makes sense to me. Mercurial is, in my opinion, better-designed and easier to understand for my rather simple use cases. (I should note that I graduated from university around the time svn was replacing csv, so I was coding before there was such a thing as distributed version control.)

Lets make a list!

  1. zsh
  2. tmux
  3. htop
  4. ranger
  5. helix (if i can get it)
  6. fzf
  7. fd-find
  8. python-pip

The first 3 things I always add after a fresh install: aptitude emacs (-nox for servers) tree

Then it depends what the machine is for.

Since I'm not sure where to ask what is probably a basic question, what's a Linux package?

It's just a fancy way of saying program. So Linux programs.

Correct, the reason they are called packages, is that the package can contain other resources besides usable programs, like libraries used by other programs.

It's a signed archive of deployable files along with meta-data. Usually a cpio archive (which is similar to a tarball) with that extra signature wrapper and meta-data (which, itself, should be a list of files and checksums).

A proper package can validate a project's installation, either from the local database or from remote resources, at any time, which gives positive assurance that what is installed is what should be installed.

As well, proper package info is exported by SNMP to be consolidated centrally and validate what is vs what should be installed at the group level.

TL;DR? Like a tarball with tracking info, signatures, checksums, and top-to-bottom validation. If it's a good package, anyway.

So it's basically like installing a program in windows but, idk how to phrase it, more through and less prone to errors during installation?

You're really close, yeah .

But because like every layer is checksummed both in delivery AND when it's installed, so you can easily validate a delivered file, and it's all signed with signatures you can easily check, you can at least be assured that

  • what you installed is what that package delivered
  • which is what the authors wanted
  • and the package probably hasn't been tampered with
  • even weeks after install

the chance of problems should be reduced.

Bonus1: with a proper repo config, you can check for updates so fast. It's like the chocolatey windows repo but more formalized and usually vendor-maintained.

Bonus2: bad upgrade? Enterprise packages on Linux (long description; trust me) can be reverse-installed over what's there so you can back-revise or downgrade with almost no pain. It's a good oh-no fix. At every point you can still validate that what is there should be there, according to hard signatures at every stage.

Bonus3: grabbing os version 6.1 and upgrading to 6.5 OR just installing 6.5 fresh gives the same final content - files and services - when you're done. (almost entirely) No cruft, since package installs (because of the locking below) just install over themselves in a way Linux people just accept and windows people may freak over.

Linux bonus: Linux locks file differently; again, long description, so trust me or look it up. You can upgrade many files and services without stopping them, and then bounce a service or a host, so your patch-and-bounce process is fast, it happens after the upgrades, and is like 2 min or with systemd 3min.

Ultimately

  • use packages for wayyyy easier, consistent, reliable, tested, quasi-roll-back-able updates that you can validate all the way down.
  • and still that SNMP connection to check content remotely. It's so great.
  • vim
  • bashtop
  • cmus
  • ghidra
  • jq (pretty print Json)
  • screen
  • hexedit
  • python3 with pwntools
  • GCC, g++, make & libc6-dev
  • gdb with pwndbg
  • alacritty

Firefox, only office and spotify. That's all I need.

  • alacritty
  • neovim
  • tmux
  • vifm - terminal file manager with vi keybindings.
  • zathura - pdf reader with vi keybindings.
  • inxi - prints information about your hardware.
  • tldr - cheat sheet for common commands
  • qalculate - the most powerful calculator I've seen. There are qt, gtk and cli versions of it.
  • moreutils - collection of tools. My favourite is vidir, it opens directory structure in your terminal text editor, so that you can rename multiple files easily.
  • asciiquarium
  • cowsay
  • tty-clock
  • mc
  • nano
  • btop
  • htop
  • vscode
  • vivaldi
  • mariadb
  • apache
  • php
  • python3

tmux kak / vim ssh gcc python3 curl nc

'taint much, but I get by

  • fzf
  • git + lazygit
  • neovim
  • ranger
  • cargo
  • btm
  • starship
  • tmux
  • fish
  • socat
  • ngrep
  • vim
  • pv
  • htop
  • jq

Generally, everything else I need is there by default depending on the distro.

Home workstation-wise.. maybe:

  • meld
  • kdenlive
  • openscad
  • Qtvlm, zygrib and OpenCPN
  • gimp extras
  • golang
  • Inkscape
  • Wireshark
  • audacity

Not to duplicate some of the entries, I will keep it short

LF file manager (seen ranger mentioned but no lf)

Ytfzf for finding yt videos and playing them in MPV without the need of web browser

neovim, zsh, firefox, vlc, mpv, zsh plugins for autocomplete, ripgrep, zerotier vpn,fzf, pip3, htop, i am not sure what else

None of those are must-haves...

Shouldn't you have posted this to /c/archlinux or other meme-distro communities?

Aren't you enjoying everyone listing their favourite text editors and the fact they use ssh?