Suite

ImportError : libqgis_core.so.2.9.0 : impossible d'ouvrir le fichier d'objet partagé : aucun fichier ou répertoire de ce type


J'ai installé qgis dans debian linux et je souhaite exécuter une application autonome en python. J'importe donc qgis.core et qgis.gui dans cette application. Mais cela me donne une erreur :

ImportError : libqgis_core.so.2.9.0 : impossible d'ouvrir le fichier d'objet partagé : aucun fichier ou répertoire de ce type

J'ai installé la dernière version en utilisant :

deb http://qgis.org/debian jessie main deb-src http://qgis.org/debian jessie main

Mon PYTHONPATH est défini sur : /usr/share/qgis/python/plugins. Et je recherche libqgis_core et j'ai trouvé le libqgis._core2.8.0. Alors pourquoi l'application recherche-t-elle la version 2.9.0 ?


Vous devez définir correctement LD_LYBRARY_PATH qui est expliqué ici : http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html#running-custom-applications


J'avais le même problème après avoir installé la dernière version d'openssl 1.1.0c, j'ai résolu le problème en copiant les fichiers de bibliothèque libcrypto.so.1.1 , libcrypto.a et libssl.so de /usr/local/lib64 vers la bibliothèque partagée à /usr/lib64 .
Après avoir copié les bibliothèques, vous devez créer le lien symbolique.

Après avoir créé le lien symbolique, la reconstruction du cache ldconfig était également requise :

Avec votre version originale d'OpenSSL, il savait comment trouver les bibliothèques partagées car /usr/lib64 est inclus dans le chemin de recherche de l'éditeur de liens. Lorsque vous avez téléchargé et compilé une copie "locale" d'OpenSSL, les bibliothèques partagées ont été placées par défaut dans /usr/local/lib64. Il vous suffit donc probablement d'ajouter ce répertoire au chemin de recherche de l'éditeur de liens, comme ceci (en tant que root) :

Je pense que cela résoudra votre problème.

Vous pouvez le réinstaller en utilisant

yum install -y openssl-devel

J'ai eu cette erreur en utilisant Termux sur ChromeOS, ce qui a provoqué le plantage des programmes de ligne de commande npm et node.

L'exécution de la mise à niveau de pkg a résolu le problème !

Le libcrypto.so appartient au paquet openssl-libs. Si vous forcez manuellement la suppression (avec --nodeps ) de ce paquet ou l'avez corrompu en le mettant à niveau, vous perdrez l'accès à yum, wget, curl, ssh, etc. Si le système a accès à Internet, téléchargez openssl-libs à l'aide de la commande /usr/bin/GET . La syntaxe ressemblerait à la suivante si vous essayez de restaurer la version openssl-libs-1.0.2k-8.el7.x86_64 :

Cela créera pour vous le package openssl-libs-1.0.2k-8.el7.x86_64.rpm, vous pouvez l'utiliser pour réinstaller ou extraire le fichier .so manquant.

Ce que @benedict a dit a fonctionné pour moi. Cependant, vous constaterez peut-être que certains des liens symboliques pointent vers des versions plus anciennes. Exécuter ls -l libcrypto* à partir de /usr/libs vous montrera les liens. Comme dans l'exemple ci-dessous :

Ensuite, vous voudrez d'abord supprimer le lien existant en tapant sudo rm libcrypto.so, puis en copiant libcrypto.so.1.1 comme @benedict mentionné. Enfin, vous pouvez créer le nouveau lien. sudo ln -s libcrypto.so.1.1 libcrypto.so

C'est la meilleure solution que j'ai trouvée. d'autres solutions fournies partout sur Internet ne survivront pas au redémarrage du système)


Ubuntu 18.04 : libcrypto.so.1.0.0 : impossible d'ouvrir le fichier objet partagé : aucun fichier ou répertoire de ce type

