Автор Тема: Дистрибутиране на софтуер  (Прочетена 2401 пъти)

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
След създаването на един неголям проект - реших да го представя (и) в компилиран вид. Обаче сега съм изправен пред следната дилема:

Има ли програма с която да се създават пакети за различните Linux дистрибуции, която програма да открива пакетите от които зависи даденото приложение и доколко може да ѝ се има доверие?

Ето го и следният пример:
Програма създадена на базата на Qt4, имаща за цел да обслужва (не знам дали е точната дума) начинаещи потребители за едно или няколко неща, като ги улеснява за нещо - с две думи публикуване само на сорс пакет, без прекомпилирани пакети за различните дистрота/пакетни мениджъри - отпада. Обаче съм забелязал че в различните дистрибуции пакетите (някои от тях) си имат различни наименувания и по-конкретно за qt4 библиотеките: qt4-libs, qt4-dev, qt4-development (т.е. в различните дистрибуции по различен начин написани).

И на въпроса: Има ли програма с която да се открият съответните пакети и техните наименувания (без да се налагат 10 преинсталации на по известните дистрибуции)? Съответно тази програма да създава и пакетите (отново без да се налага да имаш съответната дистрибуция). Или с две думи: "нещо" което да обслужва: .deb (Debian / Ubuntu), .rpm (Mandriva / Fedora / OpenSUSE), .txz (Slackware)

Благодаря предварително!
Активен

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Re: Дистрибутиране на софтуер
« Отговор #1 -: Feb 09, 2011, 15:21 »
Не мога да ти разбера много въпроса, но ще се опитам да ти дам някой пояснения :)

Всяка дистрибуция си има build система, която по някакъв начин ( не знам как. Предполагам по makefile-овете ) разбира, кои пакети трябват на даден пакет и тези пакети се записват като зависимости на новият. Не съм чувал да има програма, която да знае, че примерно на Убунту пакета се казва libqt4, а на SuSe - qt4-lib. В общи линии няма и смисъл. Защото, когато инсталираш даден пакет, той е предназначен за дадена дистрибуция и знае как се наричат останалите пакети.

Също така съществуват и помощни програми като KPackageKit, които използват бекенди за абстракция на пакетният мениджър отдолу и предоставят удобен интерфейс за търсене сред пакетите по описание. Така примерно ако ми трябва Qt аз просто пиша "Qt" и системата ми предлага пакета за инсталация, независимо от реалното му име.
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Re: Дистрибутиране на софтуер
« Отговор #2 -: Feb 09, 2011, 15:33 »
Мися че няма такъв софтуер. Сам ще трябва да си намериш кои от кои пакети зависи програмата на дадена дистрибуция.
Лично аз си държа във виртуална машина инсталирани версии на няколкото дистрибуции за които се компилират пакети. Също така това са най-старите версии на дистрибуциите в които има нужните версии на Qt. Така компилираният пакет работи на тази версия и на всички следващи.

За Debian и Ubuntu е лесно, там пакетите са с еднакви имена. Обаче във Fedora и Mandriva имаше разлика при имената на пакетите съдържащи Qt. В Slackware зависимости няма, така че този пакет става лесно. За да направиш самите пакети може да ползваш checkinstall. Не е най-добрият софтуер, но май няма по-лесен начин да направиш deb/rpm.
Активен

michael1960

  • Напреднали
  • *****
  • Публикации: 70
  • Distribution: Slackware 14.1
  • Window Manager: MATE Desktop Environment
    • Профил
    • WWW
Re: Дистрибутиране на софтуер
« Отговор #3 -: Feb 09, 2011, 16:48 »
Начинът е или да компилираш приложението си със статични библиотеки, Qt в това число, тогава ще работи на повечето дистрибуции, или да предоставяш програмата си заедно със библиотеките от които зависи. Това е. Специален софтуер за това няма, въпреки че срещтнах някъде, тези дни за подготвящ се проект за създаване на универсална инсталационна програма, но къде точно прочетох за това не мога да си спомня.

Михаил Петров
град Смолян
Активен

Михаил Петров - град Смолян, България

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Re: Дистрибутиране на софтуер
« Отговор #4 -: Feb 09, 2011, 18:18 »
Специален софтуер за това няма, въпреки че срещтнах някъде, тези дни за подготвящ се проект за създаване на универсална инсталационна програма, но къде точно прочетох за това не мога да си спомня.

Този проект (http://socialdesktop.org/bretzn/) май нещо такова цели ..  ???
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Re: Дистрибутиране на софтуер
« Отговор #5 -: Feb 09, 2011, 18:38 »
Не мога да ти разбера много въпроса, но ще се опитам да ти дам някой пояснения :)

