LINUX.ORG.RU

Установка boost в Debian

 ,


1

1

Apt-get установил мне boost в /usr/include/boost/ и /usr/lib/x86_64-linux-gnu/. Версия буста 1.55. Но последняя на данный момент 1.60. Правильно ли я понимаю, что дебиан официально не обеспечивает возможностью установки 1.60 при помощи apt-get?

Я хочу установить в эти директории последнюю версию буста - релизную и дебажную, оптимизированные по скорости, скомпилированные последней версией gcc. А также задать для системных переменных значения по аналогии с результатом выполнения apt-get. Какие команды мне для этого нужно выполнить?



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

как установить, а не как скачать

никак если нет в репозитарии то значит эту версию никто туда не положил. Если тебя мучает православие и хочешь через АПТ то ищи репозитарий подключай его и устанавливай.

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

Нет. Я имею в виду, какие конкретно команды в распакованной папке выполнить, чтобы в результате получить то, что мне нужно?

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

Никакие команды не выполняй, если не хочешь угробить систему. Не надо в бинарном дистрибутиве делать кашу из вручную собранных и установленных программ. Тем более boost - это довольно важный компонент, на который завязано много прочих программ.

boost, конечно, обеспечивает обратную совместимость, но всё же проблемы с более новой версией возникнут. Кроме всего прочего у тебя сейчас установлена версия 1.55, а ты хочешь поверх установить 1.60, что вообще нехорошо.

Ну и зачем тебе самая распоследняя версия, чем не устраивает версия 1.55? Т.е. ты ясно можешь сказать, что дескать тебе нужен такой-то функционал, которого нет в установленной версии?

Если не можешь, то используй ту, что идёт с дистрибутивом.

Так же ты можешь попробовать настроить смешивание веток Debian, подключив репозиторий от Sid, нестабильной версии Debian, настроить, что из этой ветки ты хочешь поставить boost и установить этот пакет. В Sid сейчас boost версии 1.58: https://packages.debian.org/ru/source/sid/boost-defaults

По experimental ветке сведений нет, но думаю там как раз 1.60.

С другой стороны, если тебе нужны распоследние версии пакетов, то тебе, например на Arch Linux, ну либо Gentoo.


boost 1.60.0-2

Architecture:	x86_64
Repository:	Extra
Split Packages:	boost-libs
Description:	Free peer-reviewed portable C++ source libraries - development headers
Upstream URL:	http://www.boost.org/
License(s):	custom
Maintainers:	Bartłomiej Piotrowski
Package Size:	10.5 MB
Installed Size:	153.8 MB
Last Packager:	Antonio Rojas
Build Date:	2016-01-24 20:53 UTC
Signed By:	Antonio Rojas
Signature Date:	2016-01-24 21:05 UTC
Last Updated:	2016-01-24 21:07 UTC

https://www.archlinux.org/packages/extra/x86_64/boost/

Packages dev-libs boost

Available Versions
Version	amd64	x86	alpha	arm	hppa	ia64	ppc	ppc64	sparc
1.60.0 : 0 T	[M]amd64	[M]x86	[M]alpha	[M]arm	[M]hppa	[M]ia64	[M]ppc	[M]ppc64	[M]sparc
1.59.0 : 0 T	[M]amd64	[M]x86	[M]alpha	[M]arm	[M]hppa	[M]ia64	[M]ppc	[M]ppc64	[M]sparc
1.58.0-r1 : 0 T	~amd64	~x86	~alpha	~arm	~hppa	~ia64	~ppc	~ppc64	~sparc
1.56.0-r1 : 0 T	amd64	x86	alpha	arm	hppa	ia64	ppc	ppc64	sparc
1.55.0-r2 : 0 T	amd64	x86	alpha	arm	hppa	ia64	ppc	ppc64	

https://packages.gentoo.org/packages/dev-libs/boost

Удачи.

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

Ну и зачем тебе самая распоследняя версия, чем не устраивает версия 1.55? Т.е. ты ясно можешь сказать, что дескать тебе нужен такой-то функционал, которого нет в установленной версии?

Я планирую собирать свой сервер под Debian. Сейчас у меня используется 1.60. Поэтому у меня такие вопросы.

1) Я не уверен, что виндовый клиент будет компилиться в VS2015 с 1.55, поэтому совместимы ли boost::serialize 1.55 и 1.60?

2) Собран ли стандартный для текущего дебиана буст с оптимизацией по скорости?

3) Разработчики debian не спешат обновлять boost, потому что он не достаточно протестирован? Или они не видят смысла его обновлять?

4) Наверное необязательно заменять, 1.55 на 1.60. Можно размещать его рядом в include и lib. И я готов не менять системную переменную. Как можно установить дебаг и релиз с оптимизацией по скорости, используя последнюю версию gcc?

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

