<===

ProNotes

2025-10-29 07:22:51
разархивирует `.deb`-пакет в директорию **с таким же именем, как у файла без расширения `.deb`**.

```bash
#!/bin/bash

# Проверка аргументов
if [ $# -ne 1 ]; then
    echo "Использование: $0 <package.deb>"
    exit 1
fi

DEB_FILE="$1"

# Проверка существования файла
if [ ! -f "$DEB_FILE" ]; then
    echo "Ошибка: файл '$DEB_FILE' не найден."
    exit 1
fi

# Имя пакета без пути и расширения
BASENAME=$(basename "$DEB_FILE" .deb)

# Создаём директорию
mkdir -p "$BASENAME"

# Извлекаем .deb в эту директорию
dpkg-deb --extract "$DEB_FILE" "$BASENAME"

# Проверяем успешность
if [ $? -eq 0 ]; then
    echo "Пакет '$DEB_FILE' успешно разархивирован в директорию '$BASENAME/'"
else
    echo "Ошибка при разархивировании."
    exit 1
fi
```

---

### Как использовать:

1. Сохрани скрипт как `extract_deb.sh`
2. Сделай исполняемым:

```bash
chmod +x extract_deb.sh
```

3. Запусти:

```bash
./extract_deb.sh package.deb
```

---

### Зависимости

Требуется утилита:
```bash
dpkg-deb
```

Обычно доступна в системах на базе Debian/Ubuntu.  
Если нет — установи:

```bash
sudo apt install dpkg
```

---

### Пример:

```bash
./extract_deb.sh vim_8.2.1234-1_amd64.deb
```

→ Создастся папка `vim_8.2.1234-1_amd64` с содержимым пакета (файлы, как в `/usr`, `/etc` и т.д.)

---

### Дополнительно: извлечь только `control`-информацию

Если захочешь — можно расширить скрипт, чтобы извлекать и `control.tar.xz`:

```bash
dpkg-deb --control "$DEB_FILE" "$BASENAME/DEBIAN"
```

Добавь эту строку **после** `--extract`, если нужно.
← Previous Next →
Back to list