Я знаю много таких бяк, которые делают плохую вещь и ставят софт на сервер через make install. Особенно это огорчает, если ставят какой-нибудь nginx (пытаешься поставить его потом из пакета — и удаляешь по кусочкам ходишь). Потому что папки с исходниками уже нет, и make unistall сделать нельзя.
В итоге на сервере получается бардак, софт не обновляется, обрастает известными уязвимостями. И в один прекрасный момент от крона вам приходит письмо вида «chown root.root /tmp/sh && chmod +x /tmp/sh: sucessfully done», а через пару часов хостер банит ваш сервер за исходящую ддос атаку.
Данную проблему призвана решить утилита checkinstall.
Поставим её:
И запоминаем навсегда, что вместо make install
мы делаем checkinstall
, а потом ставим получившийся deb-пакетик.
Обычно на это и заканчиваются все мануалы по checkinstall’у. Но инструмент куда умнее, чем кажется на первый взгляд. Во-первых, он умеет собирать RPM-пакеты, deb-пакеты и slackware пакеты (ключи -R/-D/-S, соответственно). По умолчанию ставится ключ, соответствующий вашему пакетному менеджеру. Ебилды не умеет, да =)
Во-вторых у него есть ключ --install
, который сразу установит созданный пакет.
Пакеты могут быть названы вполне аккуратно при помощи ключей --pkgname
и --pkgversion
. Тогда они вообще прекрасно вклинятся в базу dpkg.
Полезной может стать опция --nodoc
(зачем хранить документацию на каждом сервере?)
Если вы собираете библиотеку (или что-либо, содержащее shared-libs) — вам будет полезна опция --addso
(тогда при установке пакет добавит записи в /etc/ld.so.conf).
Нередко будет полезной опция --reset-uids
— ставит chmod 755 на все файлы и chown root:root на все каталоги.
В итоге, вместо make install, стоит делать примерно следующее:
спасибо, полезная штука)
Из исходников ставить софт на сервер? Месье знает толк в извращениях.
Если вы про факт сборки софта — то найдите мне deb-пакет nginx’a, который вызовет у меня доверие, в котором есть модули nginx-headers-more, nginx-chunkin, ну и парочку каких-нибудь ещё.
Если вы про факт установки через make install — то вы невнимательно читали статью.
Какие опции должен поддерживать таргет install в Makefile что бы всё работало?
Я не пользуюсь autoconf, Makefile написан вручную.
У вас не собирается что-то?
Ну как сказать, не собирается =) У меня всё собирается, я автор http://erlyvideo.org/
О, мне как раз недавно про твой продукт таска приезжала хД Последняя версия deb-пакета в Squeeze не ставится, откатываться пришлось.
Вообще checkinstal хитрый, я пока не встречал вживую исходника, который собирается через make, который бы не собрался checkinstall’ом. С cmake были проблемы, но это отдельная история.
Последняя версия — да, не будет ставиться, потому что я собирал erlyvideo вместе с забандленным эрлангом под Ubuntu 12.04, в которой совсем свежая glibc.
Но erlyvideo версии 2 уже закрытая тема. Сейчас уже третья версия и я её хочу пропихнуть в дебиан.
Что же касается checkinstall, то у меня вообще нет таргета install в Makefile =)
Т.е. у меня есть подозрение, что этого: https://github.com/erlyvideo/flussonic/blob/d8cb03c6055b9b97c2014f792f6f54a6009559f3/Makefile#L9 будет недостаточно для того, что бы отработал checkinstall
install: all
mkdir -p $(DESTDIR)
cp -r Emakefile Makefile apps contrib deps priv rebar wwwroot $(DESTDIR)
Должен отработать.
checkinstall —pkgname avrdude —pgkversion 6.0.1
…
make: *** Нет правила для сборки цели ‘install’. Останов
*** Установка неудачная. Отменяется создание пакета.
куда копать?
Что собираете-то? У него точно можно делать make install? make отработал?
Ну дак если make install Делать не рекомендуется, то я и не делал, соответственно, а собирал deb-пакет. Поэтому не знаю, делается ли успешно make install.
Собираю программу для программирования микроконтроллеров avrdude. Нужно не ниже версии 5.2, а в репозиториях только 5.11.
src: http://download.savannah.gnu.org/releases/avrdude/
> Ну дак если make install Делать не рекомендуется,
Просто make. Сначала исходники скомпилировать нужно, а потом уже пакет собирать.
> Нужно не ниже версии 5.2, а в репозиториях только 5.11.
Версия 5.11 выше 5.2 на примерно 9 версий ;)
Копирую из статьи команды, а в консоле какие-то дефисы неправильные, пришлось руками набрать, что бы запустить chekinstall с параметрами.
checkinstall конечно же, опечатка.
Поформатировал статью правильно, спасибо.
>Вообще checkinstal хитрый, я пока не встречал вживую исходника, который собирается через make, который бы не собрался checkinstall’ом. С cmake были проблемы, но это отдельная история.
vsftpd 3.0.3 у меня сегодня не собрался на debian7, поругавшись что маны некуда положить.
невозможно найти пакет checkinstall (debian 10)
Он теперь в backports почему-то только есть https://packages.debian.org/search?suite=buster-backports&searchon=names&keywords=checkinstall