Veuillez vérifier quelle version de libssl est installée sur votre système, dans le cas de la mienne sur Ubuntu 19.04, il y avait libssl1.1 au lieu de libssl1.0 requis. Je dois donc installer le logiciel fourni avec libssl1.0. La meilleure partie est qu'Ubuntu est livré avec un composant logiciel enfichable pour installer des logiciels tels que Termius. Ensuite, résolvez le problème comme répondu par "Rodrigo".

Localisez le chemin d'installation :

sudo localiser libcrypto.so.1.0.0

Ensuite, ajoutez le chemin découvert à la variable de chemin :

export PATH=<chemin découvert>:$PATH

Ou ajoutez des bibliothèques au chemin pré-inclus :

sudo ln -s <chemin découvert> /usr/lib/

J'ai rencontré la même erreur que l'OP, après avoir utilisé Ubuntu Software Updater pour mettre à jour du 18.04 au 19.04.

Lorsque la mise à jour était sur le point de se terminer et qu'elle supprimait les anciens noyaux Linux inutilisés, l'erreur de l'OP s'est produite lors d'une étape de configuration de grub pilotée par le programme de mise à jour.

En cherchant une solution, j'ai trouvé le message de l'OP et j'ai essayé les mêmes étapes. Comme j'ai improvisé et trouvé une solution de contournement qui était propre, je la poste ici :

Ainsi, libcrypto.so.1.0.0 n'est pas trouvé dans un emplacement attendu par grubcfg_proxy . Suivant les conseils d'un répondant au PO :

Ah ha ! /usr/lib/x86_64-linux-gnu/ doit être l'emplacement où grubcfg_proxy doit trouver libcrypto.so.1.0.0 .

Lequel des autres cp -p , ln ou ln -s à l'emplacement attendu ? Les signatures md5 me disent quels fichiers ont le même contenu par octet. Y a-t-il les mêmes fichiers réels ?

Les numéros d'inode dans la colonne 1 montrent quelles instances de libcrypto.so.1.0.0 , et le nombre de liens physiques de 1 dans la colonne 3 montre que les liens symboliques sont impliqués dans la fourniture des chemins multiples.

Je décide que j'ai juste besoin de cp -p l'un des fichiers au bon emplacement pour surmonter le problème. Laquelle des deux signatures md5/options de contenu différentes par octets dois-je choisir ?

Après quelques recherches sur Google, je trouve que /snap/core/. est basé sur Ubuntu 16.04 et /snap/core18/. est basé sur Ubuntu 18.04.

Je penche pour /snap/core18/. /libcrypto.so.1.0.0 .

Il s'avère après quelques vérifications que /snap/core18/. /libcrypto.so.1.1 et /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 sont le même octet, donc je décide de garder /usr/lib/x86_64-linux-gnu/libcrypto.so.1. * tous les Ubuntu 18.04.

Je copie le fichier en place et lance à nouveau sudo apt-get install -f. Voila ! grubcfg_proxy est content et les anciens noyaux sont supprimés.


5 réponses 5

Je pense que j'ai rencontré le même problème (j'ai eu le même message d'erreur en essayant de lancer RStudio après la mise à niveau d'Ubuntu de 18.04 à 20.04). Voici ce qui a fonctionné pour moi après avoir lu la page suivante : https://packages.ubuntu.com/xenial/amd64/libssl1.0.0/download

  • Modifiez la liste des sources sudo nano /etc/apt/sources.list pour ajouter la ligne suivante : deb http://security.ubuntu.com/ubuntu xenial-security main
  • Puis sudo apt update et sudo apt install libssl1.0.0 .

J'espère que ça marche pour toi aussi.

J'ai résolu mon problème avec libssl1.0.0 comme ceci :

J'ai ouvert http://security.ubuntu.com/ubuntu/pool/main/o/openssl1.0/ dans mon navigateur et téléchargé la dernière version de libssl1.0.0 pour mon système (pour moi c'était libssl1.0.0_1.0.2n-1ubuntu5.6_amd64.deb) Ensuite, je viens de l'installer:

J'essayais d'installer RStudio Server 1.4.1103 sur Ubuntu 20.04 et j'avais le "problème libssl1.0.0" (Ubuntu 18.04+ utilise nativement libssl1.1). J'ai trouvé la solution ici et fait quelques mises à jour de versions. Vérifiez ici pour les mises à jour.

Installation de libssl1.0.0

Installation du serveur RStudio 1.4.1103

Trouver mon IP locale (dans mon cas 192.168.0.17)

Enfin, j'ai ouvert Studio Server dans mon navigateur en utilisant http://192.168.0.17:8787/.

J'utilise Debian Buster lorsque j'ai rencontré le problème comme vous. Je l'ai résolu en faisant ceci :

Tout d'abord, je vois que libssl1.0.0 n'est pas dans le référentiel Debian Buster APT, il est remplacé par libssl1.1

Par conséquent, j'ajoute le référentiel Jessie APT à /etc/apt/source.list en exécutant cette commande :

Collez le référentiel Jessie APT : "deb http://security.debian.org/debian-security jessie/updates main"

Enregistrez et quittez (Ctrl + s && Ctrl + x) Exécutez la mise à jour : sudo apt update Installez le package libssl1.0.0 sudo apt install libssl1.0.0


Essayez avec yum whatprovides */libcurl.so.4 et installez les packages avec les fichiers correspondants. Attention à l'installation tous les deux packages i386 et x86_64.

Si cela ne fonctionne pas, veuillez fournir la sortie de la commande ci-dessus.

CentOS 5 est vraiment vieux. Votre application a évidemment besoin d'une version plus récente de curl . Vous pouvez l'obtenir à partir d'un autre référentiel tiers ou le créer vous-même, mais la mise à jour du système vers quelque chose de plus récent semble être une meilleure idée.


4 réponses 4

Selon la documentation officielle, si vous aviez installé des versions précédentes d'opencv-python et opencv-contrib-python, vous devriez d'abord envisager de les supprimer :

Aussi, pouvez-vous essayer de les installer en tant que sudo ?

Bien que vous trouviez de nombreux tutoriels qui vous aident à installer opencv et ffmpeg (tous deux vont de pair presque toujours), je publierai ici ce qui a fonctionné pour moi.

Étapes pour installer correctement ffmpeg

  1. Téléchargez la dernière version statique de ffmpeg à partir de la page de téléchargement en fonction de votre système d'exploitation.
  2. Extrayez le fichier zip installé à l'aide de 7-zip. Le dossier sera nommé quelque chose comme "ffmpeg-2030731-git-69fe25c-win32-static".
  3. Créez un nouveau dossier nommé ffmpeg dans votre C: et copiez le contenu du dossier extrait dans ce nouveau.
  4. Maintenant, cliquez sur le bouton Démarrer, cliquez avec le bouton droit sur l'ordinateur. Sélectionnez Propriétés dans le menu contextuel. Dans la fenêtre Système, cliquez sur le lien « Paramètres système avancés ».
  5. Cliquez sur le bouton Variables d'environnement dans la fenêtre Propriétés système. Il sera situé en bas de la fenêtre.
  6. Sélectionnez l'entrée PATH dans la section "Variables utilisateur". Cliquez sur le bouton Modifier. Dans le champ "Valeur variable", saisissez c:ffmpegin après tout ce qui y est déjà écrit. Si vous l'avez copié sur un autre lecteur, modifiez la lettre du lecteur. Cliquez sur OK pour enregistrer vos modifications. S'il n'y a pas d'entrée PATH dans le paramètre "Variables utilisateur", cliquez sur le bouton Nouveau et créez-en une. Entrez PATH pour le nom de la variable. Cette méthode activera FFmpeg pour l'utilisateur actuel. Les autres utilisateurs de Windows ne pourront pas l'exécuter à partir de la ligne de commande. Pour l'activer pour tout le monde, entrez c:ffmpegin dans l'entrée PATH dans "Variables système". Faites très attention à ne rien supprimer de ce qui se trouve déjà dans cette variable.
  7. Ouvrez l'invite de commande. Entrez la commande ffmpeg –version . Si l'invite de commande renvoie les informations de version de FFmpeg, l'installation a réussi et FFmpeg est accessible à partir de n'importe quel dossier de l'invite de commande. Si vous recevez une erreur libstdc++ -6 est manquante, vous devrez peut-être installer le package redistribuable Microsoft Visual C++, qui est disponible gratuitement auprès de Microsoft.

