LINUX.ORG.RU

Баш, питон... А исполняемые C++ сорцы с шебангом видали? :)

 ,


2

8
$ cat ~/bin/hello.cpp 
#!/usr/local/bin/build-n-run
#include <stdio.h>
int main() {
    puts("Hello world!");
}

$ hello.cpp 
Recompiling...
Hello world!

$ hello.cpp 
Hello world!

Этот самый /usr/local/bin/build-n-run тоже написан на C++ с использованием std::experimental::filesystem, и он не сильно длиннее эквивалентного баш-скрипта. Собственно работа с путями даже короче. Кому сорц? :)

Отныне в гробу я видал этот ваш баш.

UPD: Сорцы: https://github.com/dimgel/cpp-linux-scripts

★★★★★

Последнее исправление: dimgel (всего исправлений: 1)

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

А если FN не просто имя файла? А /root/filename?

Угу, только в крестах это basename(fn), extension(fn). Что явно лучше твоего убожества. Это уж я не говорю об обходе и какой-то логике.

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

Угу, только в крестах это basename(fn)

man 1 basename

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

А если FN не просто имя файла? А /root/filename?

Вот же прицепился

$ FN='/path/example.tar.xz'
$ echo $(basename ${FN%%.*})
example
surefire ★★★
()
Ответ на: комментарий от surefire

Прямо так вот в крестах или в одной из подключаемых либ?

Это неважно. Ты ведь basename заюзал, а это не башик, а «подключаемая либа». Но не волнуйся - это есть и в крестах. Туда уже завезли filesystem.

И вообще, с чего я должен быть ограничен какими-то мистическими крестами? Это же не твой недоязычок в котором нихрена нет. Я покойно могу использовать что угодно, да и я должен использовать, ведь языка у тебя нет. У тебя есть пару сахарных кастылей и coreutils.

Точно так же и я могу наделать себе столько сахара, сколько нужно.

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

Это наоборот лучше, т.к. extension не умеет в .tar.xz

Хотя, в отличии от баша, это всё же язык и подобное реализуется одной строчкой.

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

генерики это такое же зло, только вид сзади.

Я ошибочно упомянул генерики. По-прежнему непонятно, что ты имел в виду под подстановкой типов.

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

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

и при этом, например, на сервере на продакшне надо держать сишный компилятор, да ещё и доступный левым юзерам. что какбэ противоречит обычным требованиям безопасности.

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

и при этом, например, на сервере на продакшне надо держать сишный компилятор, да ещё и доступный левым юзерам. что какбэ противоречит обычным требованиям безопасности.

Соображение интересное. Чем меньше у юзера на руках инструментов, тем меньше шансов что он что-нить сломает.

Но с другой стороны, гента как-то с компилятором живёт? И по большому счёту, чем компилятор в руках левого юзера опаснее обычной команды cp? Вроде как, либо доступ куданенадо есть, либо его нет, а уж с помощью какой программы он в это куданенадо залезет - дело десятое.

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

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

Зависимости - рудимент 80годов. В современном С++ уже давно уходят от зависимостей времени исполнения. Да и в си идёт к тому же.

А мелкая/крупная - абсолютно неважно. Относительно времени той же компиляции - 99.99% сишных программ - мелкие. Особенно в контексте какого-нибудь tcc - там и все 100%.

и при этом, например, на сервере на продакшне надо держать сишный компилятор, да ещё и доступный левым юзерам. что какбэ противоречит обычным требованиям безопасности.

Глупые поверья, которые не из чего не следуют.

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

Но с другой стороны, гента как-то с компилятором живёт?

Никакой другой стороны нет - это просто ахинея, причём невероятных масштабов.

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

Это не говоря о всяких пистончиках, для которых есть биндинги и к сосколам, и к либц - они могут не особо меньше. Да и башик может хоть всю раму сдампить одной кнопкой.

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

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

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

