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

  • Kuadhual@lemm.ee
    link
    fedilink
    arrow-up
    17
    ·
    3 months ago

    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.

    • exuA
      link
      fedilink
      English
      arrow-up
      8
      ·
      edit-2
      3 months ago

      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)

      • timbuck2themoon@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        3 months ago

        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.