[Linux] Comment installer un package sur un serveur qui n’a pas d’environnement Internet (autonome)

introduction

Non connecté au réseau mondial du point de vue de la sécurité tel que l'environnement de production, Il existe des serveurs dits autonomes.

Lorsque vous souhaitez installer des bibliothèques et des packages supplémentaires sur un tel serveur Comment puis-je l'installer?

J'ai été accro à mes travaux précédents et j'aimerais écrire un petit résumé des solutions à ce moment-là. J'espère que cela sera utile à n'importe qui.

À la fin de l'article, j'introduis un script qui exécute automatiquement cette méthode. (Avec image Gif) Puisqu'il a été créé par moi personnellement, je ne garantis pas l'opération, mais si vous avez une chance, veuillez l'utiliser.

Conditions préalables

Définissez les mots utilisés dans l'article comme suit:

mot Définition
Environnement autonome Un serveur qui ne se connecte pas au réseau global. Lieu d'installation.
PC local Mon PC de travail. Il est connecté au réseau.

environnement d'utilisation

Nom OS version Remarques
Environnement autonome CentOS 7 AWS EC2(Pour vérification)
PC local macOS Catalina
Conteneur Docker CentOS 7

Flux global

Suivez la procédure ci-dessous.

  1. Lancez un conteneur Docker sur votre PC local
  2. Téléchargez le package dans le conteneur Docker
  3. Créez le dossier de destination du téléchargement en tant que référentiel
  4. Déplacer le référentiel créé vers un environnement autonome
  5. Configurer le référentiel dans un environnement autonome
  6. Installer dans un environnement autonome

Plus loin dans l'article, j'expliquerai la procédure détaillée ci-dessus.

Si vous ne disposez pas d'un environnement Docker, vous pourrez peut-être l'exécuter sur votre PC local. Cependant, il peut y avoir des cas où cela ne fonctionne pas en fonction de la dépendance. Nous vous recommandons d'utiliser un environnement propre avec presque rien.

point important

Procédure détaillée

Faisons-le réellement!

0. Préparation de l'environnement autonome

Nous avons préparé AWS EC2 en tant que serveur autonome à utiliser dans l'environnement de vérification. Afin de l'isoler du réseau global, toute communication autre que ssh (port 22) est interdite.

↓ Résultat de l'exécution de yum update dans un environnement autonome スクリーンショット 2020-02-13 18.11.11.png

1. Lancez un conteneur Docker sur votre PC local

Lancez autant que possible un conteneur Docker dans le même environnement que l'environnement autonome. Cette fois, nous allons lancer le conteneur CentOS 7. Lorsque vous vous levez, accédons au conteneur.

$ docker run -itd --name centos7 centos:centos7
$ docker exec -it centos7 bash

2. Téléchargez le package dans le conteneur Docker

Commencez par créer un répertoire pour télécharger le package.

# mkdir standalone_install

Dans le répertoire créé, téléchargez tous les packages requis pour l'environnement autonome. Cette fois, nous téléchargerons ensemble git et ʻiproute2` (assortiment de commandes réseau).

En ajoutant l'option --downloadonly, il est possible d'exécuter uniquement le téléchargement sans installer.

# yum install -y --downloadonly --downloaddir=standalone_install git iproute2

yum install --downloadonly --downloaddir=<directory> <package> [^1]

Si vous regardez à l'intérieur du répertoire téléchargé, vous verrez qu'il contient un grand nombre de fichiers rpm.

スクリーンショット 2020-02-13 19.01.37.png

3. Créez le dossier de destination du téléchargement en tant que référentiel

Installez la commande de création de référentiel createrepo.

# yum install -y createrepo

Créez un référentiel en utilisant la commande create repo que vous venez d'installer. Spécifiez simplement le répertoire et exécutez-le pour créer les métadonnées et agir comme un référentiel.

# createrepo standalone_install

repodata est les métadonnées créées par la commande create repo. image.png

Les étapes suivantes déplaceront le fichier vers un environnement autonome, assurez-vous donc de compresser le fichier si nécessaire.

4. Déplacer le référentiel créé vers un environnement autonome

Déplacez le dossier du référentiel créé par la commande createrepo vers l'environnement autonome. Cette fois, c'est un peu gênant, mais déplacez-le selon la procédure suivante.

  1. Quittez le conteneur Docker
  2. Copiez le dossier du conteneur Docker sur votre PC local
  3. Copiez le dossier de votre PC local vers un environnement autonome
#exit ← Quitter le conteneur. Ctrl+D est également OK.
$ docker cp centos7:/standalone_install/ ./
$ scp -r standalone_install standalone_ec2:/home/centos/

5. Configurer le référentiel dans un environnement autonome

Il ne reste plus qu'à travailler dans un environnement autonome.

Créez un fichier .repo et configurez le référentiel déplacé. Les éléments de réglage sont les suivants.

nom de l'article Éléments de réglage
name Le nom du référentiel
baseurl Le chemin du répertoire où se trouve le référentiel réel
gpgcheck ~~Chèque Guppigu~~S'il faut confirmer la signature GPG. 0=false,1=true
$ sudo vi /etc/yum.repo.d/standalone_install.repo
[standalone_repo]
name=standalone_repo
baseurl=file:///home/centos/standalone_install/
gpgcheck=0

