У меня раньше был cURL 7.22.0 на сервере Ubuntu 12.04 .. но теперь мне нужно перейти на cURL 7.30.0.
Для компиляции этой версии для Ubuntu я сделал следующее:
wget http://curl.haxx.se/download/curl-7.30.0.tar.gz
tar -xvzf curl-7.30.0.tar.gz
cd curl-7.30.0/
./configure --prefix=/usr
make clean
make
make install
После всего этого я побежал curl --version
ожидая увидеть установленную новую версию. cURL обновился до 7.30.0, как и ожидалось, но libcurl не обновился:
curl 7.30.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 libssh2/1.2.8 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
Однако, если я убегу curl-config --version
я получил libcurl 7.30.0
что правильно.
Кто-нибудь может объяснить, почему есть разница в номерах версий? И как заставить их всех показывать правильный 7.30.0?
Есть ли у кого-нибудь какие-либо учебники / советы / помощь вообще по правильный способ обновления всего, что связано с cURL, до более поздней версии. Эта тема, кажется, невероятно отсутствует в сети, не знаю почему: /
Спасибо
Редактировать - После одного из комментариев вот дополнительная информация:
which curl-config
дает /usr/bin/curl-config
which curl
дает /usr/bin/curl
whereis curl
дает curl: /usr/bin/curl /usr/include/curl /usr/share/man/man1/curl.1.gz /usr/share/man/man1/curl.1
whereis libcurl
дает libcurl: /usr/lib/libcurl.a /usr/lib/libcurl.so /usr/lib/libcurl.la /usr/share/man/man3/libcurl.3
echo $PATH
дает /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Я воспроизвожу небольшой учебник, который написал для zabbix вики в надежде, что это будет полезно.
Это руководство будет сосредоточено в первую очередь на Debian, хотя сборка из исходных кодов в других производных должна быть в основном таким же процессом. Восходящий документация по управлению пакетами, в конечном счете, является наиболее авторитетным источником мудрости.
Пакеты облегчают вашу жизнь во многих аспектах:
Проверьте, какие версии можно найти в официальных репозиториях Debian и Ubuntu
Остальная часть руководства предполагает, что команды выполняются пользователем без полномочий root с доступом sudo.
$ sudo -l
Установите необходимую инфраструктуру для сборки, перекомпиляции и упаковки
$ sudo aptitude install build-essentials devscripts quilt
Это будет тот случай, когда вы хотите активировать / деактивировать некоторую функцию, которая встроена по умолчанию в предварительно скомпилированных двоичных файлах, применить дополнительный патч, выполнить резервное копирование функции, использовать оптимизацию времени компиляции (таргетинг на конкретную платформу, закалка параметры). Шаги будут такими:
Создайте временный каталог для работы
$ mkdir ~/temp && cd ~/temp
Получите исходный пакет
$ apt-get source curl
или альтернативно (если у вас нет deb-src
линия в вашем sources.list
указывая на стабильную версию), вы можете получить файл .dsc из Интернета, для текущей стабильной версии это будет
$ dget http://security.debian.org/debian-security/pool/updates/main/c/curl/curl_7.21.0-2.1+squeeze3.dsc
Любой из двух альтернативных методов будет
Проверьте make-файл debian / rules
$ cd curl*
$ vi debian/rules
Это основной make-файл для процесса упаковки, здесь вы можете просмотреть дополнительные параметры настройки, а также включить / отключить функции, касающиеся всех пакетов, которые будут созданы (сервер, агент, прокси).
Просмотрите патчи с помощью лоскутное одеяло
Предположим, вас интересует один или несколько патчей дистрибутива. не применяется. Чтобы проверить, какие патчи доступны в источниках, используйте
$ quilt series
Проверить наличие уже примененных патчей (на этом этапе список должен быть идентичным)
$ quilt applied
Отменить все исправления
$ quilt pop -a
При желании удалите ненужные
$ quilt delete -r $patch_name
Примените остальные патчи
$ quilt push -a
Установите зависимости пакета, который вы собираетесь перекомпилировать
$ apt-get build-dep curl
При желании пометьте пакет
$ dch -l +local 'Rebuilt from sources'
Проверьте страницу руководства dch, если вам нужно добавить более подробную запись в журнал изменений.
Наконец, перекомпилируйте пакет
$ debuild -us -uc
После процесса за пределами каталога zabbix- * вы найдете только что скомпилированные пакеты deb, готовые к установке.
$ sudo dpkg -i $deb_package
Этот процесс известен как резервное копирование
Применяются следующие меры предосторожности
Процесс такой же, как восстановление для стабильного выпуска, за исключением пакета с исходным кодом, который можно получить либо из репозиториев apt, используя такую строку в вашем sources.list (обратите внимание, только одна из двух альтернатив)
deb-src http://ftp.de.debian.org/debian/ testing main non-free contrib
deb-src http://ftp.de.debian.org/debian/ unstable main non-free contrib
или снова через Интернет
$ dget http://ftp.de.debian.org/debian/pool/main/c/curl/curl_7.30.0-1.dsc
Дополнительной мерой предосторожности будет маркировка пакетов для облегчения идентификации в случае необходимости удаления.
$ dch -l ~local 'Sid backport'
Остальная часть процесса идентична, и результатом будут пакеты с обратным переносом, которые можно установить вместе с остальными.
Если вам нужна более свежая версия, чем та, которую можно найти в Sid, вы все равно можете проверить экспериментальный репозиторий, а мерзавец репозиторий mantainer (ов), чтобы увидеть, есть ли что-то в работе. Помимо этого, вам необходимо использовать репозиторий восходящего проекта, но все же можно извлечь выгоду из структуры пакетов Debian. С этой целью можно сделать снимок последней стабильной или альфа-версии. скачано. Итак, после загрузки пакета с исходным кодом из репозитория дистрибутива (Debian или Ubuntu, в зависимости от ситуации), как описано выше, следующие шаги будут следующими (могут применяться различия в используемых версиях):
$ wget https://github.com/bagder/curl/archive/curl-7_30_0.zip
$ mv master.zip curl-7.30.0.zip
$ cd curl-${stable}
$ uupdate ../curl-7.30.0.zip -v 7.30.0
$ cd ../curl-7.30.0
После этого все исправления в debian / patches должны быть проверены, чтобы определить, полезны ли они по-прежнему или от них нужно отказаться. Используйте квилт, как описано выше. Завершите процесс перекомпиляции тегами
$ dch -l ~local 'Upstream packaging'
восстановление
$ debuild -us -uc
и установка
$ sudo dpkg -i $deb_package
пакет (ы).
Некоторые люди считают систему упаковки Debian чрезмерно сложной, но все же хотят воспользоваться преимуществами использования упакованного программного обеспечения. Существуют некоторые проекты, которые пытаются решить эту ситуацию. Список приведен здесь, но детали использования этих инструментов оставлены в качестве упражнения для читателя.