Всяка дистрибуция си има build система, която по някакъв начин ( не знам как. Предполагам по makefile-овете ) разбира, кои пакети трябват на даден пакет и тези пакети се записват като зависимости на новият. Не съм чувал да има програма, която да знае, че примерно на Убунту пакета се казва libqt4, а на SuSe - qt4-lib. В общи линии няма и смисъл. Защото, когато инсталираш даден пакет, той е предназначен за дадена дистрибуция и знае как се наричат останалите пакети.
Не си прав. Във всички дистрибуции разработчикът трябва сам да си опише зависимостите с точните имена на пакетите в конфигурационнен файл в сорс пакета (debian/contro за deb и spec файл за rpm). Debian и Fedora със сигурност нямат такава магическа build система, а предполагам и другите също.
« Последна редакция: Feb 09, 2011, 18:40 от v_badev »
Активен

Желязко Желязков

  • Напреднали
  • *****
  • Публикации: 92
  • Distribution: Slackware,Maemo,Android,MacOSX
  • Window Manager: Kde,Gnome,FluxBox,E17,Lxde
    • Профил
    • WWW
Re: Дистрибутиране на софтуер
« Отговор #6 -: Feb 09, 2011, 22:13 »
Не мога да ти разбера много въпроса, но ще се опитам да ти дам някой пояснения :)

Всяка дистрибуция си има build система, която по някакъв начин ( не знам как. Предполагам по makefile-овете ) разбира, кои пакети трябват на даден пакет и тези пакети се записват като зависимости на новият. Не съм чувал да има програма, която да знае, че примерно на Убунту пакета се казва libqt4, а на SuSe - qt4-lib. В общи линии няма и смисъл. Защото, когато инсталираш даден пакет, той е предназначен за дадена дистрибуция и знае как се наричат останалите пакети.
Не си прав. Във всички дистрибуции разработчикът трябва сам да си опише зависимостите с точните имена на пакетите в конфигурационнен файл в сорс пакета (debian/contro за deb и spec файл за rpm). Debian и Fedora със сигурност нямат такава магическа build система, а предполагам и другите също.

Когато си създаваш пакета за дадена дистрибуция тя си описва зависимостите и ги слага като католог със зависимости към пакета.

http://jeliazkov.org
Активен

Като член на "Интернет общество", аз съм подкрепа на организация, която смята, че Интернет е за всеки. Горещо препоръчваме да се присъедини към "Интернет общество", както и допринасят за изграждането на бъдещето на Интернет. https://portal.isoc.org/EBusiness/NewMemberStepOne.aspx?refid=xd1068226hf

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Re: Дистрибутиране на софтуер
« Отговор #7 -: Feb 10, 2011, 01:56 »
ОК, аз мога и сам да си направя инсталатора, даже ще бъде Windows-like юзър-фрИндли, но мисълта ми беше друга - не толкова практическа, а теоретична.

Ако аз разработвам софтуер, не трябва ли да бъда по-улеснен в неговото компилиране до краен продукт? След като това е една от основните идеи на Linux - създаване на пакети, които зависят от други пакети, то тогава трябва ли да стигам до такива "крайни" решения? Нали това е част от Linux thinks (Linux замисъла)? Ако имаш един пакет, не ти е нужно да инсталираш същото съдържание, с друг пакет/проект/програма.

Ето тук вече се опирам на въпроса: Ако аз тръгна по метода на Windows (голям инсталатор, с неща които може и да ги има инсталирани), тогава докъде точно спира "производството" на пакети? Т.е. едни програми ще имат версии за всички (или някои) дистрибуции, някои от тях дори ще присъстват в пакетните мениджъри, а други - просто няма да ги има. Някакси не я виждам тази идеология (ако мога така да се изкажа) - Windows / Mac мислене в една свободна операционна система, но също и не виждам - 10 преинсталации на дистрибуции - за един проект (да не говорим ако сбъркам някъде и искам да си го оправя [при алфа/бета версиите на проект] - колко преинсталации ще падат).

Ако все пак някой знае нещо подобно - да пише, защото в противен случай - наистина Linux се отклонява от "правия път". Защото ако аз постъпя като Windows developer, ще постъпят така и други изправили се пред тази дилема. И ако един ден Linux набере големи темпове и стане малко по-масова, то тогава ще се загуби смисъла на пакетите, а стане ли това - честит ни втори Windows!  ;D В такъв случай - нека Линус Торнвалдс създаде Linux 3.0, който да си има собствена графична среда, собствени библиотеки които ти идват по подразбиране, пък оттам нататък ние да си се оправяме - неща които май Бил Гейтс отдавна е предвидил че ще бъдат по-добре, както са сега в Windows!

И все пак - има или няма такова животно!  :) Извинявам се ако съм го ударил много на философия - просто в малките часове така се случва :)
Активен

dvasilev

  • Напреднали
  • *****
  • Публикации: 200
  • Distribution: Kubuntu, Debian
  • Window Manager: KDE
    • Профил
    • WWW
Re: Дистрибутиране на софтуер
« Отговор #8 -: Feb 10, 2011, 08:33 »
@LinuxFanUNIX: Малко мисли и от мен, породени от твоите чудения.

1. Нещо, което си пропуснал за света на свободния софтуер, че нещата се движат от общност. За сам човек може би е трудно да прави пакети за всички дистрибуции, но за няколко едва ли е така. Особено, ако любимите им дистрибуции са различни.

