An open API service indexing awesome lists of open source software.

https://github.com/vitexsoftware/igdebi

Online package installer for Debian
https://github.com/vitexsoftware/igdebi

debian downloader package-management python ubuntu

Last synced: about 2 months ago
JSON representation

Online package installer for Debian

Awesome Lists containing this project

README

          

# ![iGdebi](igdebi.png?raw=true) igdebi

**Interactive Gdebi** - A modern command-line tool for downloading and installing Debian packages from URLs.

## Features

- ๐ŸŒ **URL Support**: Download .deb packages directly from web URLs
- ๐Ÿ“ **Local Files**: Install local .deb files
- ๐Ÿ“Š **Progress Bars**: Real-time download progress with speed indicators
- ๐Ÿ”’ **Security**: Safe subprocess execution, proper input validation
- ๐Ÿงน **Auto Cleanup**: Automatically removes downloaded files after installation
- โšก **Modern**: Updated dependencies and Python 3.7+ support
- ๐Ÿ›ก๏ธ **Error Handling**: Comprehensive error handling and user feedback

## Quick Start

### Install from Repository

```shell
sudo apt install lsb-release wget
echo "deb http://repo.vitexsoftware.cz $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/vitexsoftware.list
sudo wget -O /etc/apt/trusted.gpg.d/vitexsoftware.gpg http://repo.vitexsoftware.cz/keyring.gpg
sudo apt update
sudo apt install igdebi
```

### Install from Source

```shell
git clone https://github.com/VitexSoftware/igdebi.git
cd igdebi
pip3 install -r requirements.txt
sudo apt install gdebi-core
pip3 install -e .
```

## Usage

### Download and Install from URL

```shell
sudo igdebi https://example.com/package.deb
```

### Install Local Package

```shell
sudo igdebi /path/to/package.deb
```

### Example with Real Package

```shell
# Install Apache NetBeans IDE
sudo igdebi https://github.com/Friends-of-Apache-NetBeans/netbeans-installers/releases/download/v27-build1/apache-netbeans_27-1_amd64.deb
```

**Output:**

```console
Downloading https://github.com/.../apache-netbeans_27-1_amd64.deb...
Downloading apache-netbeans_27-1_amd64.deb: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 621M/621M [00:20<00:00, 30.9MB/s]
Successfully installed apache-netbeans_27-1_amd64.deb
Cleaned up downloaded file: apache-netbeans_27-1_amd64.deb
```

![Screenshot](https://raw.githubusercontent.com/VitexSoftware/igdebi/master/screenshot.png)

## Requirements

### System Requirements

- **OS**: Debian, Ubuntu, or derivatives
- **Python**: 3.7 or higher
- **Architecture**: amd64, i386, arm64 (depends on package)

### System Dependencies

```shell
sudo apt install gdebi-core python3-pip
```

### Python Dependencies

Python 3.7+ is required. The following Python packages are needed:

- `tqdm>=4.67.0` - For progress bars during download
- `validators>=0.35.0` - For URL validation
- `requests>=2.25.0` - For HTTP downloads

Install Python dependencies:

```shell
pip3 install -r requirements.txt
```

## Development

### Development Setup

1. **Clone Repository**

```shell
git clone https://github.com/VitexSoftware/igdebi.git
cd igdebi
```

2. **Create Virtual Environment**

```shell
python3 -m venv venv
source venv/bin/activate # On Linux/macOS
```

3. **Install Dependencies**

```shell
pip install -r requirements.txt
pip install -e .
```

4. **Install System Dependencies**

```shell
sudo apt install gdebi-core
```

### Building Debian Package

We use standard debian devscripts:

```shell
debuild -i -us -uc -b
```

### Testing

Run tests with a real package:

```shell
# Test with a small package
sudo igdebi https://github.com/VitexSoftware/igdebi/releases/download/test/test-package.deb

# Test with local file
sudo igdebi /path/to/local/package.deb
```

## API Reference

### Command Line Interface

```text
igdebi
```

**Arguments:**

- `URL_OR_PATH`: Either a URL pointing to a .deb file or a local file path

**Examples:**

```shell
igdebi https://example.com/package.deb # Download and install from URL
igdebi ./package.deb # Install local file
igdebi /tmp/downloaded.deb # Install from absolute path
```

### Error Handling

The tool provides comprehensive error handling:

- **Invalid URL**: Validates URL format before attempting download
- **Network Issues**: Handles connection timeouts and HTTP errors
- **File Validation**: Ensures files have .deb extension
- **Missing Dependencies**: Checks for gdebi installation
- **Permission Issues**: Clear messages for sudo requirements
- **Interrupted Downloads**: Clean cleanup on Ctrl+C

## Changelog

### Version 0.2.0 (2025-10-04)

- โœจ **New**: Real-time progress bars with download speed
- ๐Ÿ”ง **Fixed**: Progress bar display issues
- ๐Ÿ”’ **Security**: Replaced `os.system()` with secure `subprocess` calls
- ๐Ÿ“ฆ **Updated**: All dependencies to latest versions
- ๐Ÿงน **Improved**: Error handling and user feedback
- ๐ŸŽฏ **Enhanced**: URL validation and file handling
- ๐Ÿ“ **Added**: Comprehensive documentation and examples

### Version 0.2 (2020-07-19)

- ๐ŸŽ‰ **Initial**: First public release
- ๐Ÿ“ฆ **Feature**: Basic URL download and package installation

## Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## License

This project is licensed under the GPL License - see the [LICENSE](LICENSE) file for details.

## Support

- ๐Ÿ› **Issues**: [GitHub Issues](https://github.com/VitexSoftware/igdebi/issues)
- ๐Ÿ“ง **Email**:
- ๐ŸŒ **Website**: [VitexSoftware](https://vitexsoftware.cz)

## Related Projects

- [gdebi](https://packages.debian.org/sid/gdebi-core) - The underlying package installer
- [apt](https://wiki.debian.org/Apt) - Advanced Package Tool for Debian
- [dpkg](https://wiki.debian.org/Teams/Dpkg) - Debian package manager