Титла: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: fury_omen в May 13, 2010, 20:29 Тъка, ето го и първият ми пост.... И тъй като съм начинаещ той ще е мета тъп. Интересномие след като всички дестрибуции имат за ядро линукс защо имa отделни пакети за различните дистригуции. Защо примерно програма за дебиан не работи на слак, нали и двете са линукс. Които и тъпо да ви се вижда надявам се да не ми се подигравате .... а някои да разсее мъглата
редакция от neter: Кръщавай темите си подобаващо и според съдържанието! Титла: Re: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: Ivshti в May 13, 2010, 21:09 Между пакетите има 3 основни разлики - формата на пакета, структурата на директориите в пакета, и с кои споделени библиотеки е свързан.
Различните разработчици на дистрибуции взимат различни решения относно това кой пакетен мениджър да ползват, това сменя пакетния формат. Според това какви са версиите на пакетите, на които дадения пакет е зависим, тази програма се свързва с дадени споделени библиотеки, които може в една дистрибуция да са една версия, в друга дистрибуция - друга версия. И накрая, различните дистрибуции могат малко да се различават в това къде се инсталират различните файлове. Титла: Re: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: fury_omen в May 13, 2010, 21:15 В такъв случай, ако аз си компилирам всичко на моя комп от чистия му сорс код това означава ли, че ще работи ?
Титла: Re: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: Acho в May 13, 2010, 21:34 Означава.
Титла: Re: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: tyuio в May 13, 2010, 22:35 Понеже идваш от света на уин най вероятно да питам и кажа нещо:
Когато инсталираш някакво ехе с некст некст. По подразбиране си е зададено къде и какво да инсталира на определено място което е най вероятно в собствена папка в програм файлс в С. Обаче ти самия може да зададеш и друго място по избор което няма да попречи на правилното функциониране на програмата ако искаш даже на D може да я сложиш. При компилация ако всички нужни програми и библиотеки са удовлетворени и са на нужното място няма никаква причина да не работи. Ако е направено да работи за определено ядро на линукс е малка вероятността някой негови файлове да са на коренни различно място от обичайното в друго дистро. Титла: Re: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: romeo_ninov в May 13, 2010, 22:59 Понеже идваш от света на уин най вероятно да питам и кажа нещо:Това не е съвсем вярно, защото програмите на Windows или разчитат на системни библиотеки, които няма как да не присъстват и/или носят със себе си в инсталационния пакет това, от което имат нужда. А за Линукс има една много полезна програма ldd, която дава списък с библиотеките от които има нужда както и тяхното наличие и помага да се спретнеш при нужда няколко софтлинка Титла: Re: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: gat3way в May 13, 2010, 23:50 Това понякога е много лоша идея :)
Титла: Re: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: romeo_ninov в May 13, 2010, 23:55 Това понякога е много лоша идея :)Да, но понякога спасява задните части при нестандартен софтуер (който не е прерогатив на Линукса) Титла: Re: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: gat3way в May 13, 2010, 23:58 В повечето случаи спасява :)
Титла: Re: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: fury_omen в May 14, 2010, 00:10 Пследно лоша ли е идеята или не?! Аз успях да разбера какво ми казва tyuio..... И искам да попитам : Тоест при лин. разчитам на савкупност от пакети, код на моята система които предоставят определи фукнции и когато славя ново парче код то използва вече наличните фукцкии (предоставени от исталираните пакети) за да функционира, т.е всичко прилича на пирамида. Ох ... тогава се появяват въпросите:
- Ако някои пакет липсва, а функциите които има се използвани в дадения сорс на дадената програма, то аз трябва да го намеря, че да компилирам успешно, нали? - И възможно ли е при компилация по някъкъв начин да видя дали липсва нещо и да си го набавя, но това да става автоматично? И моля "магиосниците", темата тук е за новаци, не спорете кое е по-добро или лощо защото аз и двете не ги знам, ако ви се спори моля отворете си ваща тема, за вашето ниво ! Титла: Re: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: Ivshti в May 14, 2010, 00:45 Правилно си разбрал. И да, трябва да намериш библиотеката и да я компилираш. Като започнеш да компилираш, ще ти даде грешка ако нещо липсва.
Само дето не ти се налага да компилираш - всичко може да се инсталира с пакетния мениджър. Титла: Re: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: romeo_ninov в May 14, 2010, 08:00 Правилно си разбрал. И да, трябва да намериш библиотеката и да я компилираш. Като започнеш да компилираш, ще ти даде грешка ако нещо липсва.Правилната формулировка е "ще получиш индикации че нещо не е наред/липсва" А всеки нормален мениджър на пакети поддържа зависимости. При опит да инсталираш софтуер, който за да работи има нужда от функционалност, която не е налична, информира за този факт. От тук нататък в зависимост от мениджъра може да се наложи сам да си изтеглиш/инсталираш нужните пакети или той сам да го направи Титла: Re: Не/съвместимост на пакетите при различните дистрибуции Публикувано от: gat3way в May 14, 2010, 10:14 О, не е само до пакетния мениджър и версиите на библиотеките. Снощи установих една педерастия на дебиан. Примерно сума ти пакети зависят от 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, убунтувския пакет би трябвало съвсем спокойно да се инсталира на дебиан. И ще се инсталира успешно де, само дето на дебиан няма да работи. Та такива работи. Бас държа че има още сума ти подобни казуси, за които просто не знам, защото не съм навътре в нещата. Пакетният мениджър се оправя, всичко минава ОК, програмата се инсталира, дори може и да работи до един момент в който се настъпва някаква такава мотика и програмата гърми без да имаш никаква идея защо. В такива случаи се замислям дали роковците дето компилират всичко, не им е по-лесно, поне от време на време :) |