J'ai suivi ces étapes à partir d'un site dont je ne me souviens pas mais cela a tout aussi bien fonctionné.

Maintenant, pour installer opencv et le faire fonctionner, j'ai suivi les étapes suivantes :

  1. Téléchargez l'exécutable auto-extractible sur le site Web d'OpenCV.
  2. Exécutez l'exécutable qui à son tour extraira l'exécutable.
  3. Créez un dossier dans C: appelé opencv
  4. Copiez le contenu des fichiers extraits dans opencv
  5. Modifiez votre variable d'environnement PATH. Cela dépendra de la version que vous souhaitez installer (c'est-à-dire 32 ou 64 bits) et également de la version de visual studio que vous avez installée (les éditions express conviennent).

----Installation d'OpenCV Python J'utilise Anaconda. J'ai donc copié le fichier cv2.pyd de ce répertoire OpenCV (le début peut être légèrement différent sur votre machine) :


Imagemagick libMagickCore.so.2 introuvable

J'ai 2 serveurs Debian que nous utilisons au travail, l'un est notre serveur de développement et l'autre est notre production. J'essaie de faire fonctionner imagemagick sur les deux serveurs, et pour une raison quelconque, le serveur de production exécute correctement imagemagick, mais le serveur de développement ne semble pas vouloir.

et obtenu cette réponse en retour

DÉVELOPPEMENT:

J'ai fait un dpkg sur les deux serveurs pour vérifier les versions et j'ai obtenu ce qui suit

DÉVELOPPEMENT:

J'ai cherché libMagickCore.so.2 dans tout le système d'exploitation et je ne l'ai jamais trouvé, j'ai trouvé ces fichiers sur les deux serveurs.

DÉVELOPPEMENT:

J'ai ajouté manuellement le libMagickCore.so.2 sur le serveur de développement pour voir si cela fonctionnerait, mais cela n'a pas fonctionné.

J'ai purgé tout imagemagick du serveur de développement et l'ai réinstallé et toujours rien. J'ai exécuté ldconfig, et il créera des liens pour la version 3 mais pas 2. J'ai même redémarré la machine, fait des mises à jour/mises à niveau sur les deux machines, et je n'ai plus d'options sur quoi faire. Quelqu'un a-t-il une autre idée pour moi?

DÉVELOPPEMENT

Alors . ça a fini par être mon problème. J'ai supprimé la conversion dans /usr/local/bin de mon serveur de développement et cela a fonctionné après cela.


4 réponses 4

Suggère fortement que le système n'a pas l'interpréteur /lib/ld-linux.so.2 ELF. C'est-à-dire que ce système 64 bits n'a pas de bibliothèques de compatibilité 32 bits installées. Ainsi, la réponse de @ user1334609 est essentiellement correcte.

OK, j'ai été occupé pendant les huit dernières heures pour remettre mon système en marche après l'arrêt de la surchauffe du processeur. Au redémarrage, il est devenu évident que c'était tellement foutu que même la console de secours d'initrd ne reconnaissait plus mon clavier. C'est un mystère pour moi comment le système a réussi à rester opérationnel pendant si longtemps, alors que j'essayais de mettre en œuvre les innombrables suggestions de votre part (merci beaucoup !!)

et aucun clavier ne fonctionne après :-)

Le problème était : une mise à jour a remplacé le lien symbolique /lib -> /usr/lib par un répertoire. Cela signifiait donc que toutes les bibliothèques et modules du noyau, qui devraient être dans /lib manquaient :-)

