[pacman.conf] évolution (résolu)

Questions et astuces concernant l'installation et la configuration d'archlinux
Avatar de l’utilisateur
dmganges
Hankyu
Messages : 32
Inscription : ven. 04 nov. 2022, 03:22

[pacman.conf] évolution (résolu)

Message par dmganges »

Bonjour,
Contexte :
J'utilise peu Arch, donc je le connais très peu.
Je l'utilise depuis 4 ans au travers de l'environnement SystemRescue : https://www.system-rescue.org/Download/
Je fais une customisation sur DD selon :https://www.system-rescue.org/ (Ça me donne un environnement plutôt bien bétonné pour accéder à ma banque...)
À laquelle j'ajoute des packages avec pacman
Initialement j'ai dû modifier le pacman.conf existant dans l'archive SystemRescue pour pouvoir faire des installations
Le script d'alors est devenu, pour être fonctionnel :

Code : Tout sélectionner

#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives

#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir     = /
#DBPath      = /var/lib/pacman/
#CacheDir    = /var/cache/pacman/pkg/
#LogFile     = /var/log/pacman.log
#GPGDir      = /etc/pacman.d/gnupg/
#HookDir     = /etc/pacman.d/hooks/
HoldPkg     = pacman glibc
#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
#UseDelta    = 0.7
Architecture = auto

# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg   =
#IgnoreGroup =

#NoUpgrade   =
#NoExtract   =

# Misc options
#UseSyslog
#Color
#TotalDownload
# We cannot check disk space from within a chroot environment
#CheckSpace
#VerbosePkgLists

# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
# DUF # SigLevel    = Required DatabaseOptional
SigLevel    = Never 
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required

# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with `pacman-key --populate archlinux`.

#
# REPOSITORIES
#   - can be defined here or included from another file
#   - pacman will search repositories in the order defined here
#   - local/custom mirrors can be added here or in separate files
#   - repositories listed first will take precedence when packages
#     have identical names, regardless of version number
#   - URLs will have $repo replaced by the name of the current repo
#   - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
#       [repo-name]
#       Server = ServerName
#       Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#

##################
# SystemRescue
##################
# offers 2 different set of repositories, snapshot (the default) and rolling.
# With snapshot you get the packages at the moment of SystemRescue release
# rolling is the traditional rolling-release repository of Arch
#
# You can switch on a per-command basis like this:
# pacman --config /etc/pacman-rolling.conf <regular-pacman-command>
#
# or you can change the /etc/pacman.conf symlink for a permanent change

[core]
Include = /etc/pacman.d/mirrorlist-snapshot

[extra]
Include = /etc/pacman.d/mirrorlist-snapshot

[community]
Include = /etc/pacman.d/mirrorlist-snapshot
Tout a bien fonctionné pendant environ 4 ans.

Avec la dernière mouture de SystemRescue les ajouts de packages échouaient.
En grattant sur le net (je n'ai plus le lien) j'ai appris que j'avais 2 ans de retard et qu'il fallait commenter les 2 dernières lignes :

Code : Tout sélectionner

#[community]
#Include = /etc/pacman.d/mirrorlist-snapshot
Ce que j'ai fait et ça fonctionne correctement à nouveau :D


Par curiosité j'ai essayé le dernier pacman.conf livré avec la dernière release de SystemRescue : SystemRescue 12.00
Je me retrouve encore avec une erreur de syncronisation de database :

Code : Tout sélectionner

root@sysrescue /etc]# pacman -Syu
:: Synchronizing package databases...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: archive.archlinux.org
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: europe.archive.pkgbuild.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: america.archive.pkgbuild.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: asia.archive.pkgbuild.com
error: failed to synchronize all databases (error invoking external downloader)
[root@sysrescue /etc]# 
La dernière version du pacman.conf :

Code : Tout sélectionner

#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives

#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir     = /
#DBPath      = /var/lib/pacman/
#CacheDir    = /var/cache/pacman/pkg/
#LogFile     = /var/log/pacman.log
#GPGDir      = /etc/pacman.d/gnupg/
#HookDir     = /etc/pacman.d/hooks/
HoldPkg     = pacman glibc
#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u

# wrap downloading in a faketime call that uses the real "today" as date
# this is to counter the faketime date introduced when running "pacman-faketime"
# necessary to deal with TLS certificate lifetimes
XferCommand = /usr/bin/faketime "today" /usr/bin/curl --continue-at - --output "%o" --fail --location "%u"

#CleanMethod = KeepInstalled
#UseDelta    = 0.7
Architecture = auto

# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg   =
#IgnoreGroup =

#NoUpgrade   =
#NoExtract   =

# Misc options
#UseSyslog
#Color
#TotalDownload
# We cannot check disk space from within a chroot environment
#CheckSpace
#VerbosePkgLists

# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel    = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required

# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with `pacman-key --populate archlinux`.

#
# REPOSITORIES
#   - can be defined here or included from another file
#   - pacman will search repositories in the order defined here
#   - local/custom mirrors can be added here or in separate files
#   - repositories listed first will take precedence when packages
#     have identical names, regardless of version number
#   - URLs will have $repo replaced by the name of the current repo
#   - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
#       [repo-name]
#       Server = ServerName
#       Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#

