Skip Navigation

Install any Fedora package (dnf/bubblewrap)

Here a method to access dnf packages wihout adding packages to OSTree (apart dnf).

 
    
$ sudo rpm-ostree install dnf

$ cat /etc/dnf/dnf.conf
[main]
installroot=/var/lib/fedora
use_host_config=True


$ cat /usr/local/bin/bubblewrap
#!/bin/bash
cmd=$(basename "$0")
if (( UID == 0 ))
then
    /usr/bin/bwrap --ro-bind /var/lib/fedora / --bind /root /root --dev /dev --proc /proc --tmpfs /tmp --tmpfs /run --ro-bind /run/systemd/resolve /run/systemd/resolve $cmd $@
else
    /usr/bin/bwrap --ro-bind /var/lib/fedora / --bind /var/home /var/home --dev /dev --proc /proc --tmpfs /tmp --tmpfs /run --bind /run/user/$UID /run/user/$UID --ro-bind /run/systemd/resolve /run/systemd/resolve $cmd $@


$ cat /usr/local/bin/dnf
#!/bin/bash
trap "/usr/local/bin/build_dnf_cache.sh 2>/dev/null" EXIT
/usr/bin/dnf $@


$ cat /usr/local/bin/build_dnf_cache.sh
#!/bin/bash
mkdir -p /usr/local/bwrap
rm -f /usr/local/bwrap/*

comm -23 <(ls /var/lib/fedora/usr/bin/) <(ls /usr/bin/) | while read command
do
    ln -s /usr/local/bin/bubblewrap /usr/local/bwrap/$command
done


$ cat /etc/environment.d/path.conf 
PATH=/usr/local/bin:/usr/local/bwrap:/usr/local/sbin:/usr/bin:/usr/sbin


  

Now you can install fedora rootfs:

 
    
$ sudo /usr/local/bin/dnf -y group install core
$ sudo reboot


  

And now

 
    
[~]$ sipcalc
bash: sipcalc : command not found
[~]$ sudo dnf install sipcalc
Mise à jour et chargement des dépôts :
Dépôts chargés.
Paquet                                              Architecture      Version                                              Dépôt                         Taille
Installation de :
 sipcalc                                            x86_64            1.1.6-28.fc42                                        fedora                      66.4 KiB

Résumé de la transaction :
 Installation :      1 paquet

La taille totale des paquets entrants est de 39 KiB. Un téléchargement de 39 KiB est nécessaire.
Après cette opération, 66 KiB supplémentaires seront utilisés (+66 KiB, -0 B).
Is this ok [y/N]: y
[1/1] sipcalc-0:1.1.6-28.fc42.x86_64                                                                                   100% | 298.4 KiB/s |  38.8 KiB |  00m00s
---------------------------------------------------------------------------------------------------------------------------------------------------------------
[1/1] Total                                                                                                            100% |  98.4 KiB/s |  38.8 KiB |  00m00s
Exécution de la transaction
[1/3] Vérifier les fichiers des paquets                                                                               100% | 500.0   B/s |   1.0   B |  00m00s
[2/3] Préparer la transaction                                                                                         100% |  17.0   B/s |   1.0   B |  00m00s
[3/3] Installation de sipcalc-0:1.1.6-28.fc42.x86_64                                                                   100% | 239.9 KiB/s |  68.4 KiB |  00m00s
Terminé !
[~]$ sipcalc
Usage: sipcalc [OPTIONS]... <[ADDRESS]... [INTERFACE]... | [-]>
Try 'sipcalc -h' for more information.


  

Bonus (manpages and bash-completion):

 
    

[~]$ cat /etc/systemd/system/var-usrlocal-share-man.mount 
[Unit]
Description=Mount /var/usrlocal/share/man

[Mount]
What=/var/lib/fedora/usr/share/man
Where=/var/usrlocal/share/man
Type=none
Options=bind

[Install]
WantedBy=multi-user.target
[~]$ cat /etc/systemd/system/var-usrlocal-share-bash\\x2dcompletion.mount 
[Unit]
Description=Mount /var/usrlocal/share/bash-completion

[Mount]
What=/var/lib/fedora/usr/share/bash-completion
Where=/var/usrlocal/share/bash-completion
Type=none
Options=bind

[Install]
WantedBy=multi-user.target

$ sudo systemctl enable --now "var-usrlocal-share-bash\\x2dcompletion.mount" var-usrlocal-share-man.mount

  
0 comments

No comments