LINUX.ORG.RU
ФорумTalks

Принципиально новый тупняк


0

1

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

В результате чего пришлось тупо скомпилировать все возможные программы руками в свой хомячок.

Потом оказалось, что хомячок использую не только я, но еще и много разных других людей. Кроме того, один и тот же /home используется между разными серверами, на которых установлены разные ОС.

что привело к такой структуре папок:
/home/user - директория заданная изначально дистрибутивом
/home/user/virtualuser1 - директория, в которой происходит весь замес
/home/user/virtualuser1/env/subuser1 - директория с настройками окружения для различных «подпользователей». При этом пользователь virtualuser выступает для них как-бы-админом.
/home/user/virtualuser1/servers/server1/usr - префикс, по которому конпеляются программы, например есть server1/usr/bin, ну вы понели
/home/user/vierualuser1/system/ - здесь лежат все скрипты на питоне, позволяющие выполнять это безобразие

Виртуальные юзеры первого уровня переключаются командой user, например «user virtualuser1», виртуальные юзеры второго уровня - командой subuser, например «subuser subuser1»

Все эти команды вшиты в специальный bash-скрипт, который source'ится из основного ~/.bashrc.

Таким образом, мы получаем работающий кросскомпилированный Linux... т.е. сорри, GNU-окружение с кучей программ, с поддержкой пользователей, групп, обновлений, и много всего остального - работающий без ведома админа!

В «стандартном наборе» я также написал кучу полезных скриптов. Например, ssh с возможность логина открытым текстом, из командной строки или из файла конфигурации (тоже открытым текстом!). Никаких открытых ключей, админ ничегошеньки не узнает о нашем чорном деле. Или цепочка таких вот плэйнтекстовых «ssh-туннелей», даже если ssh-туннели напрямую запрещены админом. Или «фоновая» цепочка сквиов, которая позволяет получить доступ к любому из серверов сети по www, даже если это прямо запрещено админом (но разрешено открывать порты ггг).

Последний этап, который я запланировал на воскресенье - система виртуальных «пакетов», которая будет хранить базу данных в mercurial на bitbucket и скрипт автоматической установки всей этой фигни.


Хочу спросить у общественности, хотеть ли они новый дистрибутив на основе этой системы. Я могу, ибо всё работает.

У специалистов (и это упаси боже не технический вопрос, а просто тема для обсуждения!): хочу сделать, чтобы обновление одной программы не затрагивало обновления другой. А то как, обновляем прогу - и тут же требуется обновить либу, от которой она зависит. Обновляем либу - приходится переконпелировать все программы, которые зависят от этой либы. Неприятно аднака! Есть ли какой-нибудь способ монолитно вконпелять в программы все их зависимости, так чтобы обновление любоей программы не затрагивало остальные? ) Тема имхо благодатная, можно потратить несколько страниц на обсасывание ))

★★★★☆

Мысли вслух.

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

Nix/NixOS? Но это так, мысли вслух. Я Nix ещё не смотрел.

Camel ★★★★★ ()

купи нормальный выделенный сервер, нищеброд

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

> купи нормальный выделенный сервер, нищеброд

заказчик пожелал чтобы я работал именно на их серверах. Маленькая проблема в том, что «работать» там можно чисто формально, потому что из доступных программ есть только Bash. По отдельной особой просьбе одмин разрешил использование gcc и wget, и это дало возможность собрать собственное окружение в хомячке. Дальше ты знаешь )

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

> Есть ли какой-нибудь способ монолитно вконпелять в программы все их зависимости, так чтобы обновление любоей программы не затрагивало остальные?

Статиком компилить.

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

> Статиком компилить.

придется ручками переписывать все мэйкфайлы, да? :(

зы, пара прог не работала, если не включен --enable-shared. Помню glib не хотел конпеляться, если ncurses не собрана с --enable-shared...

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

ладно, может это был и не glib, а то сина толсто, но факт имеет место быть

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

> купи нормальный выделенный сервер, нищеброд

я сейчас пьян, поэтому отвечу тебе еще раз (третий коммент подряд! ужас.).

С каких это пор мы хакаем/покупаем сервера под линукс? Канонично нужно хакать Линукс чтобы он запускался под чем угодно и работал как нам нужно!

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

моя хотеть это

замётано. Если пыл не остынет, то через недельку запощу в толксы ссылку на релиз)

stevejobs ★★★★☆ ()

Это просто офигенно, я считаю.

Cancellor ★★★★☆ ()

Надо напомнить вашему админу про noexec…

fat_angel ★★★★★ ()

А что за админы хомяки юзерам без ноэкзек делают?

ostin ★★★★★ ()

извините, но я кончил и закурил!

ggrn ★★★★★ ()

fakeroot, fakechroot, debootstrap, ipkg/opkg root

kmeaw ★★ ()

Заведи себе контейнер, на крайняк chroot (с fareroot'ом) со своим любимым дистрибутивом

Led ★★★☆☆ ()

Есть ли какой-нибудь способ монолитно вконпелять в программы все их зависимости, так чтобы обновление любоей программы не затрагивало остальные?

Вопрос интересный. Быстрый поиск по интернету дал вот такую програму ELF statifier. Сам ни разу этой программой не пользовался, и даже не мог себе представить, что такое бывает.

Итого, вроде как, получается несколько возможных путей:

компилировать статически,

компилировать с динамическими библиотеками, а затем «статифицировать»,

делать отдельную среду chroot для каждой программы, копировать (или делать hard-link?) в эту среду все нужные нужные динамические библиотеки.

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

>Итого, вроде как, получается несколько возможных путей:

компилировать статически,

тупо

компилировать с динамическими библиотеками, а затем «статифицировать»,

тупо

делать отдельную среду chroot для каждой программы, копировать (или делать hard-link?) в эту среду все нужные нужные динамические библиотеки.

тупо

Незачёт. Марш готориться и через два дня - на пересдачу

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