##################
# SystemRescue
##################
# offers 2 different set of repositories, snapshot (the default) and rolling.
# With snapshot you get the packages at the moment of SystemRescue release
# rolling is the traditional rolling-release repository of Arch
#
# You can switch on a per-command basis like this:
# pacman --config /etc/pacman-rolling.conf <regular-pacman-command>
#
# or you can change the /etc/pacman.conf symlink for a permanent change

[core]
Include = /etc/pacman.d/mirrorlist-snapshot

[extra]
Include = /etc/pacman.d/mirrorlist-snapshot
Pour simplifier dans le mien j'ai dû commenter :
# DUF # SigLevel = Required DatabaseOptional
Et je n'ai pas de :

Code : Tout sélectionner

XferCommand
Dans l'officiel il y en a un :

Code : Tout sélectionner

XferCommand = /usr/bin/faketime "today" /usr/bin/curl --continue-at - --output "%o" --fail --location "%u"
Mais l'officiel tombe en :

Code : Tout sélectionner

error: failed to synchronize all databases (error invoking external downloader)
Alors que mon ancètre fonctionne, avec seulement les commentaires :

Code : Tout sélectionner

#[community]
#Include = /etc/pacman.d/mirrorlist-snapshot
(Lignes absentes du nouveau pacman.conf)

Donc (enfin) mes questions :
1) Le fait de ne pas avoir de [b][i]XferCommand[/i][/b] dans le mien est-il préjudiciable ?
2) Puis-je continuer ainsi sans risque ?
3) Que signifie cette syntaxe ? :

Code : Tout sélectionner

XferCommand = /usr/bin/faketime "today" /usr/bin/curl --continue-at - --output "%o" --fail --location "%u"
qui visiblement fait tomber l'installation de package dans l'environnement SystemRescue 12.00...

Je pourrais me contenter de continuer ainsi, mais la curiosité me pousse à poser les questions.
En plus à 73 ans je commence à pédaler dans le vide :lol:

Désolé d'avoir été si long.
Merci
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17563
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [pacman.conf] évolution

Message par benjarobin »

Bonjour,
Aucune idée quand à la configuration de XferCommand qui n'est clairement pas nécessaire avec une Arch classique... Pas sûr de comprendre la raison...
Quand à l'erreur "Could not resolve host", tu es sûr d'avoir internet / d'être connecté avec une IP et DNS valide ? Tu peux le vérifier simplement avec la commande : ping archive.archlinux.org
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
dmganges
Hankyu
Messages : 32
Inscription : ven. 04 nov. 2022, 03:22

Re: [pacman.conf] évolution

Message par dmganges »

Bonsoir et merci benjarobin pour ta réponse.

Concernant internet je l'ai, j'utilise cette configuration pour accéder à ma banque avec Firefox.
Les packages que j'ajoute ne sont pas indispensables pour cet accès.
Lorsque je tombe en échec sur tous les packages, ça ne n’empêche pas d'accéder à Internet.
Pour info voici les packages que j'ajoute dans l'iso, juste de quoi avoir l'économiseur d'écran + des modules Perl + pulseaudio pour avoir du son seulement sur Firefox :

Code : Tout sélectionner

	if [[ ${MODE} == "CHROOT" ]]; then
		echo -e $DV
		echo "===> On ajoute des packages dans "${DIR_BASE}/squashfs-root
		echo -e $FA
		
		chroot ${DIR_BASE}/squashfs-root <<END
		PS1='Chroot-> '
		pacman --noconfirm -Syu > MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy linux >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy make >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy xscreensaver >> MK_sysrescue.log 2>&1
		yes |  cpan install File::Spec >> MK_sysrescue.log 2>&1
		yes |  cpan install MIME::Base64 >> MK_sysrescue.log 2>&1
		yes |  cpan install Tk >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy perl-tk >> MK_sysrescue.log 2>&1
		yes |  cpan install Config::Std >> MK_sysrescue.log 2>&1
		yes |  cpan install Getopt::Long >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy pulseaudio >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy pulseaudio-alsa >> MK_sysrescue.log 2>&1
		exit 0
END
	fi
Peux-tu me dire si dans un pacman.conf officiel on trouve : XferCommand éventuellement avec quelle syntaxe ?

Là je n'ai pas le temps pour refaire une config complète, je ferai un essai demain matin en laissant :

Code : Tout sélectionner

XferCommand = /usr/bin/faketime "today" /usr/bin/curl --continue-at - --output "%o" --fail --location "%u"
de la SystemRescue 12.00 officielle, et je commenterai seulement :

Code : Tout sélectionner

SigLevel    = Required DatabaseOptional
que j'avais dû commenter dans les SystemRescue d'y il a 4 ans jusqu'à la 12.00...

Encore merci, et à demain :)
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17563
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [pacman.conf] évolution

Message par benjarobin »

Comme indiqué dans mon message précédent, la configuration de XferCommand n'est pas nécessaire (en tout cas dans une Arch classique, aucune idée de ce qui est fait ici).
Cette configuration permet d'utiliser un "external downloader", à la place du "downloader" interne à pacman.

Tu n'avais pas indiqué que tu lançais pacman depuis un chroot.

Tu ne devrais pas utiliser chroot, mais arch-chroot afin de rentrer dans le chroot, c'est très certainement là la source de ton problème, car les DNS ne sont pas configurés (donc pas "d'internet").
Il y a très certainement d'autres choses qui ne sont pas correctement configuré avant de rentrer dans le chroot, pour rappel arch-chroot réalise les opérations suivantes (en gros) :
- "bind mount" tout ce qui est nécessaire
- Configurer /etc/resolv.conf