откройте мне секрет: как же вы так «уходите от зависимостей времени исполнения»? прямо сами велосипедите всё с нуля? я 25 лет программирую на сях и как-то слабо себе представляю это ваше хипстерское программирование без зависимостей.

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

Ну а мне чёт первым делом вспомнился приснопамятный червь Морриса. Который, пробившись в систему, скачивал основное тело в виде сорца и компилял его на зараженной машине. ;) Что кстати в его случае странно, т.к. он нападал на совершенно конкретное железо и версию ОС, т.е. не проще ли было бинарник закачивать? Разве что бинарник выходил по объёму больше исходника.

И ещё вспоминается chroot-окружение, которое мне один админ однажды состряпал. Там даже и cp по началу не было. =)

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

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

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

Всё очень просто - header-only. Это же сишка, а не какой-то недоязычок. Да и колхозная статическая линковка есть.

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

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

Ну можете он писался как универсальный, а после что-то пошло не так и с другим железом/платформами не получилось, либо их вообще не было.

И ещё вспоминается chroot-окружение, которое мне один админ однажды состряпал.

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

Сишный компилятор ничем не опасней любой другой программы.

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

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

В руках левого юзера опасно всё, и компилятор, имхо, из этого всего не выделяется.

Однако усугубить уровень опасности возможно.

Например, в системе, не предназначенной для программиста, все разделы, кроме корневого и /usr с /opt, если они являются отдельными разделами, желательно сделать noexec (правда, в debian ещё на var придётся разрешить исполнение, чтобы можно было устанавливать пакеты, а пользователям tor'а — либо разрешить исполнение в хомяке, либо создать в нём специальный раздел для tor'а). Но если разделы noexec, то и запустить из них elf'ы не получится. А в корневой раздел может писать только рут. Т. е. для выполнения пользовательских программ надо разрешить исполнение из хомяка либо работать от рута, что ещё хуже. Для программиста это нормально, а неквалифицированный юзер может таких троянов понакачать. Впрочем, он их может понакачать и на баше или на питоне с перлом, и тогда никакой noexec его не спасёт. Так что брешь, имхо, незначительная, но всё-таки ещё одна потенциальная лазейка для злоумышленника.

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

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

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

Впрочем, он их может понакачать и на баше

Во, всё забывал добавить - что нагадить можно и с помощью моего любимого баша, дифирамбов которому ради я и создал этот тред. =)

А за расклад по разделам и noexec спасибо, это я запомню. Хотя «в корень писать может рут» и так на всех нормальных системах, без noexec.

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

в го/раст уходят неосиляторы. это их личные комплексы.

Мне как-то фиолетово на твои глупые вскрики по этому поводу. Есть что сказать конкретное - говори, а если аргументация заканчивается на заспаме лозунгами - у тебя явные проблемы.

решительно не вижу никаких проблем с использованием библиотек.

Действительно. Скажи «не вижу» и все тут же поверят. Любая зависимость - это полный ахтунг при дистрибуции. Ты мне каким образом накатишь нужную либу? Астралом?

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

Я вообще удивляюсь - как тебя вообще земля носит, ведь ты вещаешь такую ахинею - это просто невозможно воспринимать.

Вот люди идиоты - собирают в бинарных дистрибутивах пакеты под каждую версию и хрен ты накатишь новую либу не сломав всё остальное. Но ты ведь гений - у тебя проблем нет. Иди это расскажи пацанам.

Ну и самое главное - либы - это тормазное дерьмо. Если ты пишешь дерьмо, то у тебя проблем нет. Я же, дерьмо не пишу и либы мне не нужны.

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

Нихрена там не заточено - это протухшее убожество. Просто дядя тебе заранее собрал пакетики, в твоих бинарных яслях, а тебе кажется, что проблем нет. Хотя ты врёшь, либо сидишь в яслях.

