
У меня есть программа zlib, которую мне нужно обновить. Поскольку я никогда ее раньше не скачивал, я подозреваю, что она идет с Ubuntu.
Обычно я бы просто скачал и скомпилировал его, но другой инструмент (vcftools) собирается его использовать, поэтому я не могу просто установить его локально. Я подозреваю, что мне нужно либо
Установите новую версию zlib где-нибудь и скажите системе искать zlib в папке, куда я его установил. Если zlib обратно совместим, то это должно быть нормально, я надеюсь.
Обновите текущую версию (но sudo apt-get install говорит мне, что у меня самая последняя версия)
Как это сделать? Спасибо.
решение1
Мне кажется, вы немного путаете. zlib
это просто еще один локально установленный пакет на вашем Ubuntu box. Я бы сначала посмотрел, есть ли более новая версия zlib
в одном из репозиториев Ubuntu/Debian, содержащих все программное обеспечение, которое вы можете установить (предварительно собранное) для Ubuntu/Debian и других ОС, которые происходят от любого из этих 2 дистрибутивов.
$ apt-get install zlib
Но прежде чем выполнить эту команду, давайте еще раз проверим, что пакет действительно называется zlib
:
$ dpkg -l |grep zlib
ii zlib1g:amd64 1:1.2.7.dfsg-13 amd64 compression library - runtime
Таким образом, похоже, что пакет на самом деле называется zlib1g
. Чтобы обновить его:
$ apt-get install zlib1g
Reading package lists... Done
Building dependency tree
Reading state information... Done
zlib1g is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 15 not upgraded.
Так что я застрял на этой конкретной версии, или более новой версии просто нет.
Другой подход
Вы могли бы довольно легко загрузить последнюю версию zlib
, 1.2.8, и скомпилировать ее, а затем LD_LIBRARY_PATH
временно настроить ваш , чтобы он указывал на ваши скомпилированные версии этих библиотек. Это позволило бы вам попробовать его, не устанавливая его на вашей системе прямо сейчас.
После того, как вы установили LD_LIBRARY_PATH
, вы можете вызвать VCFtools
их, чтобы опробовать.
Следующие шаги
Ваш следующий вариант — найти сторонний репозиторий с новой версией zlib1g или загрузить исходный пакет и собрать свой собственный файл .deb с его помощью. Существует множество руководств по настройке собственной среды сборки пакетов и сборке своего первого файла .deb. Звучит сложнее, чем есть на самом деле.
решение2
Определенный релиз дистрибутива поставляется с определенной версией каждой программы. Вот что такое релиз. (Существуют дистрибутивы «плавающего релиза», в которых вы тратите все свое время на обновление до следующей версии каждой части программного обеспечения. Если у вас есть более важные дела, придерживайтесь выпущенного дистрибутива.)
Theверсия пакета zlib1gв Ubuntu 12.04 (precise) — 1.2.3.4, а версия в Ubuntu 12.10 (quantal) — 1.2.7. Вы можете загрузить исходный пакет (все три файла: .dsc
, .diff.gz
и .orig.tar.gz
или .debian.tar.gz
) с веб-сайта Ubuntu, а затем скомпилировать эту версию как пакет.
sudo apt-get install build-essential fakeroot
sudo apt-get build-dep zlib
dpkg-source zlib_1.2.7.dfsg-13.dsc
cd zlib-1.2.7.dfsg
dpkg-buildpackage -rfakeroot -us -uc -b -nc
sudo apt-get install ../zlib1g-1.2.7.*.deb
Обратите внимание, что установка новых версий библиотеки может потенциально вызвать несовместимость. Я сомневаюсь, что у вас возникнут проблемы с zlib, но это не то, к чему стоит относиться легкомысленно.
В качестве альтернативы установите более новую версию библиотеки где-нибудь в вашем домашнем каталоге и используйте ее только для конкретной программы, которой она нужна. Если вы компилируете и устанавливаете zlib в ~/lib/zlib1.2.8/lib
, вот подходящий скрипт-обертка:
#!/bin/sh
export LD_LIBRARY_PATH=~/lib/zlib1.2.8/lib
exec vcftools "$@"