Je ne sais pas quand tu lances ce script, depuis où ? Peux tu détailler ce que tu fais ?

Note: Sinon par rapport à ton script, tu sais que tu peux installer tous les paquets d'un coup ? Ce n'est pas nécessaire de lancer pacman N fois.
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
dmganges
Hankyu
Messages : 32
Inscription : ven. 04 nov. 2022, 03:22

Re: [pacman.conf] évolution (Résolu)

Message par dmganges »

Bonjour et MERCI benjarobin !

Bien vu le :
Tu ne devrais pas utiliser chroot, mais arch-chroot afin de rentrer dans le chroot, c'est très certainement là la source de ton problème, car les DNS ne sont pas configurés (donc pas "d'internet").
J'ai corrigé ma procédure en conséquence.
Je colle ci-dessous toutes les investigations (c'est plus pratique...) :

Code : Tout sélectionner

##################################################
EN CONSERVANT le config.conf de SystemRescue 12.00

root @ sysrescue
/etc
#> pacman -Syu
:: Synchronizing package databases...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  116k  100  116k    0     0   235k      0 --:--:-- --:--:-- --:--:--  235k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 404
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 7887k  100 7887k    0     0  3848k      0  0:00:02  0:00:02 --:--:-- 3849k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 404
:: Starting full system upgrade...
 there is nothing to do
root @ sysrescue
/etc
#> 

#########################
EN COMMENTANT seulement :
# XferCommand = /usr/bin/faketime "today" /usr/bin/curl --continue-at - --output "%o" --fail --location "%u"

ça fonctionne :
#> pacman -Syu
:: Synchronizing package databases...
 core is up to date
 extra is up to date
:: Starting full system upgrade...
 there is nothing to do
root @ sysrescue
/etc
#> 

###############
EN CONSERVANT :
XferCommand = /usr/bin/faketime "today" /usr/bin/curl --continue-at - --output "%o" --fail --location "%u"

ET EN REMPLAçANT chroot par arch-root :

if [[ ${MODE} == "CHROOT" ]]; then
		echo -e $DV
		echo "===> On ajoute des packages dans "${DIR_BASE}/squashfs-root
		echo -e $FA
		
		arch-chroot ${DIR_BASE}/squashfs-root <<END
		PS1='Chroot-> '
		pacman --noconfirm -Syu > MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy linux >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy make >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy xscreensaver >> MK_sysrescue.log 2>&1
		yes |  cpan install File::Spec >> MK_sysrescue.log 2>&1
		yes |  cpan install MIME::Base64 >> MK_sysrescue.log 2>&1
		yes |  cpan install Tk >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy perl-tk >> MK_sysrescue.log 2>&1
		yes |  cpan install Config::Std >> MK_sysrescue.log 2>&1
		yes |  cpan install Getopt::Long >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy pulseaudio >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy pulseaudio-alsa >> MK_sysrescue.log 2>&1
		exit 0
END
	fi
	mv ${DIR_BASE}/squashfs-root/root/MK_sysrescue.log ${DIR_BASE}/ > /dev/null 2>&1
	
	return
}

write_iso()

==> WARNING: /root/MK_Rescue/sysresccd/squashfs-root is not a mountpoint. This may have undesirable side effects.
root @ sysrescue
/root
#> PS1='Chroot-> '
Chroot-> pacman --noconfirm -Syu > MK_sysrescue.log 2>&1
Chroot-> pacman --noconfirm -Sy linux >> MK_sysrescue.log 2>&1
Chroot-> pacman --noconfirm -Sy make >> MK_sysrescue.log 2>&1
Chroot-> pacman --noconfirm -Sy xscreensaver >> MK_sysrescue.log 2>&1
Chroot-> yes |  cpan install File::Spec >> MK_sysrescue.log 2>&1
Chroot-> yes |  cpan install MIME::Base64 >> MK_sysrescue.log 2>&1
Chroot-> yes |  cpan install Tk >> MK_sysrescue.log 2>&1
Chroot-> pacman --noconfirm -Sy perl-tk >> MK_sysrescue.log 2>&1
Chroot-> yes |  cpan install Config::Std >> MK_sysrescue.log 2>&1
Chroot-> yes |  cpan install Getopt::Long >> MK_sysrescue.log 2>&1
Chroot-> pacman --noconfirm -Sy pulseaudio >> MK_sysrescue.log 2>&1
Chroot-> pacman --noconfirm -Sy pulseaudio-alsa >> MK_sysrescue.log 2>&1
Chroot-> exit 0
exit

write_iso()

