Résumé des problèmes de compilation et d'installation de python et de chargement de bibliothèque sous le système deepin

introduction

Cet article veut résumer certains problèmes que j'ai rencontrés dans le système deepin au cours des deux derniers jours, principalement des bogues et des éléments compilés et installés par python, au cas où je les rencontrerais la prochaine fois, si possible (mieux vaut ne pas le faire).

apt-get ne peut pas mettre à jour le problème

Lorsque je suis entré dans le système pour la première fois, j'ai rencontré l'erreur suivante :

Impossible de créer le fichier temporaire /tmp/apt.conf.g1YDx9

Solution, tmp n'a aucune autorisation :

chmod 777 /tmp

Je ne sais pas pourquoi j'obtiens cette erreur, mais c'est juste une coïncidence, donc je vais l'enregistrer ici.

deepin ne peut pas installer le problème de docker

insérez la description de l'image ici

Je ne sais pas si tout deepin est comme ça, mais pour moi, peu importe comment j'utilise la méthode d'installation de Debian sur le site officiel, je ne peux pas installer docker-ce, docker-ce-cli et containerd.io, et enfin j'en ai trouvé un sur GitHub. Key script installation, comme suit :

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

ainsi que:

curl -sSL https://get.daocloud.io/docker | sh

Parce que j'utilise le système UOS, je vois qu'il semble utiliser deepin comme système. Je ne sais pas quel lien au milieu est faux. On peut seulement dire qu'il s'agit d'une erreur inconnue.

Compiler en environnement python

Dans centos et Ubuntu, le système général est complet avec les dépendances d'environnement pertinentes. Sinon, les dépendances d'environnement python peuvent également être installées en se référant à la méthode suivante lorsque j'ai installé centos auparavant :

# 系统依赖
yum -y install  zlib zlib-devel
yum -y install  gcc gcc-c++
yum -y install openssl openssl-devel
yum -y install libffi-devel  tk-devel

# python 非必要依赖包
yum install xz-devel
yum install python-backports-lzma   # pandas
yum install sqlite-devel
yum -y install readline-devel    # python命令行下退格、删除、方向键乱码问题包

Parmi eux, openssl et openssl-devel sont liés aux certificats. L'installation de python demandera des dépendances de projet, et backports-lzma et ainsi de suite sont les packages nécessaires à pandas. Généralement, ces packages sont disponibles. Sinon, il y a un problème avec le système La situation rencontrée par deepin, emmm. . . Voici la méthode de compilation de sqlite. D'autres, à propos d'openssl, ont été mentionnés dans mon blog précédent lors de la compilation de cmake, mais python n'a pas besoin de cmake, et la même version d'openssl est livrée avec, et le paquet lzma est très ancien. Maintenant, je pense que la date est les dernières mises à jour en 2012, alors cela signifie qu'il est très stable, donc il peut être installé à partir de la source, sinon j'ai l'impression que le système devrait être misérable.

sqlite compiler et installer

Si sqlite n'est pas compilé, la couche sous-jacente prise en charge par python ne peut pas exécuter certains packages, ce qui équivaut à la mise en cache. S'il est manquant, cela affectera l'ensemble de la structure du fichier. Les commandes spécifiques sont les suivantes :

wget https://www.sqlite.org/2018/sqlite-autoconf-3250200.tar.gz
tar -zxvf sqlite-autoconf-3250200.tar.gz
cd sqlite-autoconf-3250200
./configure --prefix=/usr/local/sqlite3
make && make install

Une fois l'installation terminée, il y aura sqlite3 dans le répertoire /usr/local/ et vous devrez ajouter un lien symbolique vers le répertoire d'exécution :

ln -s /usr/local/sqlite3/bin/sqlite3 /usr/bin/sqlite3   

Si la chaîne logicielle n'est pas ajoutée, la compilation python suivante ne peut toujours pas trouver sqlite. Après cela, installez les packages ci-dessus. Si vous n'utilisez pas le paquet de traitement de données de retour arrière, de suppression, de touches fléchées et de pandas en ligne de commande, les dépendances python ci-dessus peuvent être omis. .

Compilation de code source Python

Vérifiez d'abord à nouveau les dépendances :

apt-get install -y gcc g++ cmake make build-essential zlib1g-dev libbz2-dev libsqlite3-dev libssl-dev libxslt1-dev libffi-dev

Parmi eux, le code source de libsqlite3 a été compilé, car je n'ai pas chargé ce paquet sur le système deepin, je l'ai donc supprimé d'apt-get install.

Ensuite, installez python :

wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
tar -zxvf Python-3.7.5.tgz

cd Python-3.7.5/
./configure --prefix=/usr/local/python3.7.5 --enable-loadable-sqlite-extensions --enable-shared
# ./configure --prefix=/usr/local/python37 --enable-optimizations && make && make install

make
sudo make install

Il y a deux façons de compiler python.L'une consiste à activer la compilation complète des optimisations, c'est-à-dire à construire tous les environnements python.Je l'ai essayé, sauf qu'il a fallu une demi-heure pour compiler le fichier c en 307/471, puis j'ai obtenu bloqué. Selon Il semble que cette option consiste à optimiser l'ensemble du python. Après compilation, les performances sont optimisées d'environ 10%. Mais il n'est pas encore utilisé, donc le premier est recommandé, car la version précompilée téléchargée d'apt-get install python3-devel est également la première à ajouter l'extension sqlite-extensions, qui permet le partage de bibliothèque intégré avec enable-shared .

Ajoutez ensuite la chaîne souple python :

sudo ln -s /usr/local/python3.7.5/bin/python3 /usr/local/python3.7.5/bin/python3.7.5
sudo ln -s /usr/local/python3.7.5/bin/pip3 /usr/local/python3.7.5/bin/pip3.7.5

Définissez la variable d'environnement python3.7.5 :

#用于设置python3.7.5库文件路径
export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH
#如果用户环境存在多个python3版本,则指定使用python3.7.5版本
export PATH=/usr/local/python3.7.5/bin:$PATH

Erreur d'importation : libpython3.7m.so.1.0 : impossible d'ouvrir le fichier d'objet partagé : aucun fichier de ce type ou direct

Cette erreur est également très incroyable, car j'ai ajouté la lib sous python3.7.5 à la variable système ci-dessus, mais l'erreur ici indique qu'elle est introuvable, mais ce fichier est sous la lib, donc ce fichier unique est traité spécialement :
insérez la description de l'image ici
solutions :

cp libpython3.7m.so.1.0 /usr/local/lib/
cp libpython3.7m.so.1.0 /usr/lib/

Les deux chemins ci-dessus sont généralement les bibliothèques de liens dynamiques partageables par défaut de Linux.Comme les variables système dans bashrc, Linux chargera les chemins par défaut.

En plus de la méthode ci-dessus consistant à copier le passé directement par cp, il existe également l'établissement de liens symboliques, ainsi que la modification de /etc/ld.so.conf, puis la création d'un nouveau chemin de bibliothèque dynamique. Généralement, ces deux ne sont pas couramment utilisé, mais qui m'a demandé Maintenant, j'exploite la fosse. Je ne l'ai pas essayé sauf pour les liens symboliques. La méthode /etc/ld.so.conf est illustrée dans la figure ci-dessous. Pour une raison quelconque, il y a trop de dynamiques bibliothèques qui ne peuvent pas être chargées, je ne peux donc ouvrir que de nouveaux chemins :
insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/submarineas/article/details/122607146
conseillé
Classement