Skip to content

Distribute CLI via Alpine APK #126

Description

@cardmagic

Summary

Add Alpine APK distribution for the classifier CLI to make installation easier for Alpine Linux users and Docker images.

Background

Currently users must install via RubyGems (gem install classifier), which requires Ruby environment setup. An Alpine package would provide a simpler installation path, especially useful for Docker containers.

Tasks

  • Create APKBUILD file
  • Submit to Alpine aports (community repository)

Options

  1. Alpine aports (community) - Submit to official Alpine community repository
  2. Custom APK repository - Host on rubyclassifier.com

Example APKBUILD

# Maintainer: Lucas Carlson <lucas@rufy.com>
pkgname=classifier
pkgver=2.2.0
pkgrel=0
pkgdesc="Text classification with Bayesian and LSI algorithms"
url="https://rubyclassifier.com"
arch="noarch"
license="LGPL"
depends="ruby ruby-dev"
makedepends="ruby-dev"
source="https://rubygems.org/downloads/$pkgname-$pkgver.gem"

build() {
    gem install --no-document --install-dir=.gem --bindir=.bin "$srcdir/$pkgname-$pkgver.gem"
}

package() {
    mkdir -p "$pkgdir"/usr/lib/ruby/gems
    cp -a .gem/* "$pkgdir"/usr/lib/ruby/gems/
    
    mkdir -p "$pkgdir"/usr/bin
    cp -a .bin/* "$pkgdir"/usr/bin/
}

sha512sums="..."

Installation (Goal)

# Official repo (after acceptance)
apk add classifier

# Custom repo
echo "https://rubyclassifier.com/alpine/v3.19/community" >> /etc/apk/repositories
wget -O /etc/apk/keys/classifier.rsa.pub https://rubyclassifier.com/alpine/classifier.rsa.pub
apk add classifier

Docker Usage

Alpine packages are especially useful for Docker images:

FROM alpine:3.19
RUN apk add --no-cache classifier
ENTRYPOINT ["classifier"]

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority: lowLow priority - nice to have

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions