IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Récupération de librairies


Sujet :

Linux

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut Récupération de librairies
    Bonsoir,

    Je voudrais savoir si il est possible de récupérer toutes les librairies nécessaires à un programme à partir d'une commande. Je sais que ldd donne les librairies nécessaires au fonctionnement mais y-a-t-il une commande pour les récupérer?

    D'avance merci.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 409
    Points : 23 804
    Points
    23 804
    Par défaut
    Qu'entends-tu par « récupérer » ?

    ldd te donne effectivement le nom de chaque bibliothèque liée dynamiquement à un objet ainsi que, en vis-à-vis, le chemin exact vers leur fichier sur le disque, qui sera chargé par le loader dynamique. Il te suffit d'aller les lire.

    Si par « récupérer », tu entends « installer les bibliothèques manquantes après avoir été chercher leur package », alors cela dépend de ta distribution.

    Normalement, les packages, (*.deb ou *.rpm, par exemple) sont construits pour gérer eux-mêmes les dépendances, si bien que lorsque tu installes un logiciel, le gestionnaire ira de lui-même chercher les autres packages dont il a besoin pour fonctionner. Leur nombre est parfois conséquent : généralement, il n'y en a que deux ou trois mais ça peut monter jusqu'à 100 sur une distribution fraîchement installée sur laquelle les infrastructures générales ne sont pas encore en place.

    Si tu installes un logiciel à partir d'un *.tar.gz ou que tu compiles des sources, la plupart du temps, le nom du package est le même que celui de ta bibliothèque. Dans les rares cas où ça ne l'est pas, les outils d'installation ainsi que les sites web consacrés aux dépôts RPM te permettent — entre autres choses — d'interroger la base pour savoir quel package contient tel ou tel fichier.

    Par exemple, sur Redhat ou Fedora, un « yum provides gltron » t'apprend que le fichier est disponibles dans les dépôts de ta distribution et que c'est le package du même nom qui te le fournira. Cela dit, même si cette requête fonctionne autant pour les paquets installés et non installés, yum est un utilitaire d'assez haut niveau qui fait des requêtes parfois assez lourdes (avec rechargement de la base entière chaque fois qu'elle n'est plus assez neuve). S'il s'agit simplement d'interroger la base locale parmi les packages installés sur ta machine, un simple « rpm -qf fichier » suffit.

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 834
    Points : 44 133
    Points
    44 133
    Par défaut
    Ce que dit obsidian concerne un logiciel installé depuis un gestionnaire de package ( .deb ou .rpm ). Si ce n'est pas le cas, il te faudra copier les bibliothèques à la main.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Points : 71
    Points
    71
    Par défaut
    J'ai le même problème, en fait, pour le déploiement d'un programme je souhaiterai récupérer tous les .so de mon pc en cours et les mettre sur mon autre pc pour tester mon programme sur cette autre pc.

    Il doit bien exister une commande complémentaire de ldd pour collecter les .so dans un dossier par exemple.

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 409
    Points : 23 804
    Points
    23 804
    Par défaut
    Re-bonjour,
    L'utilisation de « multis » (plusieurs comptes pour une même personne), est proscrite sur ce forum.

    Citation Envoyé par bird12358 Voir le message
    En fait, pour le déploiement d'un programme je souhaiterai récupérer tous les .so de mon pc en cours et les mettre sur mon autre pc pour tester mon programme sur cette autre pc.

    Je pensais qu'il existait une commande complémentaire de ldd pour collecter les .so dans un dossier par exemple.
    Ça ne servirait à rien parce que :
    • Il n'y en a généralement que quelques unes et il est aisé de les copier à la main ;
    • Dans le cas contraire, il est très facile d'écrire une ligne de script shell qui fasse ce travail à partir des résultats de ldd ;
    • S'il y a vraiment beaucoup de bibliothèques, alors celles-ci auront elles-mêmes des dépendances à d'autres bibliothèques. Il faudra alors récursivement les passer en revue et en l'absence d'une politique d'arrêt, tu risques de remonter jusqu'à la racine du système entier ;
    • Il est tout-à-fait possible que les bibliothèques ne soient pas compatibles avec le système cible, qui aura besoin des siennes ;
    • Il te faudra les installer dans les dépôts officiels (« /lib », « /usr/lib », etc) et elles risquent d'entrer en conflit avec les bibliothèques déjà installées à cet endroit ;
    • Ce dernier point t'obligera donc à composer avec le système de packages de ta distribution… s'il existe ! Et dans ce cas, la solution la plus propre consiste à construire ton propre package.


    Cela dit, si tu veux essayer quand même par curiosité, tu peux toujours écrire ceci :

    Code Shell : Sélectionner tout - Visualiser dans une fenêtre à part
    tar -chzf bibliotheques.tar.gz $(ldd $(which gedit) | grep -o "/[^ ]\+" | xargs)

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 834
    Points : 44 133
    Points
    44 133
    Par défaut
    Pour le déploiement, si c'est ton programme :

    Soit tu crée un package, soit tu compiles en statique.

    Pour le reste, mes co-posters ont expilqué comment faire

  7. #7
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    De plus avec des librairies dynamiques, tu es obligé de relancer ldconfig lorsque tu copies le "programme".

Discussions similaires

  1. Récupération de données et librairie matplotlib
    Par okligek dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 01/04/2012, 10h46
  2. Réponses: 5
    Dernier message: 09/12/2002, 23h23
  3. récupération d'images
    Par MANU_2 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 05/08/2002, 19h36
  4. Réponses: 4
    Dernier message: 05/06/2002, 13h15
  5. compatibilité des librairies directX8
    Par Freakazoid dans le forum DirectX
    Réponses: 3
    Dernier message: 23/05/2002, 22h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo