О, не е само до пакетния мениджър и версиите на библиотеките. Снощи установих една педерастия на дебиан. Примерно сума ти пакети зависят от libc6 > някоя си версия, което не е лошо, защото се очаква по-високите версии да са обратно съвместими с по-ниските, все пак това е libc, основната C библиотека, там не могат да си позволяват да правят каквото си искат, има си стандарти и т.н.
Обаче от един момент нататък, дебианците са решили да спрат да ползват glibc, и минават на eglibc, поради някакви конфликти с разработчиците. Демек от libc6-2.10 нагоре, вече не се ползва GNU C библиотеката, а EGLIBC. И това се представя за пред пакетната система като по-висока версия на libc6.
Всичко това е много хубаво, само дето създава проблеми и снощи брах ядове. EGLIBC се опитва да следва изцяло POSIX стандарта и разни linux-specific функции, които бяха в glibc просто ги няма, защото не са по стандарта.
Такам...и точно това, което пиша ползва една такава linux-specific функция, наречена crypt_r(). Силно държа да я ползвам, понеже стандартната crypt() не може да се използва в многонишкови приложения, не е thread-safe. Значи в libc хедърите тази функция я има. Това става, защото аз имам по-стара версия на libc6-dev, където са хедърите.
Проблем 1: libc6 не зависи от libc6-dev - мога да ъпдейтна библиотеката, но хедърите са старите.
Проблем 2: уж по-нова версия на пакета инсталира съвсем различна библиотека с лекинко различна функционалност.
Същото важи и за man страниците които убедено твърдяха че имам такава функция

Та стигам до положението където функцията е декларирана в хедърите, документирана в man страницата, но липсва в библиотеката и то липсва не за друго, а защото уж същата библиотека е всъщност съвсем различна, нищо че дебианците ми я представят като по-нова версия на същата.
Сега да вземем два случая:
1) Да речем ползвах по-стара версия на libc6 и си бях написал успешно програмата, бях я пакетирал, бях й сложил зависимост от libc6. При ъпдейт на libc6, моята програма спира да работи въпреки че всички зависимости са удовлетворени и всичко изглежда съвсем наред. Спира да работи просто защото дебианците са тъпанари.
2) Програмата ми зависи засега само от libc6. Да предположим, че убунтувците бяха пичове и не бяха тръгнали по акъла на дебианците (което за жалост не е така) и аз си разработвах програмата на убунту, не на дебиан. Понеже и в двете пакетни системи има libc6, убунтувския пакет би трябвало съвсем спокойно да се инсталира на дебиан. И ще се инсталира успешно де, само дето на дебиан няма да работи.
Та такива работи. Бас държа че има още сума ти подобни казуси, за които просто не знам, защото не съм навътре в нещата. Пакетният мениджър се оправя, всичко минава ОК, програмата се инсталира, дори може и да работи до един момент в който се настъпва някаква такава мотика и програмата гърми без да имаш никаква идея защо.
В такива случаи се замислям дали роковците дето компилират всичко, не им е по-лесно, поне от време на време