LINUX.ORG.RU
ФорумAdmin

Скачивание зависимых исходников

 ,


0

1

Всем привет.

Как сделать локальную копию исходников со всеми зависимостями ?

Например, компилирую firefox из исходников. Туева хуча зависимостей скачивается из кучи разных сайтов. Которые могут «отвалиться», у меня может интернет пропасть. Причин много.

Как мне сделать локальную копию ВСЕХ зависимых исходников ?

Второй вопрос: как-то можно управлять путями - откуда скачивать ?

Допустим, каким-то образом я скачал все эти зависимости и запихнул в одну папку. Например, /my_sources.

При компиляции софта компилятор будет идти по тому пути, что «зашито» в исходниках. Как указать искать исходники в /my_sources ?

Система - NetBSD, менеджер - pkgsrc.

руками всё, единого универсального способа нет

можно взять Gentoo, где это всё делают за тебя

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

а если я захочу держать у себя с десяток программ, наподобии firefox'а (где дофига зависимостей) - все исходники ручками придется перелопачивать ?

и как быть с обновлениями?

Видимо, придется писать свои скрипты ?

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

а если я захочу держать у себя с десяток программ, наподобии firefox'а (где дофига зависимостей) - все исходники ручками придется перелопачивать?

Добро пожаловать в ад мейнтернеров дистрибутивов. Да, они именно этим и занимаются. Для упрощения используют скрипты/программы автоматизации сборки, для каждого семейства дистрибутивов - свои.

и как быть с обновлениями?

Придётся решать ад зависимостей (dependency hell, вполне устоявшийся термин).

Видимо, придется писать свои скрипты?

Или использовать готовые средства сборки дистрибутивов.

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

и как быть с обновлениями?

Использовать более популярный дистрибутив *BSD или GNU/Linux, где за тебя уже решили эти проблемы.

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

можно взять Gentoo, где это всё делают за тебя

Далеко не всё. Рано или поздно придётся заводить свой оверлей.

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

Далеко не всё. Рано или поздно придётся заводить свой оверлей.

Как я понимаю, речь о том, что Gentoo предоставляет все необходимые инструменты для создания собственного оверлея. Без необходимости перелопачивания исходников и правки make-файлов...

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

До тех пор, пока не понадобится исправить какой-нибудь хардкод или баг, вот тогда и sed поселится в ебилде, и патчей пачка.

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

вот тогда и sed поселится в ебилде, и патчей пачка.

Разумеется. Но вроде разговор шел не о правке исходников, а об их выкачивании и разборках с путями при компиляции ;).

Serge10 ★★★★★ ()

man make ну или make --help (make -h) там указать маке куда чего ставить и из чего брать! час курения манов плюс две банки пива = 30 секунд в консоле и опа, всё работает!

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

Задача стоит в том, чтобы добиться работоспособности заточенного под RHEL/Debian софта, что потребует и того и другого.

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

Задача стоит в том, чтобы добиться работоспособности заточенного под RHEL/Debian софта, что потребует и того и другого.