Любой вменяемый человек понимает, что либы и всё это дерьмо - это фундаментальная проблема. И она никак не решается. Ты либо пилишь 100500 пакетов под каждую версию дистрибутива, либо у тебя ддл-хелл как в маздайке, где у каждой программы свои либы.

Нормальные люди решают эти проблему просто - выкидыванием ненужного мусора. И программы становятся меньше и быстрее. И любую программу можно запустить где угодно безо всякого лишнего мусора.

anonymous
()
Ответ на: /r/linux от atsym

добавь же в шапку ссылку на исходники

О, а я думал, права редактировать заглавный пост у меня тоже нет. Done.

пропиши лицензию (думаю MIT будет в самый раз)

Завтра... WTFPL.

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

Каким образом из этого:

Например, в системе, не предназначенной для программиста, все разделы, кроме корневого и /usr с /opt, если они являются отдельными разделами, желательно сделать noexec (правда, в debian ещё на var придётся разрешить исполнение, чтобы можно было устанавливать пакеты, а пользователям tor'а — либо разрешить исполнение в хомяке, либо создать в нём специальный раздел для tor'а). Но если разделы noexec, то и запустить из них elf'ы не получится. А в корневой раздел может писать только рут. Т. е. для выполнения пользовательских программ надо разрешить исполнение из хомяка либо работать от рута, что ещё хуже. Для программиста это нормально, а неквалифицированный юзер может таких троянов понакачать. Впрочем, он их может понакачать и на баше или на питоне с перлом, и тогда никакой noexec его не спасёт. Так что брешь, имхо, незначительная,

Следует это:

но всё-таки ещё одна потенциальная лазейка для злоумышленника.

Мне решительно непонятно.

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

Я вообще удивляюсь - как тебя вообще земля носит, ведь ты вещаешь такую ахинею - это просто невозможно воспринимать.

Вот за что я всегда любил читать ЛОР, даже когда ещё на кывте тусовался - так это что с тутошних обсуждений можно реально в голос поржать. ЖB-D :))))

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

Хотя «в корень писать может рут» и так на всех нормальных системах, без noexec.

Корень, как и /usr с /opt, если они монтируются отдельно, не должны быть noexec, иначе с них ничего нельзя будет запустить, и система даже не загрузится. В debian и debian-подобных дистрах /var тоже должен быть доступен для исполнения. В других дистрах могут быть свои заморочки. А вот /tmp/, /var/tmp, /var/log, /var/lock и вообще всё, куда может писать кто угодно, всегда желательно делать noexec и nosuid. Хомяк по возможности тоже. Но если из хомяка запускаются какие-то программы (например, у программиста, не будет же он в корне от рута работать; или tor, который тоже ставится в хомяк), то /home/ надо монтировать без noexec, но тем более обязательно с nosuid, чтоб никто не залил на него суидный троян, который всегда будет выполняться от рута. И вообще nosuid лучше ставить везде кроме / и /usr, может быть ещё в /opt не надо ставить, если там установлено что-то, чему может понадобиться suid.

К сожалению, скрипты на noexec разделах запускать всё равно можно, если явно указать интерпретатор в командной строке. Правда, бит suid на них не действует, что уже хорошо. А запретить их исполнение на каких-то разделах можно только при помощи SELinux, но с ним придётся возиться.

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

Каким образом из этого:

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

Следует это:

но всё-таки ещё одна потенциальная лазейка для злоумышленника.

Надо разрешить выполнение эльфов в хомяке любому пользователю, что позволит пользователям самостоятельно качать из инетов и запускать любые левые программы, что является брешью. С другой стороны, скрипты они могут качать из инетов и запускать даже с включённой опцией noexec, поэтому дыра имеет место быть в любом случае. Просто когда к возможности запустить левый скрипт добавляется возможность ещё и запустить левый elf, то и возможности для злоумышленника увеличатся. А если забыть включить опцию монтирования nosuid на хомяке, то для злоумышленника такой хомяк может превратиться в огород для козла.

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