И ещё причина, по которой я хочу использовать последний boost, есть ли там оптимизации в последнем boost::serialize по скорости относительно 1.55? Для меня очень важно, чтобы сериализация работала быстро.

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

Сейчас у меня используется 1.60. Поэтому у меня такие вопросы.

И что? Пробуй собирать с младшей версией Boost.

Я планирую собирать свой сервер под Debian.

Нафейхуа было использовать Boost-1.60, если в Debian более младшая версия? В начале нужно определиться с особенностями целевой системы.

Я не уверен, что виндовый клиент будет компилиться в VS2015 с 1.55, поэтому совместимы ли boost::serialize 1.55 и 1.60?

Проверь.

Собран ли стандартный для текущего дебиана буст с оптимизацией по скорости?

Изучи src пакет для deb пакета с boost и определи с какими опциями собирается boost, почитай Changelog.

Разработчики debian не спешат обновлять boost, потому что он не достаточно протестирован?

Если тебе нужны свежие версии пакетов, то ты выбрал не тот дистрибутив. Версия boost-1.55 относится к релизу Debian Jessie, т.е. текущему стабильному релизу Debian. Так вот, если бы ты почитал политику Debian относительно выпуска релизов и обновлений к ним, то узнал бы, что версии программ в пакетах не обновляются, а лишь выпускаются исправления к текущим версиям. Т.е. как был выпущен релиз Debian Jessie 25 апреля 2015 года с фиксированными версиями программ, так эти версии программ и останутся на весь срок поддержки релиза, будут лишь накладываться патчи исходники этих версий для исправления ошибок, сами версии останутся без изменений. Т.е. как была в Debian Jessie версия boost-1.55, так она и останется, будет меняться только ревизия пакета, когда в Boost-1.55 найдут ошибку наложат на исходники Boost-1.55 патч и пересоберут пакет.

Наверное необязательно заменять, 1.55 на 1.60. Можно размещать его рядом в include и lib.

И всё же я советую тебе попробовать собрать твой проект с Boost-1.55.

Как можно установить дебаг и релиз с оптимизацией по скорости, используя последнюю версию gcc?

Почитай документацию по gcc, ну либо документацию по Gentoo. Ну и где ты в Debian нашёл последнюю версию gcc?

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

Меняй дистрибутив, вон ставь Arch Linux, там boost-1.60.

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

kostik87, спасибо за информацию. Я подумаю насчёт 1.55. Но боюсь клиент под VS2015 с ней не скомпилируется. А использовать на сервере и клиенте разные версии сериализации - не уверен, что не возникнет сюрпризов, даже если это будет работать.

Я не понял чем плохо установить дополнительно boost 1.60 и использовать его в моих разработках.

Arch'ем никогда не пользовался. Только Debian и Ubuntu. Поэтому пока не рискну его использовать в качестве серверной операционки.

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

Я не понял чем плохо установить дополнительно boost 1.60 и использовать его в моих разработках.

Плохо, если его поставить поверх старого, в кучу к общим библиотекам по стандартным путям. После замены ссылок на библиотеки его начнут использовать все программы в системе, что чревато последствиями. Могут возникнуть различные проблемы и «стабильность» дистрибутива будет под вопросом.

Если очень хочется, то можно попробовать собрать и установить в отдельную дирректорию /opt/boost-1.60, например, или в home (зависит от потребностей). Ну и, конечно же, собирать софт с указанием явно откуда брать буст, равно как и прописать пути до библиотек при запуске.

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

Не думаю, что сервер на арче - хорошая идея, если, конечно, это не домашний сервер какой-нибудь.. Для десктопа - великолепно подходит.

В Debian вы можете использовать backports, но если вам надо новое что-то - то лучше собрать из исходников. Да, будет тяжело поддерживать это, но тут уж ничего не поделать. Заменять наверное не надо, можно переменными разрулить, я думаю..

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

Я не понял чем плохо установить дополнительно boost 1.60 и использовать его в моих разработках.

За обновлениями безопасности сам следить будешь?

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

Но боюсь клиент под VS2015 с ней не скомпилируется

чо бояться-то? возьми и проверь. делов на пару минут.
я не думаю, что твой «сервер» использует самые последние изменения буста. потому что из последних изменений там слишком глубокая специфика. к тому же мелкософт, у которого вечно отсталый на десять лет компилятор, один фиг большинство оптимизаций в бусте успешно похоронит. так что беспокоиться о скорости работы сериализации на венде вообще нелепо.

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

