Portabilité d'un exécutable vers une autre machine Linux


11

J'ai installé le programme Motion sur une machine Linux (M1) et je veux le même programme sur une autre (M2).

Il existe différentes versions de ce programme, et j'ai oublié celui que j'ai utilisé, alors puis-je faire une copie directe du fichier utilisateur / bin / motion de M1 et le placer dans l'utilisateur / bin / motion de M2?

Je sais où se trouve le fichier de configuration, je vais donc le déplacer, mais je ne sais pas quels pilotes vidéo la version de travail de motion utilise sur M2; existe-t-il un moyen de le savoir?

Existe-t-il un moyen de connaître ses dépendances?


Juste pour mémoire, c'est presque toujours une mauvaise idée. L'un des énormes avantages de Linux par rapport aux autres plates-formes est la gestion des packages. La copie manuelle des fichiers binaires dans les répertoires système contourne le gestionnaire de packages. Dans de nombreux cas, cela signifie simplement que la mise à jour du binaire devra être manuelle, mais dans certains cas, cela peut entraîner des problèmes importants de mise à jour du système. TL; DR : utilisez votre gestionnaire de paquets.
HalosGhost

Cela semble logique, alors comment pourrais-je faire cette tâche en utilisant dpkg?
reggie

Si le package fournissant l'outil que vous souhaitez n'est vraiment pas disponible pour votre système d'exploitation, vous créerez un package pour celui-ci (c'est moins difficile qu'il n'y paraît). Ensuite, vous installeriez le package avec dpkg.
HalosGhost

Je ne sais pas ce que tu veux dire. Pourriez-vous créer un package à partir d'un programme déjà installé?
reggie

Non, l'emballage est un processus distinct; mais l'apprendre est une compétence inestimable. Il est cependant spécifique à la distribution (ou au moins au gestionnaire de paquets).
HalosGhost

Réponses:


12

Pour déplacer un programme vers un autre ordinateur, vous devez déplacer:

1) Fichier exécutable
Un moyen simple de trouver le chemin des commandes est la typecommande.

Par exemple: type cal

cal est / usr / bin / cal

2) Dépendances de bibliothèque
Vous pouvez trouver des dépendances de bibliothèque avec la lddcommande, mais n'oubliez pas que si vous avez compilé un programme à partir de la source, l'architecture CPU des deux serveurs doit être la même.

Par exemple: ldd date

linux-vdso.so.1 => (0x00007fff83dff000)
librt.so.1 => /lib64/librt.so.1 (0x0000003784e00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003783e00000)
libpthread. so.0 => /lib64/libpthread.so.0 (0x0000003784200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003783a00000)

3) Fichiers de configuration
Dans le nouveau serveur, vous devrez peut-être dire au programme de recréer les fichiers de configuration car ces fichiers de configuration appartiennent au serveur précédent.

4) Vérification de la dépendance matérielle
Pour vérifier cela, je pense que vous devez vérifier le site Web du programme pour prendre en charge les matériels ou vous devez tester le programme dans un nouvel environnement.


Comment puis-je trouver où l'exécutable est stocké? Je pense que son utilisateur / bin / appelé mouvement. Il s'exécute au démarrage de la machine, cela pourrait-il me donner des indices sur l'emplacement de stockage de l'exécutable?
reggie

@reggie, la typecommande est un moyen simple .. J'ai édité mon message.
Sepahrad Salour
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.