web-dev-qa-db-fra.com

Quelle est la différence entre libcurl3 et libcurl4

J'étais en train de configurer un environnement de développement Ubuntu 14.04 et je suis allé installer libcurl, mais j'ai remarqué qu'il existe deux versions différentes dans mes caches d'aptitude. Quelles sont les principales différences entre les versions et celles recommandées pour les projets Django?

J'imagine que libcurl4 est plus récent et peut-être meilleur, mais je crains qu'il ne casse la compatibilité avec d'autres produits, agisse étrangement avec des feutres à l'huile de serpent ou me cause des maux de tête à l'avenir.

Existe-t-il des problèmes importants dont je devrais être au courant avec libcurl4? Merci.

11
macguru2000

Si vous regardez de près, vous verrez que seuls les packages -dbg, -dev et -doc contiennent une version 4 dans leur nom, tandis que les packages contenant la bibliothèque libcurl compilée sont: toujours à la version 3.

Pour une discussion sur Debian à ce sujet, voyez ce lien: https://lists.debian.org/debian-release/2007/04/msg00257.html

Si je comprends bien, il y a eu un changement dans l'API, mais pas dans l'ABI. Les packages binaires ont donc été laissés à la version 3, alors que les fichiers de développement nécessitaient un bump de version.

Cela signifie également que, par exemple, libcurl4-openssl-dev est le package de développement correspondant à libcurl3 malgré la version différente figurant dans le nom du package. Vous pouvez voir que si vous regardez libcurl3-dev (qui est un paquet virtuel et pointe vers libcurl4-openssl-dev:

No current or candidate version found for libcurl3-dev
Package: libcurl3-dev
State: not a real package
Provided by: libcurl4-openssl-dev (7.47.0-1ubuntu2), 
    libcurl4-openssl-dev (7.47.0-1ubuntu2.2)

L'extrait ci-dessus a été pris sur Ubuntu 16.04, mais il ressemblera probablement à 14.04.

8
lanoxx

Vous pouvez lire vous-même le journal des modifications des paquetages correspondants via:

for i in $(dpkg -l libcurl\* | grep libcurl  | awk '{print $2}'); do
  apt-get changelog $i >$i.changelog
done

Ensuite, lisez les fichiers *.changelog.

4
waltinator