LINUX.ORG.RU
ФорумTalks

про исходники и ppa репозиторий.


0

2

наткнулся на такое мнение (ссылка: Господин корректор (комментарий) )

А ppa — это то, что нужно большинству пользователей — ставится в одну команду и сразу готово к использованию. Добавлять бесполезные ссылки, просто чтобы никому не было обидно как-то глупо, не?

интересно, что думает ЛОР на эту тему?

(что думаю я, очевидно и так понятно, язабан ТСа)

★★

Ответ на: комментарий от hobbit

Почему именно исходники, а не архив со скомпилированной программой?
Которым, кстати, является пакет почти всякого дистрибутива, надо только уметь его распаковать и разложить.

moscwich
()
Ответ на: комментарий от moscwich

Не думал, что прям так часто, что это принципиально...

а ты подумай - мне вот захотелось посмотреть → я лезу на сайт разраба за сырцами → а там нет/не работает. Мне что, ждать неделю? Это же не web-страничка, которую можно из кеша гугла достать, это файл, его в кеше нет.

drBatty ★★
() автор топика
Ответ на: комментарий от moscwich

Почему именно исходники, а не архив со скомпилированной программой?

потому-что исходник ты можешь собрать под любую архитектуру, любую ОС, причём любой версии. А вот архив программы либо потянет за собой пол-системы, либо будет работать только на _одной_ какой-то версии. Т.е. не подходит даже для Slackware Current, я уж не говорю о какой-то ubuntu.

Которым, кстати, является пакет почти всякого дистрибутива, надо только уметь его распаковать и разложить.

дело не в пакете, а в том, что сама программа зависит не только от каких-то либ, но и от _конкретной_ версии этих либ. В собранном виде. А в разобранном — не зависит. Ты можешь построить дом из кирпичей любого размера, в т.ч. и нестандартного. Но вот если дом уже построен, то поменять кирпич на такой-же, но на 1см короче - не получится, дырка будет. А на 1см длиннее - не войдёт. Хотя кирпич почти точно такой же.

drBatty ★★
() автор топика
Ответ на: комментарий от drBatty

Т.е. не подходит даже для Slackware Current, я уж не говорю о какой-то ubuntu.

Не понял. В AUR куча пакетов собирается из deb-ов и rpm-ов.
Тот же Google Chrome, например.
И правильно. Меня всегда бесит, когда программы из AUR компилируются.

дело не в пакете, а в том, что сама программа зависит не только от каких-то либ, но и от _конкретной_ версии этих либ. В собранном виде. А в разобранном — не зависит.

А я и не думал... Спасибо.
И все же это наверное только каких-то очень больших/сложных программ касается?

moscwich
()
Ответ на: комментарий от moscwich

Не понял. В AUR куча пакетов собирается из deb-ов и rpm-ов. Тот же Google Chrome, например.

угу. в слаке тоже: http://mirrors.slackware.com/slackware/slackware64-current/extra/google-chrom...

вот только они НЕ собираются. Это проприетарный блоб, и он тупо куда-то копируется из архива. Ещё к нему опционально подтягиваются какие-то дополнительные либы, именно той версии, которые ему нужны, ибо с другими он не умеет.

И правильно. Меня всегда бесит, когда программы из AUR компилируются.

просто таких пакетов _очень_ мало (которые не собираются, а копируется блоб), потому тебе, как юзеру, это и нравится. Если их будет больше 10 - ты взвоешь. А всего пакетов даже в слаке 1274 (это у меня полная слака + левые пакеты, тот же хром. В других дистрах больше в разы, ибо пакеты там более мелкие)

И все же это наверное только каких-то очень больших/сложных программ касается?

к сожалению, это касается даже /bin/false, исходный текст которой состоит из 2х строк. вот

# ldd /bin/false 
	linux-vdso.so.1 (0x00007fffb5fff000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f88bdf2e000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f88be328000)
# ldd /bin/sed
	linux-vdso.so.1 (0x00007fff64dff000)
	libacl.so.1 => /lib64/libacl.so.1 (0x00007ff193f5e000)
	libc.so.6 => /lib64/libc.so.6 (0x00007ff193b9e000)
	libattr.so.1 => /lib64/libattr.so.1 (0x00007ff193999000)
	/lib64/ld-linux-x86-64.so.2 (0x00007ff1941a0000)

проблема блобов ещё и в том, что они требуют не просто либы, а ещё и не той архитектуры:
# ldd unrar
	linux-gate.so.1 (0xffffe000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xf7692000)
	libm.so.6 => /lib/libm.so.6 (0xf7666000)
	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xf7649000)
	libc.so.6 => /lib/libc.so.6 (0xf74c4000)
	/lib/ld-linux.so.2 (0xf77b3000)
потому приходится хранить не только кучу либ, но и ещё для двух архитектур одно и то же. Ну или приходится качать для каждой ОС свой релиз, если найдёшь.

drBatty ★★
() автор топика
Ответ на: комментарий от moscwich

А я и не думал... Спасибо.