Parallel mksquashfs: Using 4 processors
Creating 4.0 filesystem on airootfs.sfs, block size 131072.
[=========/|
...

ça fonctionne mais j'ai un petit warning :
==> WARNING: /root/MK_Rescue/sysresccd/squashfs-root is not a mountpoint. This may have undesirable side effects.


ET A LA FIN DU MKSQUASHFS j'ai quelques petites anomalies (absentes en chroot)

[============================================================================================| ] 109219/109334  99%
Unrecognised xattr prefix system.posix_acl_default
Unrecognised xattr prefix system.posix_acl_access
Unrecognised xattr prefix system.posix_acl_default
[=============================================================================================|] 109334/109334 100%

Exportable Squashfs 4.0 filesystem, xz compressed, data block size 131072
	compressed data, compressed metadata, compressed fragments,
	compressed xattrs, compressed ids
	duplicates are removed
Filesystem size 1702551.78 Kbytes (1662.65 Mbytes)
	46.22% of uncompressed filesystem size (3683469.64 Kbytes)
Inode table size 818592 bytes (799.41 Kbytes)
	22.42% of uncompressed inode table size (3651971 bytes)
Directory table size 998592 bytes (975.19 Kbytes)
	37.63% of uncompressed directory table size (2653598 bytes)
Xattr table size 130 bytes (0.13 Kbytes)
	40.62% of uncompressed xattr table size (320 bytes)
Number of duplicate files found 7162Number of symbolic links 6501
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 4
Number of directories 10801
Number of hard-links 2175
Number of ids (unique uids + gids) 25
Number of uids 13
	root (0)
	daemon (2)
	openvpn (965)
	partimag (110)
	unknown (1000)
	unknown (2048)
	colord (971)
	uuidd (68)
	rpcuser (34)
	ntp (87)
	rpc (32)
	systemd-network (979)
	tss (974)
Number of gids 23
	root (0)
	daemon (2)
	named (40)
	network (90)
	partimag (110)
	polkitd (102)
	unknown (1000)
	unknown (2048)
	ftp (11)
	groups (983)
	locate (21)
	tty (5)
	dbus (81)
	utmp (997)
	games (50)
	colord (971)
	uuidd (68)
	rpcuser (34)
	rpc (32)
	systemd-network (979)
	tss (974)
	systemd-journal-remote (977)
	systemd-journal (982)

sha512sum()


===> Copies dans /root/sda1/sysresccd/x86_64


TOUT est fini !
Rebooter


root @ sysrescue
/root/MK_Rescue/sysresccd
#> 


##########################
Pour ce qui est du WARNING, je suis obligé de m'adapter à la procédure existante.
En gros si je modifie des scripts dans l'environnement de boot, je les modifie seulement en mémoire.
La procédure préconisée consiste à pousser ces scripts (.bashrc, .config, .mozilla, .screenrc, .zlogin, .zshrc ... ... ...) dans un environnement qui va servir à refaire l'iso.
Mais comme en ce qui me concerne, je ne me contente pas seulement de modifier l'environnement, j'ajoute des packages, il me faut chrooter dans cet environnement déjà en partie à jour, et qui se trouve dans :
/root/MK_Rescue/sysresccd/squashfs-root

#> cd squashfs-root
root @ sysrescue
/root/MK_Rescue/sysresccd/squashfs-root
#> ll
total 68K
drwxr-xr-x 17 root root 4,0K nov.  19  2022 .
drwxr-xr-x 19 root root 4,0K mars  18 04:58 ..
lrwxrwxrwx  1 root root    7 nov.  21 09:56 bin -> usr/bin
drwxr-xr-x  3 root root 4,0K mars  18 04:55 boot
drwxr-xr-x  2 root root 4,0K mars  15 09:38 dev
drwxr-xr-x 92 root root 4,0K mars  18 04:58 etc
drwxr-xr-x  2 root root 4,0K nov.  21 09:56 home
lrwxrwxrwx  1 root root    7 nov.  21 09:56 lib -> usr/lib
lrwxrwxrwx  1 root root    7 nov.  21 09:56 lib64 -> usr/lib
drwxr-xr-x  2 root root 4,0K nov.  21 09:56 mnt
drwxr-xr-x  3 root root 4,0K mars  15 18:42 opt
dr-xr-xr-x  2 root root 4,0K mars  15 09:38 proc
drwxr-xr-x 87 root root 4,0K mars  18 04:58 root
drwxr-xr-x  2 root root 4,0K mars  15 09:38 run
lrwxrwxrwx  1 root root    7 nov.  21 09:56 sbin -> usr/bin
drwxr-xr-x  3 root root 4,0K mars  15 09:38 share
drwxr-xr-x  4 root root 4,0K mars  15 09:38 srv
dr-xr-xr-x  2 root root 4,0K mars  15 09:38 sys
drwxrwxrwt  2 root root 4,0K mars  15 09:38 tmp
drwxr-xr-x  9 root root 4,0K mars  18 04:58 usr
drwxr-xr-x 13 root root 4,0K mars  15 09:38 var
root @ sysrescue
/root/MK_Rescue/sysresccd/squashfs-root
#> 

####################
####################
====================
Donc là je vais rebooter sur l'iso générée, et je reviens 

ET ça fonctionne parfaitement !
MERCI
Je ne connaissais pas l'existence de arch-chroot :oops:

Il est certainement possible de faire plus sioux, mais il ne me faut pas oublier que je dois maintenir... et déjà là pour moi ça fait usine à gaz :lol:

Je réponds depuis cet environnement, voila ce que ça donne :
Image
Tu remarqueras les terminaux à l'ancienne :wink:

Concernant :
Note: Sinon par rapport à ton script, tu sais que tu peux installer tous les paquets d'un coup ? Ce n'est pas né


cessaire de lancer pacman N fois.
Je n'y tiens pas particulièrement :
1) je n'ai pas beacoup de packages à installer
2) ça me permet d'avoir une trace exploitable en cas de pb
Mais ne connaissant pas cette possibilité... je suis preneur, si tu as le temps, de la syntaxe adéquate :)

