ssh-audit/PACKAGING.md
2021-02-24 10:18:12 -05:00

2.7 KiB

Windows

An executable can only be made on a Windows host because the PyInstaller tool (https://www.pyinstaller.org/) does not support cross-compilation.

NOTE: PyInstaller v4.2 is known to generate executables with broken PE checksums. As a result, this triggers several anti-virus programs, including Microsoft Defender. This issue has been fixed here, but as of this writing, it has not been shipped in a stable release. One workaround is to use the PyInstaller master branch instead of the version on PyPI.

First, clone PyInstaller onto a Linux machine with MinGW tools installed (apt install mingw-w64). In its booloader directory, compile with python3 waf all. Copy the entire pyinstaller directory to a Windows machine. From an elevated command prompt, install it with python setup.py install. Check that it was successfully installed by running pyinstaller. If so, follow the instructions below, but do not install pyinstaller using pip in step #2.

1.) Install Python v3.9.x from https://www.python.org/. To make life easier, check the option to add Python to the PATH environment variable.

2.) Using pip, install pyinstaller and colorama:

    pip install pyinstaller colorama

3.) Install Cygwin (https://www.cygwin.com/).

4.) Create the executable with:

    $ ./build_windows_executable.sh

PyPI

To create package and upload to test server:

    $ sudo apt install python3-virtualenv
    $ make -f Makefile.pypi
    $ make -f Makefile.pypi uploadtest

To download from test server and verify:

    $ virtualenv -p /usr/bin/python3 /tmp/pypi_test
    $ cd /tmp/pypi_test; source bin/activate
    $ pip3 install --index-url https://test.pypi.org/simple ssh-audit

To upload to production server (hint: use username '__token__' and API token):

    $ make -f Makefile.pypi uploadprod

To download from production server and verify:

    $ virtualenv -p /usr/bin/python3 /tmp/pypi_prod
    $ cd /tmp/pypi_prod; source bin/activate
    $ pip3 install ssh-audit

Snap

To create the snap package, run a fully-updated Ubuntu Server 20.04 VM.

Install pre-requisites with:

    $ sudo apt install make snapcraft
    $ sudo snap install review-tools lxd

Initialize LXD (leave all options default):

    $ sudo lxd init

Bump the version number in snapcraft.yaml. Then run:

    $ make -f Makefile.snap

Upload the snap with:

    $ snapcraft login
    $ snapcraft upload --release=stable ssh-audit_*.snap

Docker

Build image with:

    $ make -f Makefile.docker

Then upload it to Dockerhub with:

    $ make -f Makefile.docker upload