LINUX.ORG.RU

Ещё раз о сборке программ (с примерами)

 , , ,


0

0

Внимательно изучив этот материал , а также почитав форум по этой тематике, возникли дополнительные вопросы.

Про установку

Что происходит после ввода команды "./configure"? Происходит запуск скрипта, который собирает программу из исходного кода. В процессе сборки появляются строки с окончаниями «yes», или «no». Нужно ли на эти строки обращать внимание, если да, то что конкретно стоит проверять перед вводом следующей команды «make»?

Про обновление на примерах

На примере Exaile. Когда-то давно в официальных репозиториях для Ubuntu 10.04 была доступна версия 3.2.x для установки. С тех пор в репозитории дистрибутив Exaile больше не обновляли, а разработчики устранили немало багов в последней версии 3.3.1. Отсюда возникает вопрос: как правильно обновлять программы в таких случаях? Нужно ли удалять сначала старую версию, перед установкой новой из исходного кода?

Что будет в том случае, если старую версию оставить в ОС, и установить новую версию из исходного кода применив команды: "./configure, make, make install"? Не будет ли в ОС «каши» после таких действий?

На примере Samba. Появилась необходимость обновить Samba с версии 3.6.3 на версию 3.6.12 из исходного кода. Снова аналогичный вопрос нужно ли удалить сначала предыдущую версию? После распаковки samba-3.6.12.tar.gz и ввода команды "./configure" не удаётся запустить «make» (из-за ошибки, что команда не найдена): на что обратить внимание?

первым делом читаем README и INSTALL в исходниках, там то и пишут типовой вариант для компиляции и описание параметров ./configure

./configure --help тоже очень надо смотреть, там все доступные параметры расписаны, даже те что не указаны в документации.

конкретно для samba рекомендую почитать описания, там ./configure в другом каталоге надо делать....

make install и куда будут положены файлы зависит от того какие параметры задали в ./configure

после выполнения make install конечно будет каша, особенно если с параметрами сделали неправильными. Хороший выход - делать пакет для системы и ставить штатными средствами системы, чтобы потом удалить если не взлетит.

irton ★★★★★
()

Что происходит после ввода команды «./configure»? Происходит запуск скрипта, который собирает программу из необходимую информацию для последующей сборки исходного кода.

obvius fix

В процессе сборки появляются строки с окончаниями «yes», или «no». Нужно ли на эти строки обращать внимание, если да, то что конкретно стоит проверять перед вводом следующей команды «make»?

Стоки с окончаниями «yes», или «no» говорят о состоянии поддержки той или иной особенности. Как правило либо включается через параметры ./configure либо удовлетворяются необходимые недостающие зависимости а после включается либо автоматом либо через параметры ./configure

Отсюда возникает вопрос: как правильно обновлять программы в таких случаях?

В убунте (не в слаке) для начала прочитать как правильно собирают программы в deb-ы. Обновлять средствами пакетного менеджера.

Нужно ли удалять сначала старую версию, перед установкой новой из исходного кода?

Как правило пакетный менеджер удаляет старую версию в процессе обновления. По крайней мере это его забота.

Что будет в том случае, если старую версию оставить в ОС, и установить новую версию из исходного кода применив команды: «./configure, make, make install»? Не будет ли в ОС «каши» после таких действий?

Из убунты получится слакварь. И это очень плохо для любого пакетного менеджера поскольку софт был установлен миную его. Иными слова помойка.

Появилась необходимость обновить Samba с версии 3.6.3 на версию 3.6.12 из исходного кода.

Посмотри как делали deb на 3.6.3. Далее смотри отличия в 3.6.12. Исправляй на новую версию собирай deb обновляй пакетным менеджером.

Снова аналогичный вопрос нужно ли удалить сначала предыдущую версию?

Снова аналогичный ответ это не твоя забота. Это проблема пакетного менеджера. Если у тебя слака и ты ставил руками то да это твоя забота равно как и отслеживание зависимостей, обновление и прочее… В ином случае ежели у тебя все же убунта используй пакетный менеджер.

init_6 ★★★★★
()

Спасибо всем за ответы.

Теперь догадываюсь почему у всех Exaile 3.3.1 работает нормально, а у меня часто вылетает. Это связано с тем, что в прошлом я несколько раз «обновлял» Exaile используя только команды: «./configure, make, make install»? То есть по факту получилось, что я «замусорил» Ubuntu 10.04 пакетами разных версий.

Возможно ли вычистить Exaile из системы, если да то как? Для того чтобы потом установить его снова, но уже корректно через пакетный менеджер.

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

Возможно ли вычистить Exaile из системы, если да то как?

Если ты не удалял каталог, в котором собирал exaile, то попробуй зайти в него и сделать make uninstall.

Если его уже нет, то тебе придётся искать и удалять все файлы вручную. К счастью, самосборные проги обычно ставятся отдельно от остальных, в /usr/local. Ищи «лишние» файлы там.

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

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

Короткая памятка для тех, если кто-то тоже наступит на эти же грабли.

Если при запуске ./configure не меняли опцию --prefix=, с большой долей вероятности программа установится в структуру каталога /usr/local или /opt.

Обычно make uninstall срабатывает. Если нет, тогда анализировать Makefile, смотреть, что куда скопировалось и руками удалять. Если исходники удалены, то заново загрузить и проделать ./configure && make, а потом уже make uninstall. Если make install делали с sudo, то и uninstall придётся далать также.

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

Кстати, на make uninstall можно и забить в данном случае, а просто переписать команду запуска в меню на /usr/bin/exaile вместо просто exaile (это при условии если prefix не менялся и программа установлена в /usr/local).

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

Как правило пакетный менеджер удаляет старую версию в процессе обновления. По крайней мере это его забота.

пакетный менеджер не следит за тем, что впихнули в систему из сырцов.

darkenshvein ★★★★★
()

еще при сборке программы можно использовать вместо make install -> checkinstall. программа хорошая - позволяет собирать deb|rpm|tgz пакет. ну и соотвественно устанвливает его через пакетный мененджер.

очень удобно когда исходники с гитхаба того же берутся.

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

пакетный менеджер не следит за тем, что впихнули в систему из сырцов.

А я сказал иначе? А в слаке ТЫ cам себе пакетный менеджер и твоя забота как поступать в этом случае и выше процитированная фраза опять же не теряет своего смысла.

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

Так слака что, совсем винда выходит?

В венде нет пакетных менеджеров как класса в то время как в последних версиях слаки есть и даже зависимости умеет… другое дело что им пользоваться не ъ.

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

искать и удалять все файлы вручную

1 получаем из базы dpkg список файлов всех пакетов
2 find-им все файлы на системном разделе
comm 2 1
profit

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

Посмотри как делали deb на 3.6.3. Далее смотри отличия в 3.6.12. Исправляй на новую версию собирай deb обновляй пакетным менеджером.

Для меня это будет сложно сделать в короткие сроки не имея такого опыта. В принципе версия пакета samba 2:3.6.7-1 меня вполне устроит. На сколько можно доверять этому источнику: https://launchpad.net/~nathan-renniewaldock/+archive/ppa/+build/3726527?

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