J'ai donc recréé le lien symbolique et réinstallé le système de base à partir d'un live CD.

Maintenant que j'ai à nouveau internet, j'ai aussi trouvé ce fil

J'ai également utilisé le gestionnaire de paquets de mon installation sur disque en brique (appelée pacman ) à partir du live CD pour réinstaller tous les paquets du groupe de base (peut-être seulement le noyau, donc le paquet linux aurait suffi, je ne sais pas)

Pour ce faire, montez la partition principale de l'installation en brique dans le répertoire /mnt du système live CD et utilisez chroot pour faire penser à pacman que /mnt est / (insérez la partition principale de votre système en brique pour sdXXX )

Pour mémoire : créez un lien symbolique relatif, donc ln -s usr/lib /mnt/lib et non ln -s /usr/lib /mnt/lib , car lors du démarrage précoce du système (étape initrd) la partition principale sera montée en premier à /nouvelle_racine . Si le lien symbolique est absolu, vous obtiendrez l'erreur mentionnée ci-dessus lors du démarrage précoce.


4 réponses 4

Vous obtenez une erreur d'autorisations. Le compte qui exécute le serveur SQL n'a pas les droits nécessaires sur le dossier qui contiendra les fichiers de la base de données.

Vous devez donner au compte qui exécute SQL Server (pas votre compte) le contrôle total de C:Program FilesMicrosoft SQL ServerMSSQL10.SQLEXPRESSMSSQLDATA.

D'après notre fil de commentaires, il semble que vous vous soyez un peu égaré lors de l'installation. Le programme d'installation vous permet de choisir votre répertoire de données par défaut et (je voudrais supposer) définit les autorisations appropriées sur ce répertoire pour le compte de service que vous avez spécifié.

Dans votre instruction CREATE DATABASE, vous spécifiez un emplacement, mais cet emplacement était-il celui qui a été spécifié dans la configuration d'origine ? Le compte de service a-t-il changé ?

Une façon de tester cela consiste simplement à exécuter un générique

Si vous obtenez la même erreur, le compte de service a peut-être changé ou quelque chose concernant les autorisations NTFS a changé.

Un chemin de résolution (également basé sur une chaîne de commentaire) consiste à confirmer que le service qui exécute SQL Server dispose des autorisations R/W sur le chemin que vous spécifiez. Pour faire ça:

Démarrer-> Exécuter-> services.msc -> faites défiler la liste des services jusqu'à ce que vous trouviez SQL Server-> clic droit-> propriétés-> onglet Connexion

Maintenant, assurez-vous que ce compte dispose de l'autorisation appropriée sur ce répertoire pour faire ce qu'il doit faire.


Une interface de noyau avec un serveur HTTP(S) intégré.

Interface Web de la caméra Raspberry Pi

Un beau projet de silvanmelchior qui déploie un serveur Web, comme dvr, un serveur de streaming multi cible. Besoin de plus d'informations

Méthode héritée

Le streaming avec mjpg est pris en charge par presque tous les navigateurs, y compris Internet Explorer 6. De nombreuses caméras utilisées avant H.264 utilisaient le matériel mjpg, qui déversait essentiellement les fichiers JPEG le plus rapidement possible dans un dossier tandis que mjpg lisait le fichier dans un tampon et le supprimait. eux. Certains appareils peuvent atteindre jusqu'à 25 ips et même si vous avez une mauvaise connexion, vous obtiendrez au moins 1 ips.

La prise en charge de mjpg a été abandonnée dans les caméras HD car le fichier JPEG est devenu trop volumineux pour être diffusé sur Internet et H.264 est un protocole beaucoup plus rapide et de meilleure qualité.

Étant donné que nous n'avons aucun moyen de diffuser H.264 à l'aide du module de caméra de manière native, cela semble être une solution de repli viable.

