LINUX.ORG.RU

Обновление p7zip

 ,


0

1

Всем привет, переехал на Linux 24 января, просьба сильно не пинать. Стоит Минт 18.3, репы родные, добавил только репы оперы, виртуалбокса и wine-hq (для cms с видеорегистратора). Сейчас решил поработать с 7зип архивами и увидел что у меня стоит 9.20 версия, она же и в синаптике, но на sourceforge есть сорцы 16.02. Возник вопрос - а есть ли репы под минт\убунту\дебиан со свежим p7zip или же проще собрать из сорцев через checkinstall (дабы не засорять систему и удалить если что без гемора)? Поиск курил, но не помогло, увидел только что у Xintrea (Тестирование 7zip архива - это что за?) 16.02.



Последнее исправление: Dark_Snow (всего исправлений: 1)

А зачем он тебе последней версии? Алгоритм сжатия все равно один и тот же. А еще есть xz архиватор - он использует тот же алгоритм сжатия, что и 7z.

rumgot ★★★★★
()

Стоит Минт 18.3

хачу последние версии

ну так и ставь ubuntu 17.10

anonymous
()

Вот тут можно взять более новую версию пакета: https://packages.ubuntu.com/zesty/p7zip-full

Вероятнее всего, пакет от Ubuntu 16.10 не заработает в Ubuntu 16.04: сообщит что Glibc в вашей системе слишком старый.

Если всё будет работать сразу - вот и хорошо. Если произойдёт то, что я сказал, я опишу универсальный способ пересборки из исходного кода любого пакета от более новой убунте/дебиане - в более старой.

1). Включите репозиторий Sources: https://i.stack.imgur.com/r3WJ1.png

2). Установите зависимости для сборки программы:

sudo apt-get build-dep p7zip-full

Список этих зависимостей можно будет сохранить, чтобы потом удалить. При помощи автозамены gedit убрать двойные пробелы, а также символы переноса строки (автозамена в gedit понимает их).

3). Найти нужный пакет на сайте https://packages.ubuntu.com/ или https://packages.debian.org/. Справа - ссылки на DEB-SRC, исходный код.

4). Создать новый каталог, в которой будет производиться сборка:

mkdir ~/build
cd ~/build

~/ это «домашний каталог», то же самое что и /home/username

wget http://archive.ubuntu.com/ubuntu/pool/universe/p/p7zip/p7zip_16.02+dfsg-2.dsc
wget http://archive.ubuntu.com/ubuntu/pool/universe/p/p7zip/p7zip_16.02+dfsg.orig.tar.xz
wget http://archive.ubuntu.com/ubuntu/pool/universe/p/p7zip/p7zip_16.02+dfsg-2.debian.tar.xz
dpkg-source -x p7zip_16.02+dfsg-2.dsc
cd p7zip_16.02
fakeroot ./debian/rules binary

Если всё пройдёт успешно, появятся пакеты. Можно удалить пакеты *dbg* и *dev*.

Вместо dpkg-source -x p7zip_16.02+dfsg-2.dsc можно набрать первые буквы названия файла, а затем - автодополнение клавишей Tab.

ZenitharChampion ★★★★★
()

Уже 18.01 вышел, но в p7zip его пока не портировали

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

Спасибо) Что такое тильда в консоли знаю, но все равно за развернутый ответ спасибо. Убунтовский пакет не ставится, сорцы скачал с sourceforge и распаковал уже - обязательно тащить вгетом с бубунтовского репа?

Dark_Snow
() автор топика
Ответ на: комментарий от rumgot

Вообще более новые версии больше «неизвестных» архивов открывают - те же вим архивы винды 9ка вроде не умеет и т.п. Плюс нужен для удобства 7zFM...

Dark_Snow
() автор топика

в sid 16.02, в stretch 16.02 - зачем нужны поделия когда можно сразу использовать то откуда ноги растут...

amd_amd ★★★★★
()