Encore MERCI !
Si tu souhaites d'autres explications, si je n'ai pas été assez clair :
n'hésite pas, à la retraite on a du temps libre :D

PS : Je dois être un manche, je n'arrive pas à mettre [Résolu] hors mis dans le titre de ce dernier message
Avatar de l’utilisateur
papajoke
Elfe
Messages : 811
Inscription : sam. 30 août 2014, 19:54

Re: [pacman.conf] évolution

Message par papajoke »

bonjour

pourquoi tu n'ajoutes pas simplement tes paquets (si réellement besoin pour la banque!) [linux, xscreensaver, make/base-devel et perl-tk?] dans packages ?
et si pour usage banque uniquement, il y a aussi du ménage à faire
ps: pulseaudio est déjà dans la liste
Arch stable - Kde 6 / fish - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Avatar de l’utilisateur
dmganges
Hankyu
Messages : 32
Inscription : ven. 04 nov. 2022, 03:22

Re: [pacman.conf] évolution

Message par dmganges »

Bonjour papajoke,
Oui il y a beaucoup de ménage à faire...

Explication qui n'est pas une justification :wink:

1) ça fait 23 ans que je ne suis plus en activité, donc plus de contact avec la réalité, et personne avec qui blablater informatique...
2) ça fait au moins 15 ans que j'utilise SystemRescue qui à l'époque était SystemRescueCD sur Linux Gentoo toujours réalisé par M. Félix Dupoux
à l'époque il n'y avait pas pulseaudio par exemple...
Je vois que maintenant M. Dupoux a même introduit pipewire, je sais qu'il est bien meilleur que pulseaudio, mais pour mon petit besoin il me convient
Donc je traîne de vieilles choses...

3) j’utilise le même noyau produit par SystemRescue, 1) pour accéder à ma banque uniquement (si on sort de Firefox on tombe irrémédiablement sur un reboot..., 2) pour avoir un environnement plus large qui me permet surtout de faire des manip avec GParted que j'utilise pour faire toutes mes sauvegardes.

J'utilise le grub de Arch pour piloter le tout :

Petit extrait du grub.cfg :

Code : Tout sélectionner

menuentry 'Windows 7' {
        set root='hd0,msdos3'
        search --no-floppy --set=root --label Win7_DoMi
        chainloader +1
}

menuentry '  SystemRescue Banque' {
	set root='hd0,msdos3'
	search --no-floppy --label boot --set=root
	linux  /sysresccd/boot/x86_64/vmlinuz archisobasedir=sysresccd archisolabel=boot copytoram setkmap=fr dobanque
	initrd /sysresccd/boot/x86_64/sysresccd.img
}

menuentry '  SystemRescue' {
	set root='hd0,msdos3'
	search --no-floppy --label boot --set=root
	linux  /sysresccd/boot/x86_64/vmlinuz archisobasedir=sysresccd archisolabel=boot copytoram setkmap=fr
	initrd /sysresccd/boot/x86_64/sysresccd.img
}

menuentry '   ' {
	true
}

menuentry '  Rescue  64 Ancien 5.2.1 Banque' {
        set root='hd0,msdos3'
        search --no-floppy --label boot --set=root
        linux /sysrcd_521/rescue64_521 subdir=sysrcd_521 docache domount dobanque dostartx setkmap=fr
        initrd /sysrcd_521/initram_521.igz
}


menuentry '  Rescue  64 Ancien 5.2.1' {
        set root='hd0,msdos3'
        search --no-floppy --label boot --set=root
        linux /sysrcd_521/rescue64_521 subdir=sysrcd_521 docache domount dostartx setkmap=fr
        initrd /sysrcd_521/initram_521.igz
}

menuentry '   ' {
	true
}
menuentry '  Reboot' {
	reboot
}
menuentry '  Power off' {
	halt
}
J'ai la possibilité de lancer 2 configurations différentes de cet unique noyau en différenciant à partir de dobanque dans grub

NB: Je conserve même des configurations qui datent de SystemRescueCD 5.2.1 pour y puiser des idées si besoin :lol:

Bref il me faudrait y passer au moins une semaine pour tout refaire propre... et encore !!!
Ce n'est pas un environnement qui intéresse beaucoup de monde, donc au moindre problème je me retrouverais seul :(
Depuis que SystemRescue est sur Arch, c'est la première fois que je dois revoir un script, et quand il me faut replonger dans cette usine à gaz à 73 ans ça me porte peine :)

Un petit aperçu du script principal, qu'il me suffit de lancer avec en paramètre MAJFF pour MàJ Firefox et CHROOT pour une MàJ SystemRescue

Code : Tout sélectionner

#! /usr/bin/env bash
#
# sysrescue-customize - customize an existing SystemRescue iso image
# 
# Author: Gerd v. Egidy
# SPDX-License-Identifier: GPL-3.0-or-later
#
# see https://www.system-rescue.org/scripts/sysrescue-customize/ for details

# MK_sysrescue puise dans sysrescue-customize
# Auteur : dmganges
# Libre de droit
# La reconstruction de l'ISO n'est pas prévue, SystemRescue sur clé USB étant suffisant

# /dev/sda8  (FS_NTFS)   Seulement pour les downloads BANQUES et autres
# /dev/sda10 (MK_Rescue) Espace de développement SystemRescue
#

# Contrôle de laversion du bash
if [ -n "$POSIXLY_CORRECT" ] || [ -z "$BASH_VERSION" ]; then
    echo "ERROR: bash >= 4.0 is required for this script."
    exit 1
