Skip to content

Improve Installation Structure & Uninstallation Process #100

@isaka-james

Description

@isaka-james

The current installation process for nuru has a few structural issues that could be improved for better adherence to Linux standards and professionalism. This issue highlights necessary changes regarding binary placement, licensing, documentation, and uninstallation.

Current Observations & Issues

  1. File Placement in /usr/local/bin

    • The .tar.gz release package includes the nuru binary, LICENSE, and README.md.
    • During installation, all these files are moved to /usr/local/bin.
    • Issue: /usr/local/bin should only contain binaries; other files should be placed in appropriate directories (e.g., /usr/share/doc/nuru/ for documentation).
  2. License Display

    • Instead of placing LICENSE in /usr/local/bin, the CLI could display license details when prompted (e.g., nuru --license), or we can use the Python’s approach(license()).
  3. Termux Installation Path

    • Currently, the installation script places files in /usr/share/ and links them via .bashrc.
    • Issue: This is not a standard practice. Instead, the binary should be installed directly into /usr/bin, which would allow execution without modifying .bashrc.
  4. Improving the Linux Installation Process

    • A more streamlined installation method could be implemented by hosting an installation script on a subdomain (e.g., sh.nuruprogramming.org), similar to Rust’s sh.rustup.rs.
  5. Uninstallation Process

    • Currently, nuru has no formal uninstallation script, requiring manual removal of files.
    • Suggestion: Provide a nuru uninstall command or a script to cleanly remove installed files.

Proposed Solutions

  • Refactor the installation script to place non-binary files in appropriate directories.
  • Modify the script to install directly to /usr/bin on Termux, removing dependency on .bashrc.
  • Set up a subdomain for a cleaner installation process.
  • Implement an uninstallation script for proper cleanup.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions