👻

python3 fabric2があまりにもfabric1と非互換だったので archlinux/alpinelinux で python2

2 min read

python2/3製の非常にお手軽なデプロイツールとしては、fabricがある。その最新版の2は存在するのだが。

Alpine Linux packages

Arch Linux - fabric 2.5.0-3 (any)

fabric2だと構文と機構が大きく変わるうえに、考え方も違うため、全面的に書き直しを求められる。

そんな訳で各環境でむりやりfabric1を使う方法を考えてみる。

ちなみにfabricは一般名詞であり、プログラミング業界内でも、いくつかの別の名称と衝突している。

alpine

apk add python2 python2-dev py2-pip musl-dev linux-headers gcc libffi-dev
pip2 install cffi==1.14
apk add openssl-dev make
pip2 install bcrypt==3.1.7 pynacl==1.3.0
pip2 install fabric==1.14

手順はこの通りなので、他os/linuxの利用者ならDockerを使ったほうがお手軽だろう。
小生の環境 4991.91bogomis x 4core では、2分30秒程度でdocker buildが終了する。

FROM alpine:latest

RUN nice apk add python2 python2-dev py2-pip musl-dev linux-headers gcc libffi-dev openssl-dev make
RUN nice pip2 install cffi==1.14 bcrypt==3.1.7 pynacl==1.3.0 fabric==1.14

arch

makepkgするのが確実
PKGBUILDは本家のPKGBUILDからちょいちょい修正したもの

pkgname=fabric1
pkgver=1.14
pkgrel=1
pkgdesc="Python library and command-line tool designed to streamline deploying applications or performing system administration tasks via the SSH protocol"
url="http://fabfile.org/"
license=('BSD')
arch=('any')
depends=('python2' 'python2-paramiko' 'python2-setuptools')
source=("https://github.com/fabric/fabric/archive/${pkgver}.tar.gz")
sha512sums=('85606d6e492db7143bc32da0a93587c9b6442014defaf7118d16362abb937fdeda760d4c4dce32923313020ebc991a857fce2af407fbdf88da50a96eb031cb11')

package() {
  cd ${srcdir}/fabric-${pkgver}
  python2 setup.py install --root=${pkgdir} --optimize=1

  install -D -m644 README.rst ${pkgdir}/usr/share/doc/${pkgname}/README.rst
  install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
}

AURがある...

同じことを思った人がいるのは、archlinux AURが存在した。

AUR (en) - fabric1

Discussion

ログインするとコメントできます