Install paquets

Demande d'aide : c'est ici.
Répondre
Clemzo
Membre
Membre
Messages : 10
Inscription : 06 oct. 2022, 19:19
Status : Hors-ligne

Bonjour,

Je travail actuellement sur un container docker issue d'une image debian (entre autre) très minimaliste récente. Mon objectif est de faire une install de paquet nécessaire (smbclient).
Le souci : etant donné que cette image est très réduite, il n'y a plus d'installeur (apt, dpkg), mais il n'y a plus non plus de make ou ar.
Wget est présent je peux donc télécharger un fichier dans les dépots debian mais une install devient délicate.
Ma question est donc : dans ce contexte est-il encore possible d'installer dpkg ou apt from scratch sans make ;)
Merci pour votre point de vue.
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 4962
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

Bonjour, je ne comprends pas pourquoi tu veux recompiler un paquet avec make. Il n'existe pas déja compilé pour ton architecture ?Une fois le paquet chargé avec wget, est ce que tu as accès à la commande dpkg pour l'installer ?
Clemzo
Membre
Membre
Messages : 10
Inscription : 06 oct. 2022, 19:19
Status : Hors-ligne

Bonjour Piratebab et merci pour ta réponse.
Je n'ai pas directement besoin de make , mais après avoir téléchargé dpkg ici : https://ftp.debian.org/debian/pool/main/d/dpkg/ (jai pris le dernier xz en date) décompressé et copié dans /usr/bin. A ce stade si je tape dpkg il me renvoie une erreur indiquant qu'il manque un fichier pour exécuter dpkg. D'après ce site : https://ioflood.com/blog/install-dpkg-command-linux/ il faut faire un make install pour rendre ce dernier ajout fonctionnel.
Maintenant s'il existe une méthode plus simple je suis preneur.
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 4974
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Salut,

dpkg à des dépendances...

Code : Tout sélectionner

# apt-cache depends dpkg
dpkg
  Pré-Dépend: libbz2-1.0
  Pré-Dépend: libc6
  Pré-Dépend: liblzma5
  Pré-Dépend: libmd0
  Pré-Dépend: libselinux1
  Pré-Dépend: libzstd1
  Pré-Dépend: zlib1g
  Dépend: tar
  Casse: <libapt-pkg5.0>
  Casse: lsb-base
  Suggère: apt
  Suggère: debsig-verify

Code : Tout sélectionner

dpkg il me renvoie une erreur indiquant qu'il manque un fichier pour exécuter dpkg
Tu peux nous renvoyer l'erreur plutôt que de l'évoquer ?
Ta Debian "minimaliste" (On devrait plutôt dire "désossée" :wink: ) est est fait à partir de quelle version de base ?
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Clemzo
Membre
Membre
Messages : 10
Inscription : 06 oct. 2022, 19:19
Status : Hors-ligne

Salut lol,

Ok suite à de nouveaux test et après réanalyse des précédents, l'erreur signalant le manque d'un fichier venait de l'utilisation d'un fichier dpkg extrait d'une archive .deb (désolé je n'ai plus trace exacte de l'erreur. si besoin je la reproduirais).

En effet cette dedian est vraiment très light, je n'en connais malheureusement pas l'origine.
un uname -a :

Code : Tout sélectionner

Linux cbdb5c9f31f5 6.1.0-12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.52-1 (2023-09-07) x86_64 GNU/Linux
Mon dernier test en suivant scrupuleusement https://ioflood.com/blog/install-dpkg-command-linux/ (Installing Dpkg from Source Code) m'indique tout simplement qu'il manque les outils de compilation.

Code : Tout sélectionner