да, забыл сказать, пока анонимус не набижал со своими «доказательствами»: на самом деле, при динамической линковке «зазор» есть, и ты как и в моей аналогии, можешь «воткнуть кирпич на сантиметр меньше». И всё будет работать. И даже больше, только надо сколоть ручками лишний см. В большинстве случаев это срабатывает. Где-то в 90% случаев. Вот только проблема в том, что программа зависит от 10..20 либ, и наверняка 1 или 2 не войдут. Например в sed может не слинковаться ACL, у меня вот ACL вообще отключено, и потому я и не замечу. У тебя наверное тоже. Потому IRL в ИСКЛЮЧИТЕЛЬНЫХ случаях так делают, куда деваться?

Ты сам не хуже меня знаешь, к чему это приводит (ага, разные мелкие и непонятные глюки, свойственные не программе, а программе внутри конкретного дистра).

drBatty ★★
() автор топика
Ответ на: комментарий от drBatty

вот только они НЕ собираются

Давай не будем путать компиляцию программы и сборку пакета :)

просто таких пакетов _очень_ мало

Да вроде бы не очень. Не только проприетарные программ, правда какие еще я сейчас не вспомню, но помню, что были :)

linux-vdso.so.1 (0x00007fffb5fff000)
libc.so.6 => /lib64/libc.so.6 (0x00007f88bdf2e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f88be328000)

Разве либы этих версий (или совместимые) есть не у >99,9% ЦА?

moscwich
()
Ответ на: комментарий от moscwich

Давай не будем путать компиляцию программы и сборку пакета :)

дык там и нет никакой «сборки». Сборка в гугле идёт, а ты просто готовый блоб опакечиваешь, как будто сам собрал. Ну и костыли тоже прикручиваешь.

Да вроде бы не очень. Не только проприетарные программ, правда какие еще я сейчас не вспомню, но помню, что были

вряд-ли. скайп, флеш для ФФ, VB несвободная версия, дрова к видяхе… Вроде всё.

Разве либы этих версий (или совместимые) есть не у >99,9% ЦА?

в том-то и дело, что есть. Вот только не совсем те. Говорю же: подходят обычно, но не всегда. Ты их предлагаешь в каждой программе дублировать что-ли? Места на диске хватит, не сомневаюсь, но вот 16Гб памяти может и не хватить.

drBatty ★★
() автор топика
Ответ на: комментарий от drBatty

дык там и нет никакой «сборки». Сборка в гугле идёт, а ты просто готовый блоб опакечиваешь, как будто сам собрал. Ну и костыли тоже прикручиваешь.

Результат работы makepkg относительно PKGBUILD — арчепакет .tar.xz
То есть мы распаковываем rpm и собираем пакет нужного нам формата.

Вот только не совсем те. Говорю же: подходят обычно, но не всегда. Ты их предлагаешь в каждой программе дублировать что-ли?

Но ведь большая часть ПО у нас таки из репов, где все согласованное (по-хорошему).

moscwich
()
Ответ на: комментарий от moscwich

То есть мы распаковываем rpm и собираем пакет нужного нам формата.

блжад! ты просто перепаковываешь блоб из одного архива, в другой. В данном случае из cpio в tar. RPM - тоже простой архив, в котором

  1. блоб(ы) программ
  2. всякая ненужная ерунда типа лицензий
  3. всякая нужная ерунда типа манов
  4. скрипт, который говорит ПМу, что надо сделать после установки(часто - ничего)
  5. зависимости

ПМ начинает с №5, и рекурсивно ставит все зависимости, которых ещё нет

потом распаковывает №1 №2 и №3.

потом выполняет №4.

И это в _любом_ бинарном линуксе так. В слаке - тоже.

Но ведь большая часть ПО у нас таки из репов, где все согласованное (по-хорошему).

если-бы… Иногда нет исходников, и как хром приходится пихать блоб. Иногда нет версии нужной либы. Приходится юзать то, что есть(ибо замена приведёт к поломке какой-то другой программы).

drBatty ★★
() автор топика
Ответ на: комментарий от drBatty

ты просто перепаковываешь блоб из одного архива, в другой

Ну а также выставляются правильные зависимости и прочие атрибуты.
Я не понимаю, почему ты отождествляешь понятие сборки пакета и компиляции программы. Компиляция может входить в сборку (хотя даже правильнее сказать, производится перед сборкой), а может и не входить :)

moscwich
()
Ответ на: комментарий от moscwich

Я не понимаю, почему ты отождествляешь понятие сборки пакета и компиляции программы. Компиляция может входить в сборку (хотя даже правильнее сказать, производится перед сборкой), а может и не входить :)

компиляция не входит в сборку только В ОДНОМ случае - если это какие-то скрипты, на пайтоне или на перловке. А иначе - входит. Хотя не обязательно на твоём локалхосте.

И вот именно при компиляции (а точнее перед ней, в automake), и проверяются зависимости, потом происходит компиляция, а потом собственно сборка (ака линковка). Вот как раз линкер и собирает всё в один(или много) блоб(ов), который статически связывает все статические, и динамически связывает все динамические модули.

Если ты поставишь и запустишь пакет, то статические компоненты (из этого блоба) заработают, а вот динамические - не факт. Если они ТОЧНО такие же, как были при сборке - взлетит. Если другие - неизвестно. Даже одна и та же версия либы может быть как ванильной, так и подправленной твоими умными маинтейнирами (из лучших побуждений конечно, но блоб-то об этом не знает). А если версия другая…

drBatty ★★
() автор топика

Все эти ppa, те кто их держит, не подозревают об архитектурах отличных x86 и x86_64

quowah
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.