fi

if (( BASH_VERSINFO[0]*100 + BASH_VERSINFO[1] < 400 )); then
    echo "ERROR: bash >= 4.0 is required for this script."
    exit 1
fi


# we expect the isohybrid-mbr file to be within the iso image at this path
# xorriso doesn't require the file to be in the iso filesystem, but SystemRescue always provides it, so we can rely on it
# Nous nous attendons à ce que le fichier isohybrid-mbr soit dans l'image iso à ce path
# xorriso n'exige pas que le fichier soit dans le système de fichiers iso, mais SystemRescue le fournit toujours, nous pouvons donc nous y fier
#
# Mais dmgandes ne reconstuis pas l'ISO
# ISOHYBRID_MBR="isolinux/isohdpfx.bin"

alias cp=cp
alias rm=rm
alias echo='echo -e'
declare -g DR='\033[1;91m'
declare -g DV='\033[1;92m'
declare -g DB='\033[1;94m'
declare -g FA='\033[0m'

print_usage()
{
echo Usages :
echo "MK_sysrescue TOUT"
echo "MK_sysrescue RIEN"
echo "MK_sysrescue CHROOT"
echo "MK_sysrescue READ"
echo "MK_sysrescue RECI"
echo "MK_sysrescue WRITE"
echo "MK_sysrescue MAJFF"
echo "MK_sysrescue HELP"
echo ""
}

print_help()
{
    echo "                  MK_sysrescue customize un SystemRescue idepuis l'ISO téléchargée sur :"
    echo "                     https://www.system-rescue.org/Download/"
    echo ""
    echo "Usages :"
    echo "MK_sysrescue      TOUT | RIEN | CHROOT | READ | RECI | WRITE | MAJFF | HELP"
    echo ""
    echo "- Le mode TOUT    Part toujours de la version ISO téléchargée, génère une archive"
    echo "                     Avec TOUTES les modificatons contenues dans RECIPE_00-TOUT"
    echo "                     Puis la pousse dans le répertoire de destination :"
    echo "                        DIR_CCD=/root/sda1/sysresccd/x86_64"
    echo ""
    echo "- Le mode RIEN    Part toujours de la version ISO téléchargée, génère une archive"
    echo "                     Avec RIEN dans RECIPE_00-RIEN, pour tester une nouvelle version sans modif"
    echo "                     Puis la pousse dans le répertoire de destination :"
    echo "                        DIR_CCD=/root/sda1/sysresccd/x86_64"
    echo ""
    echo "- Le mode CHROOT  Part toujours de la version ISO téléchargée, génère une archive"
    echo "                     Avec TOUTES les modificatons contenues dans RECIPE_00-TOUT"
    echo "                        Ce mode est donc inclus dans TOUT et par de RECIPE_00-TOUT"
    echo "                        Mais il AJOUTE en plus des logiciels (make, des modules Perl...) en CHROOT"
    echo "                          Puis pousse le tout dans le répertoire de destination :"
    echo "                             DIR_CCD=/root/sda1/sysresccd/x86_64"
    echo ""
    echo "- le mode READ    Part également de la version ISO téléchargée."
    echo "                     Les mises à niveau de RECIPE_00-TOUT sont IGNOREES, on repart de ZERO"
    echo "                        RECIPE_04-READ ; RECIPE_05-RECI & RECIPE_06-WRITE sont vides au départ"
    echo "                        En vue d'effectuer des modifiations à la main dans squashfs-root"
    echo "                           - Ensuite il faudra éventuellement inclure des modifs dans RECIPE_06-WRITE :"
    echo "                           - Puis passer à RECIPE_06-WRITE"
    echo ""
    echo "- le mode RECI    Permet de faire des modificatons ponctuelles à la main sans perturber :"
    echo "                     - RECIPE_00-TOUT | CHROOT"
    echo "                          En vue de faire des tests, puis passer à RECIPE_06-WRITE"
    echo ""
    echo "- le mode WRITE   Permet de tester des modifications manuelles faites dans squashfs-root :"
    echo "                     - A inclure dans RECIPE_06-WRITE :"
    echo "                       Puis la pousse dans le répertoire de destination :"
    echo "                          DIR_CCD=/root/sda1/sysresccd/x86_64"
    echo ""
    echo "- le mode MAJFF   Permet d'introduire une nouvelle version de Firefox-esr préalablement chargée :"
    echo "                      Ce chargement s'effectue en acceptant le téléchargement proposé par Mozilla"
    echo "                         En toute rigueur /root/.mozilla ne devrait pas être modifié ! DONC :"
    echo "                         On pousse directement   /opt/firefoc-esr DANS  :"
    echo "                            /root/MK_Rescue/sysresccd/squashfs-root/opt/firefoc-esr"
    echo "                               Et on génère ensuite pour le répertoire de destination :"
    echo "                                  DIR_CCD=/root/sda1/sysresccd/x86_64"
    echo ""
    echo "- le mode HELP    Affiche ce menu"
    echo ""
    echo "  Voir https://www.system-rescue.org/scripts/sysrescue-customize/ pour le script d'origine."
    echo ""
    echo ""
    echo "       NB : En toute rigueur, seuls les modes TOUT & MAJFF devraient être utilisés en temps normal"
    echo ""
    return
}


