metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-10-07 12:09 pm

Абсолютные и относительные пути

Есть одна вещь, которая меня смущает - это популярность прибивания гвоздями абсолютных путей в разного рода конфигах.
Вот сейчас мигрирую исходники и сборку софта, использующего mono, на убунте. Сборка скачивает, конфигурирует и собирает моно.
Первый раз расположил рабочую копию не совсем верно, переместил в правильное место - и все, xbuild не работает, потому что в нем гвоздями прибито место, откуда запускать моно. С абсолютным путем. Зачем это так?
Лежит оно все рядом, можно тупо использовать относительный путь, используя путь, с которого запущен скрипт, папку с собранным софтом в таком варианте можно переносить куда угодно, ничего не сломается. Но почему-то так не делают, надо переконфигурировать и пересобирать.

[identity profile] vit-r.livejournal.com 2014-10-07 09:29 am (UTC)(link)
В данном случае чем меньше свободы, тем лучше. Фиг знает, куда шаловливые ручки его закинут. А профи поправят в исходном коде.

[identity profile] volodymir-k.livejournal.com 2014-10-07 09:40 am (UTC)(link)
Зачем это так? Потому что если задать относительный, то другие метаклассы будут ныть, что их заставляют "всё складывать в приколоченное гвоздями место рядом, а хотелось бы совсем другого, у нас там лежит". Вам не угодишь.

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

Как правило, есть такой подход (попробуйте например Х собрать) -- configure, make, make install
и у configure классическая опция --prefix or --with-dir=/foo которая в точности про это, и есть какой-то дефолт
а вы просто не знаете

[identity profile] justy-tylor.livejournal.com 2014-10-07 10:33 am (UTC)(link)
Для "там лежит" есть симлинки.

[identity profile] volodymir-k.livejournal.com 2014-10-07 01:20 pm (UTC)(link)
за что купил, за то продаю -- так никто не делает
почему, точно не знаю
наверное dlopen() такого не любит как один из резонов

[identity profile] justy-tylor.livejournal.com 2014-10-07 02:26 pm (UTC)(link)
О проблемах с dlopen не слышал.

Вот в виндах (до висты) было ограничение - только junction на директории, но без симлинков на индивидуальные файлы.

[identity profile] berezovsky.livejournal.com 2014-10-07 10:07 am (UTC)(link)
"Program Files" в убунте? Оригинально.

[identity profile] metaclass.livejournal.com 2014-10-07 10:18 am (UTC)(link)
Не, его configure генерит, этот путь.

[identity profile] victorgr.livejournal.com 2014-10-07 10:35 am (UTC)(link)
Convention over configuration — когда всё аккуратненько должно лежать на своих местах, тогда и относительные пути можно применять.

[identity profile] ext_1684112 (from livejournal.com) 2014-10-07 12:18 pm (UTC)(link)
С относительными путями до сих пор есть ад с кавычками, пробелами, слэше в конце и не-ascii символами в именах.

[identity profile] metaclass.livejournal.com 2014-10-07 12:23 pm (UTC)(link)
А с абсолютными же вроде то же самое?

[identity profile] berezovsky.livejournal.com 2014-10-07 12:40 pm (UTC)(link)
да, я с этим в мсбилд затрахался, но с полными то же самое будет

[identity profile] altmind.livejournal.com 2014-10-07 01:00 pm (UTC)(link)
меня удивляет что абсолютные пути попадают в итоговый бинарь. не хочется видеть "d:\проекты того мудака\libговно\win32\operden.lib" в символах.

[identity profile] sbj-ss.livejournal.com 2014-10-07 01:18 pm (UTC)(link)
Кстати, да. Мерзость.

[identity profile] cottidianus.livejournal.com 2014-10-09 07:12 pm (UTC)(link)
С абсолютными путями проблема такая, что абсолютные пути диктуют структуру иерархии директорий. Что блядь примерно как если доктор приедет ко мне на дом укол мне сделать и приймется от меня требовать, чтобы я дверь в подъезде перекрасил из коричневого в в зелёный. Потому, что у него в родном селе дверь дома была зелёная.

Скажем так всё, что не касается проекта скрипты ебать не должно вообще. Это не их собачье дело как у меня обустроена иерархия директорий. У них есть каталог, в каталоге проект. Там пусть диктуют. И то там тоже желательно не размахиваться, чтобы не уничтожать гибкость по глупости.
Edited 2014-10-09 19:13 (UTC)