2. Обикновено софтуерът, който идва с отделните дистрибуции не е пакетиран от хората, които са го написали, а от тези, които поддържат дистрибуцията. Разбира се, трудно е да стигнеш до това ниво на признание, но ако твоят проект таргетира голяма аудитория, а не някакво локално упражнение, не е невъзможно.

3. Не е нужно да преинсталираш дистрибуция след дистрибуция. Просто си направи по една виртуална машина за всяка дистрибуция с минималните изисквания за компилиране. Честно казано, това не заема и много място.

4. Има хора, които имат за цел да улеснят разработчиците в тази посока. Повече информация тук
Активен

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Re: Дистрибутиране на софтуер
« Отговор #9 -: Feb 10, 2011, 11:12 »
LinuxFanUNIX, ако пишеш свободен софтуер с Qt имаш що-годе лесен път през Bretzn, както ти е написал dvasilev. Може и директно може да ползваш openSUSE Build Service в случай че ползваш друга build система или друг тулкит.

Ако обаче правиш затворен софтуер ще трабва да се оправяш сам. Ще ти трябват куп витруални машини на които да компилираш десет пъти един и същи софтуер и т.н. Най-вероятно ще получавш и писма че пакетите ти не се инсталират коректно на някоя странна дистрибуция, където са решили да си кръстят по различен начин някой пакет от който зависи твоята програма (например Qt библитеките на Fedora и Mandriva са с различни имена). Или да сложат Python 3 по подразиране вместо 2 както е при всички други (като в Arch).

Има вариант и да си намериш що-годе стандартна стара дистрибуция на която да си компилираш софтуера и само да си правиш няколко вида пакети с checkinstall после. Например с едно разширение за firefox съдържащо двоичен код се наложи да компилирам Linux версията на стара веерсия на CentOS за да съм сигурен че работи навсякъде. Оказа се че в Debian nss и nspr библиотеките са с с нестандартно име и съответно so файловете се зареждаха само на Debian и дериватите му.

Винаги може да се откажеш от пакетите и да ползваш някой инсталатор като този на loki_setup, но тогава сигурно ще ти пишат потребители които искат пакети за тяхната си дистрибуция. Получавал съм и такива писма :)

@Желязко Желязков, в кой момент дистрибуцията си описва сама зависимостите? След като ги напишеш в devian/control или преди това? Питам сериозно, нещо такова ще ми облекчи живота следващият път когато пускам нова версия на софтуера ни за Linux.
Активен

dvasilev

  • Напреднали
  • *****
  • Публикации: 200
  • Distribution: Kubuntu, Debian
  • Window Manager: KDE
    • Профил
    • WWW
Re: Дистрибутиране на софтуер
« Отговор #10 -: Feb 10, 2011, 22:12 »
Цитат на: v_badev
@Желязко Желязков, в кой момент дистрибуцията си описва сама зависимостите? След като ги напишеш в devian/control или преди това? Питам сериозно, нещо такова ще ми облекчи живота следващият път когато пускам нова версия на софтуера ни за Linux.
Слагаш
Код:
Depends: ${shlibs:Depends}
и нямаш грижи. По този начин по време на build-ване на пакета се проверяват какви са зависимостите и не е нужно да ги дефинираш експлицитно.
Активен

star_bg

  • Новаци
  • *
  • Публикации: 1
    • Профил
Re: Дистрибутиране на софтуер
« Отговор #11 -: Feb 16, 2011, 13:17 »
3. Не е нужно да преинсталираш дистрибуция след дистрибуция. Просто си направи по една виртуална машина за всяка дистрибуция с минималните изисквания за компилиране. Честно казано, това не заема и много място
Специално се регистрирам заради тази тема. Не че нещо, ама ей това мнение ми се струва (да не кажа ламерско - а по-скоро нелогично), най-малкото защото Linux дистрибуциите използват едно и също ядро (с различни версии) и е по-логично да се прекомпилират пакетните мениджъри като apt/rpm за всички дистрибуции. (поне за едното компилиране на пакети).

А моят съвет към автора - просто си компилирай пакетите за Windows, а за Linux ли - нека си го компилират от сорс код. Пък нека си поразмътят мозъците да направят "уникална" пакетна система, а не всяка разработчиците на вска дистрибуция да се правят на интересни с хилядите си имена на пакети. А за юзери като мен - праскай един Хакинтош на виртуалката, че да компилираш под Mac е ужас, освен ако нямаш IDE.

Сори за спама. Не съм потребител който не знае предимствата на отворения код, но просто за пореден път се оказахте малоумници, но не вие - потребителите на този форум, не вие - които разработвате софтуер за Linux, а вие - които създавате Linux (които може би дори и не подозирате за съществуването на този сайт!  >:( >:( >:()

А ако някой оттук седящите ме накаже за грубо отношение - нека ми покаже в коя част на коментара ми виждате обида към член на сайта, а пък не виждам и една точка от правилата по които се съгласявам при регистрация тук, която да казва - "не наричай създателите на това чудо на света - малоумници"!  [_]3
Активен