Skip to main content

Python libraries on an air-gapped machine

The Problem

Development and test clusters may be air-gapped so that client data or sensitive software under development is less likely to be leaked. This can cause problems when trying to install libraries, e.g. for Python-based software, especially if the cluster has an old version of a Linux OS installed.

The Solution

Setup Python's pip on the remote machine

  • On an Internet-enabled machine, download the Wheel file for pip from https://pypi.python.org/pypi/pip, such as pip-9.0.1-py2.py3-none-any.whl.
  • Copy the Wheel file (e.g. pip-9.0.1-py2.py3-none-any.whl) to the remote machine, e.g. using scp:
    • scp pip-9.0.1-py2.py3-none-any.whl user@host:/path
  • On the remote machine:
    • python pip-9.0.1-py2.py3-none-any.whl/pip install --no-index pip-9.0.1-py2.py3-none-any.whl
    • pip --version # this should display the version number if correctly installed

Download the required libraries

  • On an Internet-enabled machine, download the library and its dependencies using the following. Note that the air-gapped machine contained Python 2.7.5, so I had to set the version in the pip download.
    • mkdir downloads
    • cd dowloads
    • pip download --python-version 2.7.5 --only-binary=:all: <library>
  • Copy the wheel files over to the remote host, e.g.
    • scp *.whl user@host:/path

Install the libraries on the remote machine

  • On the remote (air-gapped) machine, type:
    • pip install --no-index --find-links="." <library>

Comments

Popular posts from this blog

Getting started with Kafka and Kafka Tool

This provides a quick introduction to setting up a local Kafka instance and using Kafka Tool to view the messages. The initial part of the Kafka tutorial is adapted slightly from  http://kafka.apache.org/quickstart.html . The following are steps for: Downloading and unpacking Apache Kafka in Linux Starting the Zookeeper and Kafka servers Creating a new topic Adding and viewing messages using the command line tools Use Kafka Tool to view the messages in a topic Step 1: Download Kafka cd ./Downloads/ wget http://mirror.catn.com/pub/apache/kafka/0.10.0.0/kafka_2.11-0.10.0.0.tgz tar -zxf kafka_2.11-0.10.0.0.tgz cd kafka_2.11-0.10.0.0 Step 2: Start the Zookeeper and Kafka servers Check the Kafka port in zookeeper.properties by looking at clientPort (typically 2181) in config/zookeeper.properties Start Zookeeper with: bin/zookeeper-server-start.sh config/zookeeper.properties and then start Kafka: bin/kafka-server-start.sh config/server.properties ...

Communicating between a Windows laptop and the Windows Mobile PDA using sockets

Introduction Having successfully installed Python on my Windows Mobile PDA I wanted to investigate if I could communicate between my Windows XP machine and my PDA using sockets. I used Cygwin to act as a Linux emulator, although there are Windows-based Python solutions, such as Enthought's Pylab . Step One: Communication between processes on the same machine As a first step, try communication between processes on a single machine. I used the command ipconfig in a Windows command prompt to determine that my IP address is 192.168.1.64. To create the server, I used the following Python code, which is largely from http://www.devshed.com/c/a/Python/Sockets-in-Python/1/ . Create a file called server.py with the following contents: #! /usr/bin/env python import socket mySocket = socket.socket (socket.AF_INET, socket.SOCK_STREAM) mySocket.bind (( '192.168.1.64', 1200 )) mySocket.listen (1) while True: channel, details = mySocket.accept() print 'Opened a connection with...