Какой список команд в итоге мне надо выполнить войдя в распакованную папку буста, чтобы установить дебаг и релиз в выбранные директории с оптимизацией по скорости и ничего не сломать?

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

чо бояться-то? возьми и проверь. делов на пару минут.

У меня сейчас нет boost 1.55 в винде. MSVC14 не было к выходу boost 1.55.

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

Можно руководствоваться этим.

В целом примерно так:

  • mkdir -p /opt/boost-1.60 # создаём папку куда будем устанавливать
  • cd path/to/boost_1_60_0
  • ./bootstrap.sh --help # надо выбрать с какими опциями требуется собрать.
  • ./bootstrap.sh --prefix=/opt/boost-1.60 и далее опции, которые нужны
  • ./b2 install # в /opt от рута надо

После этого сборка программ будет примерно так производиться

c++ -I /opt/boost-1.60/include example.cpp -o example -L/opt/boost-1.60/lib -lboost_regex

Ну и для запуска надо будет прописать переменные среды примерно так

export LD_LIBRARY_PATH=/opt/boost-1.60/lib:${LD_LIBRARY_PATH}

./example

Самое интересное в этом деле - сама сборка: выбор опций, указание где что брать, что собирать. Но в целом, всё по документации, ничего необычного. Что-то можно выкинуть, MPI там, ещё что-нибудь.

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

А использовать на сервере и клиенте разные версии сериализации - не уверен, что не возникнет сюрпризов, даже если это будет работать.

А я думаю, что требовать одинаковых версий на сервере и клиенте - это как-то жестоко. То есть сомнения-то законные, но это решается тестированием. Собери линуксовый сервер с 1.55, линуксовый же клиент с 1.55 и виндовый клиент с 1.6 и погоняй на тестовых примерах. Мне интуиция подсказывает, что с очень большой вероятностью именно из-за разницы версий проблем не будет. А если ещё третья ОС понадобится...

hobbit ★★★★★
()

Правильно ли я понимаю, что дебиан официально не обеспечивает возможностью установки 1.60 при помощи apt-get?

Правильно. В Jessie текущая версия 1.55, в Stretch - 1.58.

Я хочу установить в эти директории последнюю версию буста - релизную и дебажную, оптимизированные по скорости, скомпилированные последней версией gcc. А также задать для системных переменных значения по аналогии с результатом выполнения apt-get. Какие команды мне для этого нужно выполнить?

Правильным будет собрать новый буст в пакет и уже его поставив через менеджер пакетов. Собрать пакет можно на базе существующего.

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

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

Хотелось бы ссылки на эту информацию.

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

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

Я выполняю

$ ./bootstrap.sh --prefix=/opt/boost_1_60_0/ optimization=speed variant=release
$ sudo ./b2 install

и

$ ./bootstrap.sh --prefix=/opt/boost_1_60_0/ optimization=speed variant=debug
$ sudo ./b2 install

Для обоих случаев lib-файлы получаются одинаковыми. Может я не там указываю опции optimization и variant? Тем более, что если их неправильно написать, всё равно компилируется.

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

Я понял, что правильно делать так

$ ./bootstrap.sh --prefix=/opt/boost_1_60_0/
$ sudo ./b2 install optimization=speed variant=debug

Ничего важного в системе не заменится в результате этого?

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

Хотелось бы ссылки на эту информацию.

http://en.cppreference.com/w/cpp/compiler_support
см. не поддерживается и звёздочки (partial).
сейчас они, конечно, индусов подняпрягли и немного догнали цивилизацию. но я не дам ломаного гроша за то, что у них не осталось тараканов в стандартной библиотеке. ну и оптимизация жуткая. достаточно взять какой-нить icc и сравнить. иногда даже gcc из MinGW лучше оптимизирует.

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

Скорее даже вы ищете вот это

./b2 install optimization=speed variant=debug,release --layout=tagged
При этом у библиотек появляются ключи. Получается что-то примерно такое в одном директории
libboost_atomic-mt-d.a
libboost_atomic-mt-d.so
libboost_atomic-mt-d.so.1.60.0
libboost_atomic-mt.so
libboost_atomic-mt.so.1.60.0

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

Скорее даже вы ищете вот это

Спасибо! Да, я так и хотел, но не стал спрашивать.

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

Правильно ли я понимаю что папка include получается одинаковой для debug и release, отличаются только файлы в lib?

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

Да вроде правильно. Там либо заголовочные файлы, либо hpp. Вот что касается hpp файлов, то они скомпилируются в вашей программе с дебаг-симовлами, если будете компилировать с флагами для дебага, насколько я понимаю.

ronkajitsu
()
30 сентября 2016 г.

А как сделать, чтобы файлы именовались так libboost_serialization-vc140-mt-gd-1_62.lib?

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