Je n'essayais pas de faire exploser ta TODO, rassure-toi.
Cependant, c'est plutôt un simple système de tagfiles qui fait défaut que la gestion des dépendances à proprement parler. Certes, j'ai installé Slack la première fois en full install, mais je n'aurais jamais n'y sentir chez moi 17 ans sans les tagfiles.
Note que ce n'est rien d'insurmontable. Les paquets ayant tous un nom unique, la gestion par dossier-catégorie est en fait pure coquetterie. Il suffit donc de supporter un fichier, une liste de paquets que l'utilisateur autorise à s'installer. Vu ta maîtrise du shell, c'est vraiment un filtre trivial à faire. Mais bon, c'est vraiment juste une amicale suggestion, ça reste bien entendu toi le capitaine, avec ton bateau et ta feuille de route, pas de lézard.
Seb a écrit : ↑03 décembre 2022, 18:55Note que ce n'est rien d'insurmontable. Les paquets ayant tous un nom unique, la gestion par dossier-catégorie est en fait pure coquetterie. Il suffit donc de supporter un fichier, une liste de paquets que l'utilisateur autorise à s'installer. Vu ta maîtrise du shell, c'est vraiment un filtre trivial à faire. Mais bon, c'est vraiment juste une amicale suggestion, ça reste bien entendu toi le capitaine, avec ton bateau et ta feuille de route, pas de lézard.
C'est d'accord si on se partage le travail. Ta mission est d'ajouter une fonction install_mini au script functions. En gros elle fera la même chose que la fonction installfromiso, restreinte à l'installation des paquets listés dans le fichier texte minislint que je me charge d'écrire et qui sera disponible dans le répertoire /usr/doc de l'initrd, avec un nom de paquet par ligne. Pour en discuter plus avant tu peux écrire une issue ici et quand tu seras prêt une pull request là. Pour info, le fichier qui source le script functions puis effectue l'installation est start .
Mais après tout c'est de bonne guerre, alors soyons joueur. Je pense qu'il est inutile de faire un mode dédié tant qu'il n'y a pas une vraie demande, aussi je propose d'amender discrètement installfromiso:
--- functions.orig
+++ functions
@@ -56,6 +56,9 @@
ISO="/ISO"
# INSTALL is the directory where this script will store its temporary files.
INSTALL="/INSTALLER"
+# EXPERT is the package list the user allows to install.
+# One package name per line, comments allowed beginning with '#'.
+EXPERT=/expert
# MINPARTSIZE is the minimum number of megabytes for an added partition
# in auto partitioning mode
# current size of the file system for which we allow to shrink it.
@@ -2700,6 +2703,16 @@
fi
fi
}
+expertmode() {
+ if [ ! -f "$EXPERT" ]; then
+ # no filter, we just pass the list.
+ cat
+ return $?
+ fi
+ awk '(FNR == NR){ sub(/ *#.*/,""); if (NF) ALLOW[$1]; next }
+ { pkg=$0; gsub(/^.*\/|-[^-]*-[^-]*-[^-]*$/, "", pkg) }
+ (pkg in ALLOW) { print }' "$EXPERT" -
+}
installfromiso() {
if [ ! "$FAILED" ]; then
echo "no need to install from ISO" >>$INSTALL/log
@@ -2711,7 +2724,7 @@
ls $SLINT/var/lib/pkgtools/packages|while read i; do
echo "$(basename $i|sed "s/-[^-]*-[^-]*-[^-]*$//")" >> $PKGLISTS/installed;
done
- ls -1 $ISO/slint/*txz|while read PKG; do
+ ls -1 $ISO/slint/*txz| expertmode | while read PKG; do
[ "$DISPLAYNAME" ] && displaydescription $ISO/slint $PKG
echo "installing $PKG" >>$PKGLISTS/loginstall
spkg --root=$SLINT -qq --no-gtk-update-icon-cache --no-ldconfig -i --install-new --reinstall $PKG 1>>$PKGLISTS/loginstall 2>$PKGLISTS/spkgerror
@@ -2729,7 +2742,7 @@
exit
fi
done
- PKG=$(find $ISO/slint/locales -name "libreoffice-l10n-${lo}-*t?z")
+ PKG=$(find $ISO/slint/locales -name "libreoffice-l10n-${lo}-*t?z" | expertmode)
if [ "$PKG" ]; then
SHORT=$(basename $PKG|sed "s/-[^-]*-[^-]*-[^-]*$//")
if ! grep -q "^${SHORT}$" $PKGLISTS/installed; then
@@ -2746,7 +2759,7 @@
fi
fi
fi
- PKG=$(find $ISO/slint/locales -name "libreoffice-help-${lo}-*t?z")
+ PKG=$(find $ISO/slint/locales -name "libreoffice-help-${lo}-*t?z" | expertmode)
if [ "$PKG" ]; then
SHORT=$(basename $PKG|sed "s/-[^-]*-[^-]*-[^-]*$//")
if ! grep -q "^${SHORT}$" $PKGLISTS/installed; then
@@ -2763,7 +2776,7 @@
fi
fi
fi
- PKG=$(find $ISO/slint/locales -name "aspell-${asp}-*t?z")
+ PKG=$(find $ISO/slint/locales -name "aspell-${asp}-*t?z" | expertmode)
if [ "$PKG" ]; then
SHORT=$(basename $PKG|sed "s/-[^-]*-[^-]*-[^-]*$//")
if ! grep -q "^${SHORT}$" $PKGLISTS/installed; then
Pour l'intégration, un message comme quoi $EXPERT a été trouvé devrait suffire.