Надо разрешить выполнение эльфов в хомяке любому пользователю

Не понял. Если у тебя есть компилятор, который соберёт бинарник, то соберёт он его в хомяк, в котором ты его не запустишь. Т.е. компилятор полностью безопасен.

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

А вообще - засунь его в контейнер и не мучайся.

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

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

И как всё было бы прекрасно, если бы у нас были нормальные бинарники. У нас был бы один общий бинарный репозиторий. Разработчики бы не заморачивались с тысячами дистрибутивов, мейнтейнеры бы не тратили свою жизнь на бесполезный мусор.

Но ведь у нас есть религия - сошки. Мы хотим обмазываться дерьмом. Мы не хотим собрать один файл и использовать его везде. Мы не хотим обновить один файл и он обновится везде.

Есть там рассуждения на тему «а если у меня срочно требуются обновления безопасности - я накатил на либу и всё подцепилось». Во-первых - это мифология. Существует 100500 версий либы и никто на все эти версии не накатит, а если накатит - это не особо проще.

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

ФУ.

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

«глупые вскрики» - это ты тут вопишь. я как писала на С, так и пишу. и не психую, не паникую, никуда не бегу. потому что не нужно. всё можно написать на С. мне не нужны всякие говноскрипты и языки со встроенными памперсами, чтобы программировать. насчёт остальных - мне насрать. не могут - пусть идут дворы мести. так будет лучше. и для дворов, и для опенсорца.

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

в каких ещё «бинарных яслях»? детка, я свой дистр сама из сорцов собираю. и кернел патчу сама. узбагойся уже и не нервничай. забудь про Си и пиши на говноскриптах с подгузниками. там для таких нытиков самое место. тоже мне тут, кукаретик нашёлся.

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

Если у тебя есть компилятор, который соберёт бинарник, то соберёт он его в хомяк, в котором ты его не запустишь. Т.е. компилятор полностью безопасен.

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

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

Но если пользователь имеет право записи куда либо и имеет право запуска интерпретатора (например, bash), то он всегда может запустить скрипт командой bash script с любого раздела. Помочь тут может, как я уже говорил, SELinux, но с ним придётся повозиться.

А вообще - засунь его в контейнер и не мучайся.

Вот это хорошее решение. Но, опять же, смотря для чего. Если для обработки данных с того же диска, то оно может оказаться бесполезным. А если для каких-то рассчётов, доступа к сети или к оборудованию или чего-то ещё, не связанному с пользовательскими/системными данными или с состоянием системы, то самое оно.

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

Но ведь у нас есть религия - сошки. Мы хотим обмазываться дерьмом. Мы не хотим собрать один файл и использовать его везде.

Я как-то собирал свою нетленку со статической линковкой stdlib и stdlib++. Она на десятки метров потянула, не помню уже точно - но помню, что впечатлился. После этого полез гуглить как линковать не всю либу а только используемые символы, там тоже всё очень плохо. Если так всю систему собирать - никакой памяти не хватит, и грузится с диска будет тоже по три часа.

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

Всё это тоже не само собой происходит. Авторы пакетов этих модных язычков прописывают в манифестах зависимости с версиями. К сям тут только одна претензия: что нет манифестов, и в каждом дистре мейнтейнерам приходится на свой лад эти манифесты рисовать. Если ты об этом, то да, было бы круто иметь единый формат для всех дистров, и чтобы разрабы пакетов его сами создавали. Очень странно что его до сих пор нет.

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

Практически скриптовый язык, только быстрый как понос.

Потому что обычно именно это от средства для склейки find, mv & grep и требуется.

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

Она на десятки метров потянула, не помню уже точно - но помню, что впечатлился.

Гигов точнее.

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

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