C'est à peu près instantané, mais ne vous attendez pas à obtenir plus de 1,5 ips. C'est parce que raspistill est extrêmement lent ! L'utilisation de la fonction time-lapse définie sur 100 ms, ce qui devrait nous donner 10 ips, ne fonctionne pas car le raspistill s'étouffe et a de sérieux problèmes de performances en lui-même.

  1. Changez /tmp pour utiliser la RAM pour la vitesse /etc/default/tmpfs - changez RAMTMP=yes (C'est un effort pour augmenter les fps, mais raspistill ne peut tout simplement pas rester avec lui-même.)
  2. Redémarrer
  3. apt-get installer git
  4. apt-get install libjpeg8-dev
  5. apt-get installer libv4l-dev
  6. apt-get installer imagemagick
  7. cd /usr/src , mkdir mjpg-streamer, cd mjpg-streamer .
  8. git clone https://github.com/engine12/mjpg-streamer.git
  9. make USE_LIBV4L2=true nettoie tout
  10. FACULTATIF Si vous avez des erreurs
  11. sudo ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h
  12. sudo ln -s /usr/include/lib4l2.h /usr/include/linux/lib4l2.h
  13. Dans le makefile, commentez tous les plugins à l'exception de input_file et output_http et recommencez. J'ai eu beaucoup de problèmes ici.
  14. Copiez le binaire, mjpg_streamer et ses plugins input_*.so et output_*.so dans /usr/local/bin . Sinon, exécutez-le directement depuis le répertoire src.
  15. Fin facultative
  16. mkdir /tmp/stream
  17. raspistill -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th 0:0:0 &
  18. LD_LIBRARY_PATH=./ ./mjpg_streamer -i "input_file.so -f /tmp/stream" -o "output_http.so -w ./www" (exécutez ceci là où se trouvent le binaire et les plugins)
  19. Aller à http://<IP-address>:8080
  20. Voici quelques options, profitez du streaming "en direct" à l'ancienne. pris en charge par la plupart des navigateurs - modernes, anciens et expérimentaux.

J'ai eu du mal à le compiler pendant environ 5 heures. soupir, mais je pense que je vais l'utiliser car je peux accéder au flux depuis n'importe quel téléphone et n'importe quel navigateur. Je dois juste attendre que nous ayons de meilleurs pilotes. Encore un an ou deux. :(

Quelle que soit la qualité que j'essaie, je n'obtiens ni plus vite ni plus lentement que 1 ips en utilisant le flux. J'ai utilisé 720p et 1080p et seule la qualité d'image s'améliore, mais les fps ne font pas de différence sur le réseau local. Je suppose que des réglages plus petits aideront avec le WAN/3G ou d'autres transmissions radio.

raspistill écrit l'image dans un seul fichier. Cela pourrait être un goulot d'étranglement. Il écrit le fichier, mjpg strreamer le lit et le supprime, provoquant un blocage des E/S, de sorte que raspistill ne peut pas écrire dans le fichier.

La seule chose à laquelle je peux penser est d'utiliser raspivid canalisé dans FFmpeg qui créera des fichiers JPEG pour nous - je dois essayer ceci et c'est peut-être beaucoup plus rapide que d'utiliser raspistill. J'ai réussi à obtenir 25 ips avec une qualité choquante, et cela a été retardé d'environ 10 secondes. Le fait de peaufiner les paramètres m'a permis d'obtenir environ 3 ips, mais 100% du processeur. Aucun matériel n'est utilisé pour traiter le flux vidéo.

J'étais également en train de lire et j'ai découvert que nous pouvons utiliser %d dans le nom du fichier de sortie raspistill. Je me demande si cela va booster les fps. De plus, l'encodage JPG est accéléré matériellement dans raspistill, donc j'ai vraiment du mal à comprendre pourquoi il est si lent.

J'ai obtenu un 2 FPS stupéfiant en utilisant %d dans le nom de fichier. Pour une raison quelconque, l'écriture du fichier JPEG est horriblement lente à partir de raspistill. Soupir.