Минт емнип тн «стабильный» дистрибутив, что на самом деле значит что там старый глючный софт. Попробуй роллинг -релиз версии дистоибутивов, вот у меня:

$ 7z

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21

anonymous
()
Ответ на: комментарий от ZenitharChampion

checkinstall делает их довольно-таки топорно

На данный момент я знаю что нехорошо через ./make install собирать и ставить, на хабре предложили чекинсталл, а как тогда правильно? А если не будет инструкций как сейчас? Если только сорцы есть, то как лучше собрать пакет(ы) и поставить?

Dark_Snow
() автор топика
Ответ на: комментарий от Dark_Snow

да какая разница убунта минт - один хрен из дебиана слеплено, я к тому что зачем поделия на основе системы когда сразу систему взять можно и обвесить ее на свое усмотрение всем необходимым, зачем брать готовое мусорное решение и срадать от того что разрабы туда говна натолкали

amd_amd ★★★★★
()
Ответ на: комментарий от Dark_Snow

В том случае, если есть пакет от более новой убунты, можно взять его исходники и собрать в более старой (а можно просто попробовать установить - небольшие простенькие пакеты обычно работают в старой убунте без пересборки). Моя инструкция подходит к любому пакету - например я обновил себе таким образом pidgin.

А если нет ни репозитория PPA, ни пакета из более новой убунты - то checkinstall! Его минус только в том, что у DEB-пакета, который создаётся, нет списка зависимостей. А в остальном он хорош.

// В качестве оффтопика. На Хабре наверное не знают про команду sudo make uninstall. Которая удаляет то, что было установлено при помощи sudo make install. Но-во-первых, sudo make uninstall бывает не у всех пакетов (например это не работает для программ на Питоне, которые используют Setup.py). Во-вторых, несколько лет назад был эпичный фейл, когда sudo make uninstall удалял пол-системы:

commit a047be85247755cdbe0a 

- rm -rf /usr /lib/nvidia-current/xorg/xorg
+ rm -rf /usr/lib/nvidia-current/xorg/xorg

Поэтому checkinstall как-то проще и париться не надо :-)

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 5)
Ответ на: комментарий от ZenitharChampion

На Хабре наверное не знают про команду

Знают, но хранить исходники ради удаления не айс таки)

Не собирается по твоей инструкции (последняя команда):