Так и было, когда придумали deb-пакеты. Но потом придумали rpm и стандартизировали почему-то их, а не deb. Но это ладно. Rpm, так rpm. Однако разрабы разных дистров начали добавлять в эти rpm разные ненужности, что сделало их абсолютно несовместимыми с другими дистрами и даже с теми же дистрами других версий (т. н. «внутренние зависимости»). Т. е. разрабы rpm-based дистров сами себе создали и продолжают создавать проблемы, оставив от стандарта только слово «rpm», которое в разных дистрах и в разных версиях обозначает совершенно разные форматы.

А в deb всё нормально. Многие небольшие пакеты ты поставишь в любой deb-based системе, в других тебе придётся изменить названия/номера либ — не больше и только относительно немногие придётся по-настоящему бакпортировать.

Она на десятки метров потянула, не помню уже точно - но помню, что впечатлился.
Гигов точнее.

Десятки гигов библиотек? Что-то многовато.

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

«глупые вскрики» - это ты тут вопишь

Где? Я вижу вскрики «неосиляторы» и прочую ахинею без капли конкретики. Нечего ответить - не отвечай.

я как писала на С, так и пишу. и не психую, не паникую, никуда не бегу. потому что не нужно. всё можно написать на С.

И? Мне что с того? Пиши, кто тебе не даёт? Как это имеет отношения к делу?

мне не нужны всякие говноскрипты и языки со встроенными памперсами,

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

И да, памперсы - это сошки. Настоящие пацаны отвечают за весь код сами, а не халявят.

чтобы программировать. насчёт остальных - мне насрать. не могут - пусть идут дворы мести. так будет лучше. и для дворов, и для опенсорца.

Дворы метёшь ты, у тебя тотальный анскилл и комплексы на этом фоне. Каким надо быть идиотом, чтобы везде пастить какие-то 25лет.

Ты действительно не понимаешь, что это значит? Ты рандомныый нонейм, который ни стала никем за 25лет. На твоём месте - я бы заткнулся, и не стал бы вещать неосиляторов.

какой такой у тебя ахтунг при дистрибуции? майнтейнер сам соберёт твои сорцы. ну или юзер.

О, сразу видно ламерка с локалхоста. Ты ведь мне покажешь свой код, который собирает тебе майнтейнер.

твоя задача - указать зависимости (версии библиотек) в autoconf. всё.

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

Ведь именно в недоязычках ты пишешь зависимости и всё. Смени памперсы.

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

Какая-то ахинея. Нельзя. Всё это кастыляется, если кастыляется, всеми по разному и вообще никакого отношения ни к каким никсам не имеет.

Хотя о чём я говорю. У нас там ламерок, который 25лет где-то мыл полы и кроме бубунты нихрена не видел.

каких ещё «бинарных яслях»? детка, я свой дистр сама из сорцов собираю. и кернел патчу сама. узбагойся уже и не нервничай. забудь про Си и пиши на говноскриптах с подгузниками. там для таких нытиков самое место. тоже мне тут, кукаретик нашёлся.

О боже, это никчёмное дувище. Ты уж определись с тем, что ты делаешь. Собираешь, либо за тебя майнтейнер собирает.

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

Насколько же ты никчёмное, чудовище. Это просто ужас. Таких никчёмных я ниразу не видел, хотя нет - был какой-то аниме-школотрон. Тот такой же, хотя может лучше - у него не было 25лет «опыта».

Как ты живёшь вообще? Тебе не смежно? Твоя извилина родить может только две фразы «я пишу», «памперсы». Хотя исходя из твоего пола, потуг, возраста и памперсов - картина вырисовывается вполне однозначная.

Лечись. Хотя нет, оно ещё и стучит.

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

Так и было, когда придумали deb-пакеты.

Хм. Я как гентушник больше думал про source-based, чтобы в манифесте лежало что-то на тему configure-опций: если задашь --with-mysql, то требуется mysql версий таких-то.

Однако разрабы разных дистров начали добавлять в эти rpm разные ненужности, что сделало их абсолютно несовместимыми с другими дистрами и даже с теми же дистрами других версий

