Para listar los paquetes instalados manualmente en el sistema, ejecuta el siguiente comando

    dnf history userinstalled

    Packages installed by user
    aajohan-comfortaa-fonts-3.105-0.1.20210729git2a87ac6.fc39.noarch
    ...
    ...
    rsms-inter-fonts-3.19-7.fc39.noarch
    syncthing-1.26.1-1.fc39.x86_64
    tesseract-langpack-spa-4.1.0-6.fc39.noarch
    zsh-5.9-8.fc39.x86_64

Para listar todos los paquetes instalados en el sistema

    dnf list installed

    Paquetes instalados
    Box2D.x86_64                                         2.4.1-11.fc39                       @anaconda             
    ImageMagick.x86_64                                   1:7.1.1.15-1.fc39                   @anaconda             
    ImageMagick-libs.x86_64                              1:7.1.1.15-1.fc39                   @anaconda             
    ...
    ...
    ...
    zram-generator-defaults.noarch                       1.1.2-8.fc39                        @anaconda             
    zsh.x86_64                                           5.9-8.fc39                          @fedora               
    zvbi.x86_64                                          0.2.35-21.fc39                      @anaconda             
    zxing-cpp.x86_64                                     2.0.0-5.fc39                        @anaconda             

Listar los paquetes instalados recientemente

    dnf list recent

    Fedora 39 - x86_64 - Updates                     16 kB/s |  16 kB     00:00    
    Fedora 39 - x86_64 - Updates                    653 kB/s | 1.9 MB     00:03    
    Última comprobación de caducidad de metadatos hecha hace 0:00:09, el mar 19 dic 2023 13:01:07.
    Paquetes añadidos recientemente
    SDL2.i686                                               2.28.5-1.fc39         updates
    SDL2.x86_64                                             2.28.5-1.fc39         updates
    lsp-plugins-vst.x86_64                                  1.2.13-2.fc39         updates
    ...
    ...
    xorg-x11-server-devel.x86_64                            1.20.14-28.fc39       updates
    xorg-x11-server-source.noarch                           1.20.14-28.fc39       updates
    xxd.x86_64                                              2:9.0.2167-1.fc39     updates

Para saber el numero de paquetes instalados

    dnf list installed | wc -l

    1779

Para sacar un listado de todos los paquetes instalados y guardarlos en un fichero

    dnf history userinstalled > /tmp/paquetes.txt
    cat /tmp/paquetes.txt

    Packages installed by user
    aajohan-comfortaa-fonts-3.105-0.1.20210729git2a87ac6.fc39.noarch
    anaconda-39.32.6-2.fc39.x86_64
    anaconda-install-env-deps-39.32.6-2.fc39.x86_64
    anaconda-live-39.32.6-2.fc39.x86_64
    ...
    ...
    rsms-inter-fonts-3.19-7.fc39.noarch
    syncthing-1.26.1-1.fc39.x86_64
    tesseract-langpack-spa-4.1.0-6.fc39.noarch
    zsh-5.9-8.fc39.x86_64

Volviendo a instalar los paquetes

Listamos los paquetes instalados por el usuario y los guardamos en un fichero

    dnf history userinstalled > /tmp/paquetes.txt
    cat /tmp/paquetes.txt

    Packages installed by user
    aajohan-comfortaa-fonts-3.105-0.1.20210729git2a87ac6.fc39.noarch
    anaconda-39.32.6-2.fc39.x86_64
    ...
    ...
    powerline-fonts-2.8.3-11.fc39.noarch
    rsms-inter-fonts-3.19-7.fc39.noarch
    syncthing-1.26.1-1.fc39.x86_64
    tesseract-langpack-spa-4.1.0-6.fc39.noarch
    zsh-5.9-8.fc39.x86_64

Eliminamos la primera fila del fichero /tmp/paquetes.txt para borrar el texto Packages installed by user

    tail -n +2 /tmp/paquetes.txt > /tmp/paquetes.txt.tmp && mv /tmp/paquetes.txt.tmp /tmp/paquetes.txt

Ahora basta con ejecutar la siguiente linea para volver a tener todos nuestros programas en nuestro sistema

    sudo dnf install -y $(cat /tmp/paquetes.txt)

    [sudo] contraseña para carlos: 
    Última comprobación de caducidad de metadatos hecha hace 0:42:08, el mar 19 dic 2023 15:29:29.
    ...
    ...
    El paquete hunspell-1.7.2-5.fc39.x86_64 ya está instalado.
    Dependencias resueltas.
    Nada por hacer.
    ¡Listo!

En caso de utilizar dnf list installed usaremos awk para limpiar la salida del comando y quedarnos con la primera columna que es la que contiene el nombre del paquete instalado

    dnf list installed | awk '{print $1}' > /tmp/paquetes.txt

    Paquetes
    Box2D.x86_64
    ImageMagick.x86_64
    ImageMagick-libs.x86_64
    LibRaw.x86_64
    ...
    ...
    zsh.x86_64
    zvbi.x86_64
    zxing-cpp.x86_64

Y también deberemos de eliminar la primera linea del fichero /tmp/paquetes.txt ya no contiene el nombre de un paquete

    tail -n +2 /tmp/paquetes.txt > /tmp/paquetes.txt.tmp && mv /tmp/paquetes.txt.tmp /tmp/paquetes.txt

Y ejecutamos

    sudo dnf install -y $(cat /tmp/paquetes.txt)

Espero que te haya gustado, pasa un gran día 🐧