Что-то я не успеваю за Вашей мыслью :(. То Вы говорите об исправлении багов/накладывании патчей, а теперь о адаптации под Gentoo софта, заточенного под RHEL/Debian...

Не знаю, многое, конечно, от конкретного софта зависит, мне несколько раз приходилось решать подобные проблемы, там все решалось созданием простейших ebuild'ов, без всяких патчей и sed'ов...

Serge10 ★★★★★ ()

Например, компилирую firefox из исходников. Туева хуча зависимостей скачивается из кучи разных сайтов. Которые могут «отвалиться», у меня может интернет пропасть. Причин много.

Есля я всё правильно понял из вики pkgsrc это форк фрибздишных портов. Так получается ты и так скачал все исходники. Архивы в distfiles, а в распакованном виде они разложены по каталогам.

Как мне сделать локальную копию ВСЕХ зависимых исходников ?

Соответственно сделать если ты компилял с зависимостями, то ты это уже сделал..

Второй вопрос: как-то можно управлять путями - откуда скачивать man спасёт отца русской компиляции.

anonymous ()

В более молодых системах это делается так:

% portmaster -F russian/libreoffice

===>>> Currently installed version: ru-libreoffice-6.0.2_3
===>>> Port directory: /usr/ports/russian/libreoffice

===>>> Launching 'make checksum' for russian/libreoffice in background
===>>> Gathering dependency list for russian/libreoffice from ports
===>>> Launching child to update libreoffice-6.0.2_3 to libreoffice-6.0.3

===>>> ru-libreoffice-6.0.2_3 >> libreoffice-6.0.2_3 (1/1)

===>>> Currently installed version: libreoffice-6.0.2_3
===>>> Port directory: /usr/ports/editors/libreoffice

===>>> Launching 'make checksum' for editors/libreoffice in background
===>>> Gathering dependency list for editors/libreoffice from ports
===>>> Launching child to check distfiles for shells/bash

===>>> ru-libreoffice-6.0.2_3 >> libreoffice-6.0.2_3 >> shells/bash (2/2)

===>>> Port directory: /usr/ports/shells/bash

===>>> Launching 'make checksum' for shells/bash in background
===>>> Gathering dependency list for shells/bash from ports
===>>> Initial dependency check complete for shells/bash

===>>> Continuing initial dependency check for editors/libreoffice
===>>> Initial dependency check complete for editors/libreoffice

===>>> Continuing initial dependency check for russian/libreoffice
===>>> Initial dependency check complete for russian/libreoffice


===>>> Waiting for 1 distfile fetch to finish
===>>> Waiting for 1 distfile fetch to finish
===>>> Waiting for 1 distfile fetch to finish
===>>> Waiting for 1 distfile fetch to finish
===>>> Distfile fetching is complete

или так:

% portupgrade -FR russian/libreoffice
[Reading data from pkg(8) ... - 894 packages found - done]
[Gathering depends for russian/libreoffice ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. done]
[Exclude up-to-date packages ...................................................................................................................................................................................................................................................... done]
--->  Fetching the distfile(s) for 'libreoffice-6.0.3' (editors/libreoffice)
--->  Fetching '/usr/ports/editors/libreoffice'
===> Fetching and checking checksums for libreoffice-6.0.3 and dependencies
===>  License LGPL3+ MPL20 accepted by the user
===>   libreoffice-6.0.3 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by libreoffice-6.0.3 for building
=> SHA256 Checksum OK for libreoffice/libreoffice-6.0.3.2.tar.xz.
=> SHA256 Checksum OK for libreoffice/libreoffice-help-6.0.3.2.tar.xz.
=> SHA256 Checksum OK for libreoffice/4b87018f7fff1d054939d19920b751a0-collada2gltf-master-cb1d97788a.tar.bz2.
===>  License BSD2CLAUSE accepted by the user
===> Fetching all distfiles required by pkg-1.10.5 for building
=> SHA256 Checksum OK for pkg-1.10.5.tar.xz.
===>  License ART10 GPLv1+ accepted by the user
===>   p5-Archive-Zip-1.60 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by p5-Archive-Zip-1.60 for building
=> SHA256 Checksum OK for Archive-Zip-1.60.tar.gz.
....

===>   GentiumBasic-1102 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by GentiumBasic-1102 for building
=> SHA256 Checksum OK for GentiumBasic_1102.zip.
===>  License OFL11 accepted by the user
===>   liberation-fonts-ttf-2.00.1,2 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by liberation-fonts-ttf-2.00.1,2 for building
=> SHA256 Checksum OK for liberation-fonts-ttf-2.00.1.tar.gz.
===>   linuxlibertine-g-20120116_1 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by linuxlibertine-g-20120116_1 for building
=> SHA256 Checksum OK for e7a384790b13c29113e22e596ade9687-LinLibertineG-20120116.zip.

iZEN ★★★★★ ()
Последнее исправление: iZEN (всего исправлений: 3)
Ответ на: комментарий от EXL

и как быть с обновлениями?

Использовать более популярный дистрибутив *BSD или GNU/Linux, где за тебя уже решили эти проблемы.

это не решение.

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


man make ну или make --help (make -h) там указать маке куда чего ставить и из чего брать! час курения манов плюс две банки пива = 30 секунд в консоле и опа, всё работает!

да, уже дошел до make) в mk.conf можно много чего переопределить. разбираюсь.

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

Задача стоит в том, чтобы добиться работоспособности заточенного под RHEL/Debian софта, что потребует и того и другого.

Неверно!

Напомню(на всякий пожарный), задача стоит - в NetBSD.

Я знаю что в разных системах много чего есть. Я спрашивал конкретно, про NetBSD и pkgsrc.

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

Есля я всё правильно понял из вики pkgsrc это форк фрибздишных портов. Так получается ты и так скачал все исходники. Архивы в distfiles, а в распакованном виде они разложены по каталогам.

в pkgsrc исходников нет) исходники скачиваются во время компиляции - почему и нужен инет, если компилять из исходников.

можете глянуть на исходники): http://ftp.netbsd.org/pub/pkgsrc/stable/pkgsrc.tgz

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

в Makefile можно переопределить, пути. Например.

в принципе, тему можно закрыть.

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