6. Installer dans un environnement autonome

Spécifiez le référentiel avec l'option --enablerepo pour installer le package. A ce moment, --disablerepo = * est défini pour ne pas aller chercher un référentiel externe. (L'option --disablerepo doit être définie avant le --enablerepo)

$ sudo yum install -y --disablerepo=* --enablerepo=standalone_repo git iproute2

J'ai pu l'installer de cette manière même dans l'environnement de vérification (EC2)! (Cette image ne le prouve pas du tout ... lol) スクリーンショット 2020-02-15 23.08.01.png

Résumé / Bonus

Les points clés de cette méthode d'installation sont les suivants.

--Utilisez le même système d'exploitation et la même version du conteneur Docker que l'environnement autonome --Téléchargement du fichier rpm à l'aide de l'option --downloadonly --Création d'un référentiel avec la commande create repo --Créez un fichier .repo et configurez le référentiel --Spécifiez le référentiel avec --enablerepo et installez

Comme je l'ai mentionné au début de l'article, j'ai personnellement créé un script qui exécute automatiquement cette méthode d'installation. Le Readme décrit comment l'utiliser, veuillez donc l'utiliser si vous en avez l'occasion. https://github.com/hesma2/standalone_install

↓ Image d'opération (les étapes 1 à 3 sont exécutées par un script) demo

référence

[^ 1]: Utilisez yum pour télécharger sans installer de packages

Recommended Posts

[Linux] Comment installer un package sur un serveur qui n’a pas d’environnement Internet (autonome)
Comment installer Linux sur un PC UEFI 32 bits
Comment créer un environnement Python sur Amazon Linux 2
Comment utiliser l'unité esclave LAN sans fil tp-link qui ne prend pas en charge Linux
Une note sur la façon de préparer facilement un environnement de pratique Linux
Comment installer VMware-Tools sur Linux
Comment installer aws-session-manager-plugin sur Manajro Linux
Comment installer un package à l'aide d'un référentiel
Comment installer des packages sur Alpine Linux
Comment installer php7.4 sur Linux (Ubuntu)
Comment corriger un bug qui empêche le notebook Jupyter de démarrer automatiquement
Comment installer le package python dans un environnement local en tant qu'utilisateur général
Construisez Linux sur un environnement Windows. Étapes pour installer Laradock et migrer
Comment installer Camunda Modeler sur Manjaro Linux
Comment créer un environnement Django (python) sur Docker
[AWS EC2] Comment installer Maven sur Amazon Linux 2
Comment installer git sur Linux tel que EC2
Comment exécuter Django sur IIS sur un serveur Windows
Comment créer un bel environnement Python sur un nouveau Mac et installer Jupter Notebook
Comment mettre Pyenv sur Amazon Linux et Ubuntu pour créer un environnement Python 3.6.0
Comment utiliser GitHub sur un serveur multi-personnes sans mot de passe
Le traitement parallèle de Python joblib ne fonctionne pas dans l'environnement uWSGI. Comment traiter en parallèle sur uWSGI?
Comment créer un nouvel environnement virtuel Python sur Ubuntu
Comment configurer WSL2 sur Windows 10 et créer un environnement d'étude pour les commandes Linux
Remarques sur la façon de charger un environnement virtuel avec PyCharm
Comment enregistrer un package dans PyPI (à partir de septembre 2017)
Comment installer nkf avec un fichier rpm sur Red Hat Enterprise Linux 7.7 (pour les environnements sans connexion Internet)
Comment résoudre le problème selon lequel APL ne démarre pas après le transfert vers l'appareil réel sur Kivy-iOS
J'ai essayé d'implémenter une méthode pour calculer l'indice d'évaluation (spécificité, NPV) que scikit-learn n'a pas
Remarque sur la façon de vérifier la connexion au port du serveur de licences
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS
Un codec Python spécial qui semble savoir mais ne sait pas
Comment continuer le traitement après avoir renvoyé une réponse sur aiohttp Server
Héberger la bibliothèque réseau Mirror for Unity sur un serveur Linux
Comment installer mysql-connector-python sur Mac
Installez Arch Linux sur DeskMini A300
Comment créer un package Conda
Comment installer Graph-Tool sur macOS
Exécutez un serveur Linux avec GCP
Comment installer pycrypto sur Windows
Comment installer OpenCV sur Mac
Comment installer MBDyn (Linux Ubuntu)
Comment installer PyPy sur CentOS
Créer un environnement Linux sur Windows 10
Comment installer TensorFlow sur CentOS 7
Comment installer Maven sur CentOS
Comment installer Music 21 sur Windows
La somme de contrôle NVM n'est pas valide, une solution au problème que le LAN câblé d'Intel ne reconnaît pas sous Linux.
Une histoire à laquelle j'étais accro à essayer d'installer LightFM sur Amazon Linux
Comment créer mon propre serveur Linux
Comment créer un environnement de traduction sphinx
Comment installer drobertadams / toggl-cli sur Mac
Comment ajouter un package avec PyCharm