Вопрос или проблема
Я знаю, что вы можете извлекать .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:
-
Для установки на системах, основанных на Debian или Ubuntu, выполните следующую команду:
sudo apt install p7zip-full
-
Для RHEL, CentOS или Fedora вы можете использовать:
sudo yum install p7zip
или
sudo dnf install p7zip
-
Установку можно также выполнить из EPEL (Extra Packages for Enterprise Linux) для RHEL/CentOS:
sudo yum install epel-release sudo yum install p7zip
-
В случае, если 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. Подходите к процессу установки ответственно и убедитесь, что вы используете актуальные версии программ для повышения стабильности и производительности.