# error while parsing commandline parameters
argument_error()
{
    echo -e ${DR}
    echo "$1"
    echo -e ${FA}
    print_usage
    exit 2
}


declare -g MODE=""
declare -g DIR_BASE="/root/MK_Rescue/sysresccd"
declare -g DIR_ISO="/root/MK_Rescue/sysresccd/I_ISO"
declare -g DIR_MNT="/root/MK_Rescue/sysresccd/MNT"
declare -g DIR_SFS="/root/MK_Rescue/sysresccd/SFS"
declare -g DIR_REC="/root/MK_Rescue/sysresccd/RECIPE"
declare -g DIR_CCD="/root/sda1/sysresccd/x86_64"


parse_args()
{

echo -e $DB
echo "Contrôle des arguments"
echo -e $FA

    # Penser à compléter la liste en cas de modification...
    [[ $# -eq 0 ]] && argument_error "Absence de l'argument (TOUT | RIEN | CHROOT | READ | RECI | WRITE | MAJFF | HELP)"

    while true; do
        case "$1" in        
            TOUT)
                MODE="TOUT"
                break
                ;;
            RIEN)
                MODE="RIEN"
                break
                ;;
            CHROOT)
                MODE="CHROOT"
                break
                ;;
            READ)
                MODE="READ"
                break
                ;;
            RECI)
                MODE="RECI"
                break
                ;;
            WRITE)
                MODE="WRITE"
                break
                ;;
            MAJFF)
                MODE="MAJFF"
                break
                ;;
            HELP)
                print_help
                exit 0
                ;;
            *)
                argument_error "ERREUR l'argument -->$1<-- est nconnu"
                print_usage
                exit 2
                ;;
        esac
    done
    
    [[ $# > 1 ]]     && argument_error "Trop d'arguments"
    [[ -z "$MODE" ]] && argument_error "Variable $MODE non initialisée"
    
    return
}


read_iso()
{

	echo -e $DB
	echo "read_iso()"
	echo -e $DV
	echo "===> Nettoyages ..."
	echo -e $FA
	umount ${DIR_MNT} > /dev/null 2>&1
	rm -r ${DIR_BASE}/squashfs-root > /dev/null 2>&1

	# Copie du précédent ISO et montages
	echo -e $DV
	echo "===> Montage de ${DIR_ISO}/systemrescue.iso ..."
	echo -e $FA
	# Pas la peine de copier je ne refais pas l'ISO pour l'instant
	# cp -p ${DIR_ISO}/systemrescue.iso ${DIR_ISO}/systemrescue.iso_OLD
	# cp -p ${DIR_ISO}/systemrescue-9.05.iso ${DIR_ISO}/systemrescue.iso
	
	mount -o loop ${DIR_ISO}/systemrescue.iso ${DIR_MNT} > /dev/null 2>&1
	cd ${DIR_BASE}
	
	# Extraction
	echo -e $DV
	echo "===> Extract en cours ..."
	echo -e $FA
	unsquashfs ${DIR_MNT}/sysresccd/x86_64/airootfs.sfs
	
	return
}

run_recipe()
{

	echo -e $DB
	echo "run_recipe()"
	echo -e $DV 
	echo "===> On supprime des fichiers dans "${DIR_BASE}/squashfs-root
	echo -e $FA
	local DELETE_ROOT="${DIR_REC}/iso_delfic"
	if [[ -d "${DELETE_ROOT}" ]]; then
        	local FILE
        	find "${DELETE_ROOT}" -type f -printf '%P\0' 2>/dev/null | while read -d $'\0' FILE
		do
			echo FICHIER SUPPRIME = ${DIR_BASE}/squashfs-root/${FILE}
			rm -rf "${DIR_BASE}/squashfs-root/${FILE}"
		done
	fi

	echo -e $DV
	echo "===> On supprime des répertoires entiers mais vides dans "${DIR_BASE}/squashfs-root
	echo -e $FA
	local DELETE_ROOT="${DIR_REC}/iso_delrep"
	if [[ -d "${DELETE_ROOT}" ]]; then
        	local REP
        	find "${DELETE_ROOT}" -type d -printf '%P\0' 2>/dev/null | while read -d $'\0' REP
		do
			# echo "REPERTOIRE  =" ${DIR_BASE}/squashfs-root/${REP}
			if [ "$(ls -A "${DIR_BASE}/squashfs-root/${REP}" 2> /dev/null)" == "" ]; then 
				echo ${DIR_BASE}/squashfs-root/${REP} "VIDE"
				if [[ -d "${DIR_BASE}/squashfs-root/${REP}" ]]; then
					rmdir "${DIR_BASE}/squashfs-root/${REP}"
					echo ${DIR_BASE}/squashfs-root/${REP} "SUPPRIME"
				fi
			fi
		done
	fi

	echo -e $DV
	echo "===> On ajoute ou remplace des fichiers dans "${DIR_BASE}/squashfs-root
	echo -e $FA
	local ADD_ROOT="${DIR_REC}/iso_add"
	if [[ -d "${ADD_ROOT}" ]]; then
		rsync -a "${ADD_ROOT}/" "${DIR_BASE}/squashfs-root"
	fi
	
	if [[ ${MODE} == "CHROOT" ]]; then
		echo -e $DV
		echo "===> On ajoute des packages dans "${DIR_BASE}/squashfs-root
		echo -e $FA
		
		arch-chroot ${DIR_BASE}/squashfs-root <<END
		PS1='Chroot-> '
		pacman --noconfirm -Syu > MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy linux >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy make >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy xscreensaver >> MK_sysrescue.log 2>&1
		yes |  cpan install File::Spec >> MK_sysrescue.log 2>&1
		yes |  cpan install MIME::Base64 >> MK_sysrescue.log 2>&1
		yes |  cpan install Tk >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy perl-tk >> MK_sysrescue.log 2>&1
		yes |  cpan install Config::Std >> MK_sysrescue.log 2>&1
		yes |  cpan install Getopt::Long >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy pulseaudio >> MK_sysrescue.log 2>&1
		pacman --noconfirm -Sy pulseaudio-alsa >> MK_sysrescue.log 2>&1
		exit 0
END
	fi
	mv ${DIR_BASE}/squashfs-root/root/MK_sysrescue.log ${DIR_BASE}/ > /dev/null 2>&1
	
	return
}

write_iso()
{
	echo -e $DB
	echo "write_iso()"
	echo -e $FA
	cd ${DIR_BASE}
	mksquashfs ${DIR_BASE}/squashfs-root airootfs.sfs -noappend -comp xz
	
	echo -e $DB
	echo "sha512sum()"
	echo -e $FA
	sha512sum airootfs.sfs > airootfs.sha512
	
	echo -e $DV
	echo "===> Copies dans "${DIR_CCD}
	echo -e $FAll
	cp airootfs.sfs airootfs.sha512 ${DIR_CCD}
	rm airootfs.sfs airootfs.sha512
	return
}

#################
# ça commence ici

parse_args "$@"

if [ "$MODE" == "TOUT" ] || [ "$MODE" == "CHROOT" ] ; then
	DIR_REC="/root/MK_Rescue/sysresccd/RECIPE_00-TOUT"
	
	read_iso
	run_recipe
	write_iso
	
	echo -e $DB
    echo "TOUT est fini !"
    echo "Rebooter"
    echo -e $FA
    echo ""
fi

if [ "$MODE" == "RIEN" ] ; then
	DIR_REC="/root/MK_Rescue/sysresccd/RECIPE_00-RIEN"
	
	read_iso
	run_recipe
	write_iso
	
	echo -e $DB
    echo "TOUT est fini !"
    echo "Rebooter"
    echo -e $FA
    echo ""
fi



if [ "$MODE" == "READ" ] ; then
	DIR_REC="/root/MK_Rescue/sysresccd/RECIPE_04-READ"
	
	read_iso
	
	echo -e $DB
    echo "L'ISO est maintenant dans ${DIR_BASE}/squashfs-root !"
    echo "Passer à des modifications manuelles soit :"
    echo "- Directement dans /root/MK_Rescue/sysresccd/squashfs-root   PUIS   RECIPE_06-WRITE"
    echo "- En passant par   RECIPE_05-RECI   &   RECIPE_06-WRITE"
    echo ""
    echo -e $FA
	
fi

if [ "$MODE" == "RECI" ] ; then
	DIR_REC="/root/MK_Rescue/sysresccd/RECIPE_05-RECI"
	
	run_recipe
	
	echo -e $DB
    echo "Les modifs de RECI sont maintenant intégrées dans ${DIR_BASE}/squashfs-root !"
    echo "Passer à RECIPE_06_WRITE pour construire /root/sda1/sysresccd/x86_64"
    echo -e $FA
    echo ""
fi

if [ "$MODE" == "WRITE" ] ; then
	DIR_REC="/root/MK_Rescue/sysresccd/RECIPE_06-WRITE"
	
	write_iso
	
	echo -e $DB
    echo "C'est fini !"
    echo "Rebooter"
    echo -e $FA
    echo ""
fi

if [ "$MODE" == "MAJFF" ] ; then
    # Après avoir accepté le Téléchargement de Mozilla, Redémarré FF & Testé !!! :
    # On fait le READ avec RECIPE_00-TOUT pour prendre toutes les modifications antérieures
	DIR_REC="/root/MK_Rescue/sysresccd/RECIPE_00-TOUT"
	
	read_iso
	
	# Mais on remplace /opt/firefox-esr dans squashfs-root
	echo -e $DV
    echo "===> Mise à jour de firefox-esr..."
    echo -e $FA
	rm -r ${DIR_BASE}/squashfs-root/opt/firefox-esr
	cp -R /opt/firefox-esr/ ${DIR_BASE}/squashfs-root/opt/
	
	echo -e $DV
    echo "===> Copie du noveau FF dans RECIPE_00-TOUT pour les généations suivantes..."
    echo -e $FA
	rm -r /root/MK_Rescue/sysresccd/RECIPE_00-TOUT/iso_add/opt/firefox-esr
	cp -R /opt/firefox-esr/ /root/MK_Rescue/sysresccd/RECIPE_00-TOUT/iso_add/opt/
	
	run_recipe
	write_iso
	
	echo -e $DB
	echo ""
    echo "C'est presque fini !"
    echo ""
    echo -e $DR
    echo "			Penser à refaire MK_sysrescue CHROOT, pour réinstaller notamment perl-tk"
    echo -e $DB
    echo ""
    echo "Et rebooter seulement après !"
    echo -e $FA
    echo ""
fi
Sans compter les autres configurations pour avoir un environnement à ma convenance...

Encore une fois ce ne sont pas des justifications valables...
Merci de t'être intéressé à mon problème !
Répondre