g++  -pipe -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DNDEBUG -D_REENTRANT -DENV_UNIX -D_7ZIP_LARGE_PAGES -fPIC -DRegisterArc=DllRegisterArc -DRegisterCodec=DllRegisterCodec -DEXTERNAL_CODECS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_REENTRANT -DENV_UNIX -DBREAK_HANDLER -DUNICODE -D_UNICODE -DUNIX_USE_WIN_FILE  -DENV_HAVE_GCCVISIBILITYPATCH -fvisibility=hidden -fvisibility-inlines-hidden -fPIC -shared -o ../../../../bin/7z.so -Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now 7zBuf2.o 7zCrc.o 7zCrcOpt.o  7zStream.o Aes.o Alloc.o Bcj2.o Bcj2Enc.o Blake2s.o Bra.o Bra86.o BraIA64.o BwtSort.o CpuArch.o Delta.o HuffEnc.o LzFind.o LzFindMt.o Lzma2Dec.o Lzma2Enc.o LzmaDec.o LzmaEnc.o MtCoder.o Ppmd7.o Ppmd7Dec.o Ppmd7Enc.o Ppmd8.o Ppmd8Dec.o Ppmd8Enc.o Sha1.o Sha256.o Sort.o Threads.o Xz.o XzCrc64.o XzCrc64Opt.o XzDec.o XzEnc.o XzIn.o 7zCompressionMode.o 7zDecode.o 7zEncode.o 7zExtract.o 7zFolderInStream.o 7zHandler.o 7zHandlerOut.o 7zHeader.o 7zIn.o 7zOut.o 7zProperties.o 7zRegister.o 7zSpecStream.o 7zUpdate.o ApmHandler.o ArHandler.o ArchiveExports.o ArjHandler.o Bz2Handler.o CabBlockInStream.o CabHandler.o CabHeader.o CabIn.o CabRegister.o ChmHandler.o ChmIn.o ComHandler.o CoderMixer2.o DummyOutStream.o FindSignature.o HandlerOut.o InStreamWithCRC.o ItemNameUtils.o MultiStream.o OutStreamWithCRC.o OutStreamWithSha1.o ParseProperties.o CpioHandler.o CramfsHandler.o DeflateProps.o DllExports2.o DmgHandler.o ElfHandler.o ExtHandler.o FatHandler.o FlvHandler.o GzHandler.o GptHandler.o HandlerCont.o HfsHandler.o IhexHandler.o IsoHandler.o IsoHeader.o IsoIn.o IsoRegister.o LzhHandler.o LzmaHandler.o MachoHandler.o MbrHandler.o MslzHandler.o MubHandler.o NsisDecode.o NsisHandler.o NsisIn.o NsisRegister.o NtfsHandler.o PeHandler.o PpmdHandler.o QcowHandler.o RarHandler.o Rar5Handler.o RpmHandler.o SplitHandler.o SquashfsHandler.o SwfHandler.o TarHandler.o TarHandlerOut.o TarHeader.o TarIn.o TarOut.o TarRegister.o TarUpdate.o UdfHandler.o UdfIn.o UefiHandler.o VdiHandler.o VhdHandler.o VmdkHandler.o WimHandler.o WimHandlerOut.o WimIn.o WimRegister.o XarHandler.o XzHandler.o ZHandler.o ZipAddCommon.o ZipHandler.o ZipHandlerOut.o ZipIn.o ZipItem.o ZipOut.o ZipRegister.o ZipUpdate.o CWrappers.o CreateCoder.o FilterCoder.o InBuffer.o InOutTempBuffer.o LimitedStreams.o MemBlocks.o MethodId.o MethodProps.o OffsetStream.o OutBuffer.o OutMemStream.o ProgressMt.o ProgressUtils.o PropId.o StreamBinder.o StreamObjects.o StreamUtils.o UniqBlocks.o VirtThread.o BZip2Crc.o BZip2Decoder.o BZip2Encoder.o BZip2Register.o Bcj2Coder.o Bcj2Register.o BcjCoder.o BcjRegister.o BitlDecoder.o BranchMisc.o BranchRegister.o ByteSwap.o CodecExports.o CopyCoder.o CopyRegister.o Deflate64Register.o DeflateDecoder.o DeflateEncoder.o DeflateRegister.o DeltaFilter.o ImplodeDecoder.o ImplodeHuffmanDecoder.o LzOutWindow.o LzhDecoder.o Lzma2Decoder.o Lzma2Encoder.o Lzma2Register.o LzmaDecoder.o LzmaEncoder.o LzmaRegister.o LzmsDecoder.o LzxDecoder.o PpmdDecoder.o PpmdEncoder.o PpmdRegister.o PpmdZip.o QuantumDecoder.o ShrinkDecoder.o ZDecoder.o XpressDecoder.o ZlibDecoder.o ZlibEncoder.o 7zAes.o 7zAesRegister.o HmacSha1.o HmacSha256.o MyAes.o MyAesReg.o Pbkdf2HmacSha1.o RandGen.o Rar20Crypto.o Rar5Aes.o RarAes.o WzAes.o ZipCrypto.o ZipStrong.o CRC.o CrcReg.o DynLimBuf.o IntToString.o MyMap.o MyString.o MyVector.o MyWindows.o MyXml.o NewHandler.o Sha1Reg.o Sha256Reg.o StringConvert.o StringToInt.o UTFConvert.o Wildcard.o XzCrc64Reg.o FileDir.o FileFind.o FileIO.o FileName.o PropVariant.o PropVariantUtils.o Synchronization.o System.o TimeUtils.o wine_date_and_time.o   -lpthread -ldl
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
../../../../makefile.glb:26: ошибка выполнения рецепта для цели «../../../../bin/7z.so»
make[3]: *** [../../../../bin/7z.so] Ошибка 1
make[3]: выход из каталога «/home/smopro/build/p7zip-16.02+dfsg/CPP/7zip/Bundles/Format7zFree»
makefile:43: ошибка выполнения рецепта для цели «common7z»
make[2]: *** [common7z] Ошибка 2
make[2]: выход из каталога «/home/smopro/build/p7zip-16.02+dfsg»
dh_auto_build: make -j1 CC=gcc CXX=g++ OPTFLAGS= all3 returned exit code 2
debian/rules:31: ошибка выполнения рецепта для цели «debian/build-stamp»
make[1]: *** [debian/build-stamp] Ошибка 2
make[1]: выход из каталога «/home/smopro/build/p7zip-16.02+dfsg»
debian/rules:19: ошибка выполнения рецепта для цели «binary»
make: *** [binary] Ошибка 2
Dark_Snow
() автор топика
Ответ на: комментарий от ZenitharChampion