checking for gcc... no
checking for cc... no
checking for cl.exe... no
checking for clang... no
configure: error: in `/tmp/dpkg-1.22.2':
configure: error: no acceptable C compiler found in $PATH
Bref je ne suis pas sur d'arriver à mes fins et si je peux reconstruire une image avec un debian complet, je ne suis pas certain de reproduire ses fonctionnalité complètes
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 4962
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

Tu n'as pas expliqué pourquoi tu veux absolument recompiler dpkg. il va te falloir de nombreuses dépendances
Qu'est ce qui ne te conviens pas dans les binaires précompilés ?
Clemzo
Membre
Membre
Messages : 10
Inscription : 06 oct. 2022, 19:19
Status : Hors-ligne

Comme expliqué dans mon premier post, j'ai besoin de compléter l'image de base afin d'y ajouter smbclient et probablement quelques autres outils. Aucun outils de gestion de paquet n'étant présent dans l'image actuelle ce qui m'amène à ces gymnastiques...
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 4962
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

Cela ne justifie pas une compilation. Un ajout de binaire fait l'affaire.
Tu peux charger les paquets depuis une autre machine, en extraire les binaires, et les copier sur ton serveur. Ce sera bien plus simple que d'installer tout les paquets sources nécessaires à une compilation.
PascalHambourg
Contributeur
Contributeur
Messages : 876
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

Clemzo a écrit : 16 janv. 2024, 09:46 après avoir téléchargé dpkg ici : https://ftp.debian.org/debian/pool/main/d/dpkg/ (jai pris le dernier xz en date) décompressé et copié dans /usr/bin
Mauvaise idée. Des fichiers sources n'ont rien à faire dans /usr/bin.
piratebab a écrit : 16 janv. 2024, 19:55 Tu peux charger les paquets depuis une autre machine, en extraire les binaires, et les copier sur ton serveur.
Oui. Pour les extraire sans dpkg il faudrait disposer de la commande "ar" qui fait partie du paquet binutils et je doute qu'il soit installé.

Mais ça ne suffira peut-être pas. La bonne configuration de certains paquets peut nécessiter de prendre en compte leurs fichiers de contrôle (preinst, postinst, triggers) et la présence de debconf. Ce n'est pas le cas de dpkg lui-même mais peut-être de certaines de ses dépendances. Notamment il faudra exécuter ldconfig après l'installation des bibliothèques pour créer les liens et le cache des bibliothèques partagées.
Clemzo
Membre
Membre
Messages : 10
Inscription : 06 oct. 2022, 19:19
Status : Hors-ligne

Salut PascalHambourg,

En effet je peux faire cela (je testerais prochainement), mais je ne maitrise pas le périmètre des dépendances (je testerai avec l'arbre des dépendances) et cela risque d'être touchi.
Merci pour ce chemin qui semble le plus simple à mettre en œuvre.
Clemzo
Membre
Membre
Messages : 10
Inscription : 06 oct. 2022, 19:19
Status : Hors-ligne

Ok donc après avoir simplement copié les binaires en provenance d'une autre machine, lorsque je lance dpkg, j'obtiens l'erreur dont je parlais dans mon premier post :

Code : Tout sélectionner

bash: /usr/bin/dpkg: cannot execute: required file not found
Je précise bien évidement que /usr/bin/dpkg est bien présent.
C'est la même erreur que lorsque j'extrait dpkg d'une archive deb
Clemzo
Membre
Membre
Messages : 10
Inscription : 06 oct. 2022, 19:19
Status : Hors-ligne

si je fais une analyse des dépendances nécessaires à dpkg j'obtiens ceci :

Code : Tout sélectionner

Pre-Depends: libbz2-1.0, libc6 (>= 2.34), liblzma5 (>= 5.4.0), libmd0 (>= 0.0.0), libselinux1 (>= 3.1~), libzstd1 (>= 1.5.2), zlib1g (>= 1:1.1.4)
Depends: tar (>= 1.28-1)
Or tar est bien présent et fonctionnel donc les pre-depends sont pour tar.
Donc je vois pas d'ou provient cette erreur. Ne faudrait-il pas, suite au transfert du fichier dpkg, effectuer une sorte re-initialisation (j'ai effectuer un reboot sans succès) pour informé le système du nouveau venu ?
Clemzo
Membre
Membre
Messages : 10
Inscription : 06 oct. 2022, 19:19
Status : Hors-ligne

Ok suite de mes pérégrinations :
De la même façon que j'ai transféré le fichier dpkg en provenance d'une autre machine dans /usr/bin, j'ai aussi transféré /var/lib/dpkg.
Je précise que j'ai effectuer aussi un ldconfig.
Suite à un reboot, j'obtiens toujours la même erreur.
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 4962
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

Pour savoir comment et ou installer les fichiers d'un paquet, il faut ouvrir le .deb avec un archiveur
Tu y trouveras un fichier data.tar.gz, qui contient une arborescences de fichiers à copier sur ton systeme (en plus de l'éxécutable)
Clemzo
Membre
Membre
Messages : 10
Inscription : 06 oct. 2022, 19:19
Status : Hors-ligne

Ok merci.
J'ai décompressé le .deb correspondant au dpkg transféré préalablement, J'ai transféré le data.tar.xz dans mon container, j'ai décompressé ce dernier et copier chaque répertoire obtenu vers sa destination.
J'ai refait un ldconfig -v (qui ne sort aucun message) et rebooté et...
Rien de mieux malheureusement.
PascalHambourg
Contributeur
Contributeur
Messages : 876
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

Clemzo a écrit : 17 janv. 2024, 09:51 Or tar est bien présent et fonctionnel donc les pre-depends sont pour tar.
D'où tiens-tu cela ?
Qu'affiche

Code : Tout sélectionner

ldd /usr/bin/dpkg
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 4962
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

Il ne te reste plus qu'a exécuter manuellement les scripts d'install contenus dans le .deb.
Leur lecture est toujours instructive, il doivent faire autre chose qu'une simple copie de fichiers (par ex modifier PATH, ou autre variable d'environnement).

édit:
question de base: est ce que tu as rendu le fichier exécutable ...... exécutable ?
pour vérifier

Code : Tout sélectionner

ls - l fichier
si pas de x sur la ligne, pas bon
Pour le rendre exécutable

Code : Tout sélectionner

chmod +x
Répondre