Tar - обновление штатного архиватора

Версия для печатиОтправить другуPDF version

По просьбе знакомого, пришлось как-то реанимировать один из его серверов после збоя в работе HDD. Обнаружив сбойный винт, удалил его из зеркала, однако сервер до этого неоднократно бутался, что не лучшим образом сказалось на его работе. После fsck все равно не захотел запускаться джаббер-сервер Openfire. Решил его переустановить. Однако не тут-то было:

# cd /usr/ports/net-im/openfire && make install clean && rehash
===>   openfire-3.8.2,1 depends on file: /usr/local/openjdk6/bin/java - not found
===>    Verifying install for /usr/local/openjdk6/bin/java in /usr/ports/java/openjdk6
===>   openjdk6-b29 depends on file: /usr/local/bin/zip - found
===>   openjdk6-b29 depends on file: /usr/local/bin/unzip - found
===>   openjdk6-b29 depends on file: /usr/local/include/cups/cups.h - found
===>   openjdk6-b29 depends on file: /usr/local/bootstrap-openjdk/bin/javac - not found
===>    Verifying install for /usr/local/bootstrap-openjdk/bin/javac in /usr/ports/java/bootstrap-openjdk
===>  License GPLv2 accepted by the user
===> Fetching all distfiles required by bootstrap-openjdk-r333271 for building
===>  Extracting for bootstrap-openjdk-r333271
=> SHA256 Checksum OK for openjdk6-amd64-r333271.tar.xz.
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.
*** Error code 1
 
Stop in /usr/ports/java/bootstrap-openjdk.
*** Error code 1
 
Stop in /usr/ports/java/openjdk6.
*** Error code 1
 
Stop in /usr/ports/java/openjdk6.
*** Error code 1
 
Stop in /usr/ports/net-im/openfire.
*** Error code 1
 
Stop in /usr/ports/net-im/openfire.

Проверил версию системы:

# uname -v
FreeBSD 8.2-PRERELEASE #1: Thu Jan 20 14:22:13 EET 2011     root [at] srv [dot] local:/usr/obj/usr/src/sys/srv

Можно было бы и обновиться до более новой версии, где встроеный tar уже понимал бы формат архива xz, однако тратить лишнее время охоты не было, поэтому обновим только сам tar.

Сервер сетапился мной, так что обновление портов выполнялось в автоматическом режиме, обновлять порты не пришлось. Собственно, установка нужного порта:

# cd /usr/ports/archivers/libarchive && make install clean && rehash

Во время установки пришлось обновить libtool с помощью утилиты portupgrade, но это уже отдельная история.

После установки libarchive вносим изменения в make.conf - меняем обработчик tar:

# echo 'TAR=/usr/local/bin/bsdtar' >> /etc/make.conf

После этих манипуляций архив успешно распаковался и порт был установлен.

 

Голосов пока нет

Вставай, Україно!

Литература

На старости лет начал изучать английский. Очень напоминает С