В твоем варианте выдает:

g++: error: DFLAGS: Нет такого файла или каталога
../../../../makefile.glb:26: ошибка выполнения рецепта для цели «../../../../bin/7za»
make[3]: *** [../../../../bin/7za] Ошибка 1
make[3]: выход из каталога «/home/smopro/build/p7zip-16.02+dfsg/CPP/7zip/Bundles/Alone»
makefile:17: ошибка выполнения рецепта для цели «7za»
make[2]: *** [7za] Ошибка 2
make[2]: выход из каталога «/home/smopro/build/p7zip-16.02+dfsg»
dh_auto_build: make -j1 CC=gcc CXX=g++ LDFLAGS=DFLAGS -lm OPTFLAGS= all3 returned exit code 2
debian/rules:31: ошибка выполнения рецепта для цели «debian/build-stamp»
make[1]: *** [debian/build-stamp] Ошибка 2
make[1]: выход из каталога «/home/smopro/build/p7zip-16.02+dfsg»
debian/rules:19: ошибка выполнения рецепта для цели «binary»
make: *** [binary] Ошибка 2

Если поиграться и убрать $ или поставить пробел между $ и L, то выдает:

g++: error: LDFLAGS: Нет такого файла или каталога
../../../../makefile.glb:26: ошибка выполнения рецепта для цели «../../../../bin/7za»
make[3]: *** [../../../../bin/7za] Ошибка 1
make[3]: выход из каталога «/home/smopro/build/p7zip-16.02+dfsg/CPP/7zip/Bundles/Alone»
makefile:17: ошибка выполнения рецепта для цели «7za»
make[2]: *** [7za] Ошибка 2
make[2]: выход из каталога «/home/smopro/build/p7zip-16.02+dfsg»
dh_auto_build: make -j1 CC=gcc CXX=g++ LDFLAGS=LDFLAGS -lm OPTFLAGS= all3 returned exit code 2
debian/rules:31: ошибка выполнения рецепта для цели «debian/build-stamp»
make[1]: *** [debian/build-stamp] Ошибка 2
make[1]: выход из каталога «/home/smopro/build/p7zip-16.02+dfsg»
debian/rules:19: ошибка выполнения рецепта для цели «binary»
make: *** [binary] Ошибка 2

Вообще, в чем смысл манипуляций? Может gcc\g++ обновить? Опять же, у меня в репах старье...

Dark_Snow
() автор топика

Для ubuntu xenial (минт ведь на нем основан?) есть ppa (пользовательский репозиторий) с p7zip версии 16.02, называется ppa:eugenesan/ppa. Как добавить - ищи в поисковике.

anonymous
()
Ответ на: комментарий от anonymous

15.14.1-1 )) Насчет поисков - я не хомячек, с поисковиками дружу)

Dark_Snow
() автор топика
Ответ на: комментарий от ZenitharChampion

