Что-то я запутался в том, как правильно обращаться с версиями буста под Линуксом.)
Вкратце, ситуация такая: мне нужно было скомпилить большой чужой проект со множеством зависимостей под Линуксом. Там apt-get ставит версию буста 1.55, проект требовал минимум 1.57, я скачал и руками скомпилил 1.61, после этого оказалось, что проект совместим максимум с 1.60, и вот теперь мне не удается установить версию меньше чем 1.61.) Сейчас ситуация такая: в /usr/include лежит установленный apt-get'ом boost 1.55, в /usr/local/include — boost 1.61, установленный при помощи ./b2 install при сборке boost 1.61 из исходников. Если я теперь запускаю сборку boost 1.60 с тем же ./b2 install, то ничего не меняется, в /usr/local/include остается версия 1.61, видимо, более младшая версия не перетирает более старшую.(
Что с этим теперь делать? Удалять руками? Для этого достаточно удалить в include и lib? Не хотелось бы совсем сломать эту виртуалку, я ее использую для сборки многих проектов, перетаскивать все будет долго.)
Здравствуйте, jahr, Вы писали:
J>Если я теперь запускаю сборку boost 1.60 с тем же ./b2 install, то ничего не меняется, в /usr/local/include остается версия 1.61, видимо, более младшая версия не перетирает более старшую.(
что-то ты напутал.
при установке поверх любого другого буста — переписываются хидеры, но либы не удаляются. просто добавятся еще одни полноименные и перепишутся краткоименные.
J>Что с этим теперь делать? Удалять руками? Для этого достаточно удалить в include и lib? Не хотелось бы совсем сломать эту виртуалку, я ее использую для сборки многих проектов, перетаскивать все будет долго.)
руками.
смело сноси /usr/local/include/boost. ну и sudo rm -f /usr/local/lib/libboost_*
и ничего не инсталль из сорцов в /usr
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Спасибо, теперь понятнее, линукс почти не знаю, так что чувствую себя неуверенно, когда приходится что-то править руками.)
X>и ничего не инсталль из сорцов в /usr
А как правильно? Я же их туда не сам положил, собирал буст я у себя в домашней директории а в /usr они попали в результате выполнения target'а install при сборке (sudo ./b2 install)
Здравствуйте, jahr, Вы писали:
J>А как правильно? Я же их туда не сам положил, собирал буст я у себя в домашней директории а в /usr они попали в результате выполнения target'а install при сборке (sudo ./b2 install)
ты говоришь про /usr/local. по умолчанию, все собираемое руками должно использовать /usr/local в качестве префикса. (--prefix=/usr/local)
я же нотед о том, чтоб тебе не захотелось вдруг использовать --prefix=/usr
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
X>по умолчанию, все собираемое руками должно использовать /usr/local в качестве префикса. (--prefix=/usr/local)
Кстати, install в /usr/local не удобно — потом нормально не удалишь ОДИН пакет. Для разруливания этой проблемы использую Stow — устанавливаешь каждый пакет в отдельную папку, после чего запускаешь stow который расставляет симлинки в /usr/local.
EP>Кстати, install в /usr/local не удобно — потом нормально не удалишь ОДИН пакет. Для разруливания этой проблемы использую Stow — устанавливаешь каждый пакет в отдельную папку, после чего запускаешь stow который расставляет симлинки в /usr/local.
не знал что есть такая софтина. сам-то делаю так:
при установке любого пакета(к примеру, буста):
touch $HOME/markers/before-boost-install.marker
./b2 release && sudo ./b2 install --prefix=/usr/local
// удалятся все файлы, которые были созданы после создания маркера:
sudo find /usr/local -type f -newer $HOME/markers/before-boost-install.marker | xargs rm -rf > /dev/null 2>&1
т.е. если после буста устанавливал еще какие-то пакеты — они тоже удалятся. просто, удобно.
ну а Stow, конечно, поудобней будет. спасибо.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, Evgeny.Panasyuk, Вы писали:
X>>по умолчанию, все собираемое руками должно использовать /usr/local в качестве префикса. (--prefix=/usr/local)
EP>Кстати, install в /usr/local не удобно — потом нормально не удалишь ОДИН пакет. Для разруливания этой проблемы использую Stow — устанавливаешь каждый пакет в отдельную папку, после чего запускаешь stow который расставляет симлинки в /usr/local.
Здравствуйте, andrey.desman, Вы писали:
AD>Или просто устанавливаешь через checkinstall.
Я так понимаю это менее универсально — насколько я вижу нет поддержки Gentoo, BSD, OS X.
За наводку спасибо. Но название знакомое, возможно я даже пробовал, но не помню почему не прижилось (может конфликты с аналогичными пакетами из основного repo?), надо будет ещё раз попробовать на CentOS.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, andrey.desman, Вы писали:
AD>>Или просто устанавливаешь через checkinstall.
EP>Я так понимаю это менее универсально — насколько я вижу нет поддержки Gentoo, BSD, OS X.
потому что нафиг не нужна поддержка Gentoo, вот и нету... в Gentoo и без этой тулзы никаких сложностей с созданием "своих" "пакетов"...
а "менее универсально" оно в силу того, что `./configure && make && make install DESTDIR='...'` + оборачивание установленного в соответствущий формат это далеко не полноценный пакет (т.е. самый тупой вариант пакета) RPM или DEB... "настоящий мальчег" может уметь чуть больше, чем просто распаковать архив в файловую систему... но да, "сканает" для тех кому надо побыстрой сляпать что-то похожее на родной пакет.
EP>За наводку спасибо. Но название знакомое, возможно я даже пробовал, но не помню почему не прижилось (может конфликты с аналогичными пакетами из основного repo?), надо будет ещё раз попробовать на CentOS.
Здравствуйте, zaufi, Вы писали:
AD>>>Или просто устанавливаешь через checkinstall. EP>>Я так понимаю это менее универсально — насколько я вижу нет поддержки Gentoo, BSD, OS X. Z>потому что нафиг не нужна поддержка Gentoo, вот и нету... в Gentoo и без этой тулзы никаких сложностей с созданием "своих" "пакетов"...
Полноценные пакеты требуют больше усилий — зависимости, USE-флаги, положить ebuild в локальный оверлей и т.п.
Z>а "менее универсально" оно в силу того, что `./configure && make && make install DESTDIR='...'` + оборачивание установленного в соответствущий формат это далеко не полноценный пакет (т.е. самый тупой вариант пакета) RPM или DEB... "настоящий мальчег" может уметь чуть больше, чем просто распаковать архив в файловую систему... но да, "сканает" для тех кому надо побыстрой сляпать что-то похожее на родной пакет.
Я имел в виду что "менее универсально" чем Stow, а не чем "родной настоящий" пакет.