Skip to content

Improve Installation Structure & Uninstallation Process #100

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.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions