Hi all,
I am about to do a bit of a distro hop, and I am looking at Fedora and its spins, after years on Debian / POP.
I am not looking forward to setting it all up again, it’s a drag.
I wonder, is there a tool that lets me script installs?
I’ll want to check if application exists, and if so, update, otherwise, install. That kind of thing.
Things like:
- Telegram
- Joplin
- Docker
- Firefox
- Ungoogle Chromium
- Sublime Text
- VSCodium
- Keepass
- Thunderbird
- DBeaver
- Gimp
- Inkscape
- KDENLive
- Syncthing
- Steam
- VLC
- Localsend
- Flameshot
- Element
- Cherrytree
- Calibre
- Anydesk
I show the list, only to give an idea of what might be involved.
I’m new to Fedora, so not sure how it differs beyond the package manager. But, thought I’d ask.
Does such a tool exist, and is it worth my time? I can practice on a VM before trying on the final install/s.
Thank you
Using ansible will help you on your 2nd, 3rd , nth install.
But getting ansible to do what you want (plus testing) for the first time would takes 10x longer than manual install.
I think there’s xkcd about that.
Just installing applications is pretty easy though.
--- - hosts: localhost become: yes tasks: - name: Install required software dnf: state: latest name: - firefox - telegram - calibre
ansible-playbook install.yml
Something like that (untested)
I distinctly remember yum/dnf should be using a loop. Forget why but it’s recommended. Here’s a snippet from my playbook. Simply make the vars as you need and run.
- name: Install flathub as remote ansible.builtin.shell: cmd: flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo tags: - apps - name: Install flatpak apps community.general.flatpak: name: "{{ item }}" state: present loop: "{{ flatpaks }}" tags: - apps - name: Remove some default unused packages ansible.builtin.dnf: name: "{{ item }}" state: absent update_cache: no loop: "{{ remove }}" ignore_errors: true tags: - apps - name: Install our packages ansible.builtin.dnf: name: "{{ item }}" state: present update_cache: yes loop: "{{ rpms }}" ignore_errors: true tags: - apps``` On mobile. Apologies if formatting is off.