А, ну т.е. опен-сорц во всей красе. :))) Лебедь рак и щука.

Десятки гигов библиотек? Что-то многовато.

Статически скомпилятые бинарники.

Так, не, дважды прогнал, десятки метров а не гигов. Чёт спать уже пора. Динамически слинкованное лежит 220 килобайт (Release).

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

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

Как это не нужно? :) Wine-2.19 со всеми зависимостями и своим собственным барахлишком for Skyrim, wine-3.x for Witcher3.

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

Я как-то собирал свою нетленку со статической линковкой stdlib и stdlib++.

Никто про мусорную линковку и не говорил. Естественно, что линковка мусор - любая. Но динамическая - худший мусор.

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

Хватит и не будет. Грузиться она 3часа именно потому, что у тебя всё дерьмо раскидано по дискам.

Всё это тоже не само собой происходит. Авторы пакетов этих модных язычков прописывают в манифестах зависимости с версиями.

Неверно. Я говорил не об этом.

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

Очень странно что его до сих пор нет.

Причина проста и я её описал выше. В рамках того дерьма, которое существует сейчас - решения нет.

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

права редактировать заглавный пост у меня тоже нет

На форуме редактировать шапки своих топиков можно.

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

А в deb всё нормально. Многие небольшие пакеты ты поставишь в любой deb-based системе, в других тебе придётся изменить названия/номера либ — не больше и только относительно немногие придётся по-настоящему бакпортировать.

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

Сам формат пакета ничего не решает. Это бесполезный хелворд. Проблема именно в сборке и совместимости. Именно поэтому у бинарных дистрибутивов и существуют версии, именно для того, чтобы иметь некое базовое окружение в котором собираются все пакеты.

А уже новая версия - заменяет это базовое окружение на более новое, что требует пересборки всего и вся.

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

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

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

Вот этот кто-то и будет собирать всё. А юзер пускать.

Да и вообще, заявление звучало так «компилятор опасен», что неверно. Он абсолютно безопасен. И если ты запретил юзеру пускать программы, то запретил. И это ничего не меняет.

Но если пользователь имеет право записи куда либо и имеет право запуска интерпретатора (например, bash), то он всегда может запустить скрипт командой bash script с любого раздела. Помочь тут может, как я уже говорил, SELinux, но с ним придётся повозиться.

Нет. Если мы говорим о скриптах на крестах(решение автора), то ты волен его реализовать так, чтобы он мог запускать программы только из доверенных директорий.

Если для обработки данных с того же диска, то оно может оказаться бесполезным.

Никаких нет проблем пробросить внешние рабочие директории в контейнер

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

и при этом, например, на сервере на продакшне надо держать сишный компилятор, да ещё и доступный левым юзерам. что какбэ противоречит обычным требованиям безопасности.

Избыточно - да, но там где есть любой интерпретатор вроде bash, python, perl, там компилятор С++ врядли больше навредит. А интерпретаторы обычно есть

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

в го/раст уходят неосиляторы

Mozilla что-ли? Или вот эти? https://www.rust-lang.org/en-US/friends.html Высокомерненько с вашей стороны

ни разу не видела проблем.

https://en.wikipedia.org/wiki/Anecdotal_evidence

Дело в том, что если у вас их нету, но у множества других опытных людей есть, то значит вы просто научились их обходить. И это дейсвительно решение. Но кто-то обходит по другому, например уходя в Go/Rust. Так как если нету необходимости использовать Rust/Go, то равносильно нет необходимости использовать С

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

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

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

да, как раз мозилла - яркий случай неосиляторов. не шмагли запилить треды и придумали одеть памперсы. по-другому это не назвать. теперь всё тормозит и жрёт память, зато говнокодеры довольны: теперь они ощущают «безопасность» от обсирания.

я, кстати, это говно к себе на машину так и не поставила. и не поставлю. буду искать варианты, писать что-то своё.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от vertexua

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

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