Извлечь файлы 7z с помощью стандартных инструментов Linux?

Вопрос или проблема

Я знаю, что вы можете извлекать .7z файлы с помощью 7-zip.

Есть ли другая стандартная программа для Linux, которая может это сделать? Возможно, одна из этих

tar
bzip2
xz
gzip

Добавлю, что bsdtar может это сделать, но не доступен на всех системах.

Нет. Архивы 7-Zip используют LZMA и LZMA2, которые не поддерживаются стандартными инструментами (они также используют bzip2, но вам все равно нужно декодировать заголовок).

Архивы 7-Zip могут быть извлечены с помощью p7zip (http://p7zip.sourceforge.net/) на Linux. Он включён в репозитории: Debian, Fedora, Ubuntu и, возможно, других дистрибутивов тоже.

Список содержимого с помощью (малые буквы L, для списка):

7za l myarchive.7z

Извлечение содержимого:

7za x myarchive.7z

«Стандартный» способ работы с архивами 7-Zip в Unix – использовать P7ZIP. Но поскольку формат 7-Zip был разработан в первую очередь для Windows, не стоит ожидать, что P7ZIP будет предустановлен в Linux-дистрибутивах по умолчанию.

Если вы хотите воспользоваться преимуществом сжатия LZMA в Unix, предпочтите XZ Utils.

Бинарный файл 7za является частью пакета p7zip и может быть использован для этого. Его можно установить из репозитория epel, если вы используете RHEL/OL/CentOS (тестировалось на RHEL6/RHEL7):

RHEL6, 7:

# rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
# yum install p7zip

Этот пакет не обновлялся долгое время, но все равно может быть использован для извлечения файлов:

$ 7za x xyz_7zfile.7z

Я не смог найти 7za в каких-либо yum репозиториях на RHEL/CentOS, поэтому я просто скачал последнюю версию исходников с sourceforge.net:

$ wget https://sourceforge.net/projects/p7zip/files/p7zip/16.02/p7zip_16.02_src_all.tar.bz2

(замените “16.02” на последнюю версию в момент загрузки, вы можете узнать, зайдя на https://sourceforge.net/projects/p7zip/files/p7zip/).

Находясь в директории, куда вы скачали архив p7zip, разархивируйте его:

$ tar -xvjf p7zip_16.02_src_all.tar.bz2

Затем выполните команду make от имени пользователя root внутри извлечённой папки:

# make
# make install

Это создаст бинарный файл 7za в директории /usr/local/bin (если вы используете RHEL7, по крайней мере):

$ whereis 7za
7za: /usr/local/bin/7za

Пакет p7zip доступен в macports, в виде бинарного файла.

Просто: sudo port install p7zip

И вы готовы! 7z x downloads/myfile.7z

То же самое касается CentOS, но с использованием yum:

sudo yum install p7zip

Я пытался использовать 7za с первого раза, но он не сработал, поэтому я попробовал использовать 7z с теми же параметрами, и это сработало. Вот пример:

Чтобы извлечь:

7z e xy213file.7z

Ответ или решение

Для извлечения файлов из архивов формата .7z в стандартной среде Linux, многие пользователи обращаются к утилите 7-Zip. Однако, существует ряд других инструментов, которые могут помочь в этой задаче, хоть и стоит отметить, что они не являются стандартными для всех дистрибутивов Linux.

Использование p7zip

Наиболее рекомендованный способ работы с .7z архивами на Unix-подобных системах – использование p7zip. Это порт 7-Zip, который поддерживает функции сжатия и распаковки архивов .7z.

Установка p7zip:

  1. Для установки на системах, основанных на Debian или Ubuntu, выполните следующую команду:

    sudo apt install p7zip-full
  2. Для RHEL, CentOS или Fedora вы можете использовать:

    sudo yum install p7zip

    или

    sudo dnf install p7zip
  3. Установку можно также выполнить из EPEL (Extra Packages for Enterprise Linux) для RHEL/CentOS:

    sudo yum install epel-release
    sudo yum install p7zip
  4. В случае, если p7zip отсутствует в репозиториях, вы можете загрузить последнюю версию исходного кода с SourceForge:

    wget https://sourceforge.net/projects/p7zip/files/p7zip/16.02/p7zip_16.02_src_all.tar.bz2

    Распакуйте архив:

    tar -xvjf p7zip_16.02_src_all.tar.bz2

    Затем перейдите в распакованную папку и выполните:

    make
    sudo make install

Извлечение содержимого:
После установки p7zip вы можете использовать следующие команды для работы с архивами .7z:

  • Просмотр содержимого архива:

    7za l myarchive.7z
  • Извлечение архива:

    7za x myarchive.7z

    или если у вас установлен p7zip-full, вы можете использовать:

    7z x myarchive.7z

Альтернативные инструменты

Хотя инструменты, упомянутые в начале (tar, bzip2, xz, gzip), не могут распаковывать .7z архивы, вы можете использовать bsdtar в системах, где он доступен. Однако это не так широко распространено и не является стандартом.

Для сжатия файлов, аналогичного LZMA, вы можете предпочесть XZ Utils (программа xz), которая может сжимать файлы в формате .xz, но для работы с .7z архивами ее использование нецелесообразно.

Заключение

Существует несколько способов извлечения .7z файлов на Linux, но наилучшим и наиболее надежным является использование p7zip. Хотя стандартные инструменты, такие как tar и gzip, не подходят для этой задачи, p7zip обеспечивает все необходимые функции для работы с архивами .7z. Подходите к процессу установки ответственно и убедитесь, что вы используете актуальные версии программ для повышения стабильности и производительности.

Оцените материал
Добавить комментарий

Капча загружается...