История изменений
Исправление LINUX-ORG-RU, (текущая версия) :
В chroot
всё держи. Его и таскай. В нём всё и разворачивай. Это дабы обойти необходимость явно собирать все зависимости. Минимальный дистрибутив через debootstrap
или аналог разворачиваешь, внутри что надо ставишь или компиляешь.
PREFIX
всегда должен быть абсолютным, а вот DESTDIR
может быть чем угодно, он подменяет корень. Ты можешь собрать например так --prefix=/usr/local
, а DESTDIR
для установки задать как ./myexperimentdir
и получишь такое ./myexperimentdir/usr/local
если ты сделаешь chroot ./myexperimentdir
(где должна быть оболочка ещё быть в ./myexperiment/bin/sh) ты с делашь так что для программ будет видно просто /usr/local/чётотам
.
Но это лишь один из путей, либо симулируешь корень системы, чрут,докер,фигокер. Либо собираешь вообще все завимсимости, укладываешь их как тебе угодно и через LD_PRELOAD
LD_LIBRARY_PATH
задаёшь откуда всё будет браться из выдуманной тобой структуры каталогов, может ещё придётся расковырять ПО которое не подразумевает что будет запускаться из произвольного места с произвольным расположением ресурсов.
Для некоторого ПО твоё желание реализуется очень просто и без костылей, а с некоторым придётся плясать если хочешь прям всё сам, просто оно предполагает некие договорённости о том что и где лежит, а ты хочешь свои. Либо дай этому ПО эти договорённости развернув всё в чруте или его аналоге, либо придётся (и в этом нет ничего такого просто сложнее) делай специализированную сборку.
Если с одной двумя программами как бы ладно, а вот с комплексом программ которые друг с дружкой взаимодействовать будут уже сложнее, надо понимать как и через что они взаимодействуют.
Конпиляй в чруте короче =) Чрут просто каталог с файлами получится,со всеми программами, библиотеками и настройками.
Про appimage сказали ещё. Но там тоже курить надо. Хотя можно чрут в appimage целиком запихать и получить 1 файлик для запуска вообще всего.
А можно просто ход конём, скрипт который тебе на другой машине всё установит, запишет конфигурацию в конфиги, что надо запустит и всё.
Путей много, у тебя проблемы с тем что есть предопределённые вещи которые ты хочешь сделать по своему, опять де ничего такого, но только надо будет раз уже делать то прям делать всё по своему.
Ну и от ПО зависит, собрать луа и таскать бинарник с собой куда угодно это одно, а собрать мариадб и её таскать это другое :) Я второе не пробовал, но кажется не всё пойдёт гладко если делать влоб
Исправление LINUX-ORG-RU, :
В chroot
всё держи. Его и таскай. В нём всё и разворачивай. Это дабы обойти необходимость явно собирать все зависимости. Минимальный дистрибутив через debootstrap
или аналог разворачиваешь, внутри что надо ставишь или компиляешь.
PREFIX
всегда должен быть абсолютным, а вот DESTDIR
может быть чем угодно, он подменяет корень. Ты можешь собрать например так --prefix=/usr/local
, а DESTDIR
для установки задать как ./myexperimentdir
и получишь такое ./myexperimentdir/usr/local
если ты сделаешь chroot ./myexperimentdir
(где должна быть оболочка ещё быть в ./myexperiment/bin/sh) ты с делашь так что для программ будет видно просто /usr/local/чётотам
.
Но это лишь один из путей, либо симулируешь корень системы, чрут,докер,фигокер. Либо собираешь вообще все завимсимости, укладываешь их как тебе угодно и через LD_PRELOAD
LD_LIBRARY_PATH
задаёшь откуда всё будет браться из выдуманной тобой структуры каталогов, может ещё придётся расковырять ПО которое не подразумевает что будет запускаться из произвольного места с произвольным расположением ресурсов.
Для некоторого ПО твоё желание реализуется очень просто и без костылей, а с некоторым придётся плясать если хочешь прям всё сам, просто оно предполагает некие договорённости о том что и где лежит, а ты хочешь свои. Либо дай этому ПО эти договорённости развернув всё в чруте или его аналоге, либо придётся (и в этом нет ничего такого просто сложнее) делай специализированную сборку.
Если с одной двумя программами как бы ладно, а вот с комплексом программ которые друг с дружкой взаимодействовать будут уже сложнее, надо понимать как и через что они взаимодействуют.
Конпиляй в чруте короче =) Чрут просто каталог с файлами получится,со всеми программами, библиотеками и настройками.
Про appimage сказали ещё. Но там тоже курить надо. Хотя можно чрут в appimage целиком запихать и получить 1 файлик для запуска вообще всего.
А можно просто ход конём, скрипт который тебе на другой машине всё установит, запишет конфигурацию в конфиги, что надо запустит и всё.
Путей много, у тебя проблемы с тем что есть предопределённые вещи которые ты хочешь сделать по своему, опять де ничего такого, но только надо будет раз уже делать то прям делать всё по своему.
Исправление LINUX-ORG-RU, :
В chroot
всё держи. Его и таскай. В нём всё и разворачивай. Это дабы обойти необходимость явно собирать все зависимости. Минимальный дистрибутив через debootstrap
или аналог разворачиваешь, внутри что надо ставишь или компиляешь.
PREFIX
всегда должен быть абсолютным, а вот DESTDIR
может быть чем угодно, он подменяет корень. Ты можешь собрать например так --prefix=/usr/local
, а DESTDIR
для установки задать как ./myexperimentdir
и получишь такое ./myexperimentdir/usr/local
если ты сделаешь chroot ./myexperimentdir
(где должна быть оболочка ещё быть в ./myexperiment/bin/sh) ты с делашь так что для программ будет видно просто /usr/local/чётотам
.
Но это лишь один из путей, либо симулируешь корень системы, чрут,докер,фигокер. Либо собираешь вообще все завимсимости, укладываешь их как тебе угодно и через LD_PRELOAD
LD_LIBRARY_PATH
задаёшь откуда всё будет браться из выдуманной тобой структуры каталогов, может ещё придётся расковырять ПО которое не подразумевает что будет запускаться из произвольного места с произвольным расположением ресурсов.
Для некоторого ПО твоё желание реализуется очень просто и без костылей, а с некоторым придётся плясать если хочешь прям всё сам, просто оно предполагает некие договорённости о том что и где лежит, а ты хочешь свои. Либо дай этому ПО эти договорённости развернув всё в чруте или его аналоге, либо придётся (и в этом нет ничего такого просто сложнее) делай специализированную сборку.
Если с одной двумя программами как бы ладно, а вот с комплексом программ которые друг с дружкой взаимодействовать будут уже сложнее, надо понимать как и через что они взаимодействуют.
Конпиляй в чруте короче =) Чрут просто каталог с файлами получится,со всеми программами, библиотеками и настройками.
Про appimage сказали ещё. Но там тоже курить надо. Хотя можно чрут в appimage целиком запихать и получить 1 файлик для запуска вообще всего.
Исходная версия LINUX-ORG-RU, :
В chroot
всё держи. Его и таскай. В нём всё и разворачивай. Это дабы обойти необходимость явно собирать все зависимости. Минимальный дистрибутив через debootstrap
или аналог разворачиваешь, внутри что надо ставишь или компиляешь.
PREFIX
всегда должен быть абсолютным, а вот DESTDIR
может быть чем угодно, он подменяет корень. Ты можешь собрать например так --prefix=/usr/local
, а DESTDIR
для установки задать как ./myexperimentdir
и получишь такое ./myexperimentdir/usr/local
если ты сделаешь chroot ./myexperimentdir
(где должна быть оболочка ещё быть в ./myexperiment/bin/sh) ты с делашь так что для программ будет видно просто /usr/local/чётотам
.
Но это лишь один из путей, либо симулируешь корень системы, чрут,докер,фигокер. Либо собираешь вообще все завимсимости, укладываешь их как тебе угодно и через LD_PRELOAD
LD_LIBRARY_PATH
задаёшь откуда всё будет браться из выдуманной тобой структуры каталогов, может ещё придётся расковырять ПО которое не подразумевает что будет запускаться из произвольного места с произвольным расположением ресурсов.
Для некоторого ПО твоё желание реализуется очень просто и без костылей, а с некоторым придётся плясать если хочешь прям всё сам, просто оно предполагает некие договорённости о том что и где лежит, а ты хочешь свои. Либо дай этому ПО эти договорённости развернув всё в чруте или его аналоге, либо придётся (и в этом нет ничего такого просто сложнее) делай специализированную сборку.
Если с одной двумя программами как бы ладно, а вот с комплексом программ которые друг с дружкой взаимодействовать будут уже сложнее, надо понимать как и через что они взаимодействуют.
Конпиляй в чруте короче =) Чрут просто каталог с файлами получится,со всеми программами, библиотеками и настройками.