Все, разобрался, просто в начале объявил

 LDFLAGS :=-lm 
:
ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
  CC  := $(DEB_HOST_GNU_TYPE)-gcc
  CXX := $(DEB_HOST_GNU_TYPE)-g++
  LDFLAGS :=-lm
else
  CC  := gcc
  CXX := g++
  LDFLAGS :=-lm
endif

и вместо

 LDFLAGS="$LDFLAGS -lm" 
вставил
 LDFLAGS=$(LDFLAGS) 

Dark_Snow
() автор топика
Ответ на: комментарий от Dark_Snow

Вот что я добавил в p7zip.spec (аналог debian/rules в CentOS/openSUSE). Попробуй сделать по аналогии.

Да, вместо:

mkdir %{buildroot}%{_datadir}/kde4
mkdir %{buildroot}%{_datadir}/kde4/services
mkdir %{buildroot}%{_datadir}/kde4/services/ServiceMenus

Надо:

mkdir -p %{buildroot}%{_datadir}/kde4/services/ServiceMenus
ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 2)
Ответ на: комментарий от ZenitharChampion

Честно? Ничего не понял по ссылке))) Для начала патчи эти где взять и о чем они, второе - я не столько контекстное меню в ФМ имею в виду, а именно отдельная софтина.

Dark_Snow
() автор топика
Ответ на: комментарий от Dark_Snow

Большинство людей - тупорылые диблоиды. Как и ты, если не понимаешь, что за «места» на дв и каким образом они получаются. И такое мусороминт и кто его ставит. Возможно, тут научишься, но вряд ли.

anonymous
()
Ответ на: комментарий от anonymous

Ну если ты большинство, то комплексы свои на других не распространяй, ладно?

Dark_Snow
() автор топика
Ответ на: комментарий от ZenitharChampion

Проще было all5 набрать) Сейчас покурил таки makefile.common, потихоньку разбираюсь со всем «этим»))) Непривычно кучу мейков видеть, плюс с самим кодингом у меня туго - максимум на автоите и питоне под симбиан писал простецкое) Ты кстати так и не сказал, откуда LDFLAGS -lm взялось то, а то каждый раз по пустякам бегать нехорошо...

Dark_Snow
() автор топика
Ответ на: комментарий от Dark_Snow

> Ты кстати так и не сказал, откуда LDFLAGS -lm взялось то, а то каждый раз по пустякам бегать нехорошо...

Я ошибку погуглил, в одном из результатов поиска было «вызов „main“ - это из библиотеки libm.so. Добавьте -lm к флагам линкера».

Дело в том, что я пользуюсь оч. старым дистрибутивом Linux, и никаких PPA-репозиториев с новым софтом под него нет. Вот и приходится компилировать самому. Уже освоился :-) Меня пренебрежительно называют «некрофилом», а я называю это «ретро».

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от Dark_Snow

> как теперь интегрировать бы в немо 7zg и 7zfm

Тут я немного не понял

> да русский прикрутить к фм...

Я не знаю, есть ли русские локализации для этой программы. Не интересовался просто.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Ретрофил - уважаю, освоюсь и потихоньку планирую на lfs свалить, самое то, чего в винде не хватало: собрать\дособрать только то что действительно нужно, без лишнего.

Dark_Snow
() автор топика
Ответ на: комментарий от Dark_Snow

Не имел с ним дела. Скорее всего, контекстное меню добыть невозможно. В директории p7zip_16.02/GUI только KDE3 и KDE4. И, внезапно, Lang. Наверное это локализация для 7zFM.

Поищи, может README есть. Upd: ага, есть. В директории kde4:

5) installing the context menu for gnome   (nautilus)
-----------------------------------------------------
  don't know how to add a context menu in nautilus :(

Они не знают как. Но это наверняка возможно, например плеер QMMP прекрасно себя добавляет в контекстное меню.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

Про локализацию не вопрос, про ланг знаю, да и инглиш не проблема - я про кракозябры вместо русского.

Dark_Snow
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.