LINUX.ORG.RU
ФорумTalks

Дистрибутив для программистов

 ,


0

1

В каком дистрибутиве быстрей всего можно изменить код любого компонента и установить его модифицированную версию?

В моём понимании это должно выглядеть так:

  1. Вместе с софтом ставятся исходники. Не обязательно это подход типа Gentoo, пускай качаются бинарники, но обязательно должны быть все исходники всех бинарников.

  2. Каждый проект лежит в git-репозитории, в котором уже создана отдельная ветка для пользователя.

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

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

  5. Конечно всё собрано с debug-символами изначально.

Почему-то кажется, что в BSD всё примерно так, но я не уверен, т.к. никогда не разбирался в их портах.

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

★★★★★

Gentoo

кладёшь в /etc/portage/patches/

патч к нужному пакету, и оно конпеляется с твоими локальными изменениями

если хочешь облагодетельствовать всех, тогда надо в апстрим отправлять

Harald ★★★★★ ()

Конечно всё собрано с debug-символами изначально.

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

Harald ★★★★★ ()

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

В моём понимании это должно выглядеть так: …

А как же консистентность системы? При таком подходе всё развалится очень быстро.

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

А как же консистентность системы? При таком подходе всё развалится очень быстро.

Не понял мысль. Что такое консистентность системы и почему всё развалится?

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

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

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

А почему диска не хватит? По-моему отладочные символы ерунду весят, не?

Legioner ★★★★★ ()

Не лопни, сейчас nixos изобретешь.

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

Ну так согласуй. Версионируй их вместе на уровне дистра, не допуска неописанного мусора на уровне хоста.

t184256 ★★★★★ ()

В каком дистрибутиве быстрей всего можно изменить код любого компонента и установить его модифицированную версию?

Slackware

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

Консистентность системы - согласованность её компонент.

если че консистентность и согласованность это одно и то же слово на разных языках

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

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

Legioner ★★★★★ ()

exherbo

int@sophi ~ $ cat /etc/exherbo-release 
                                                                           
           a.                                                              
           WQa.       _a/    _aw/                                          
           4WQQ,     jQQf   ]QQQQ.                                         
            4WF _,  jWQQ[   jQQQQ;     .g,  _s,.                           
             - _QL _QQQQw,  ]QQQW      dQ(  -4QQc                          
              <QQm jQQQQWQw,)QQQk    _yQQL    "$Q;                         
             _QQQQ;mQQQQQQWQgmQQQQ}~-"9QQQQ(   -?                          
            .mQQQQcQQQQQQQQQQQQQD'     "QP'                                
            jQQQQQQWQW?^---"WWQQ'  _v,  )  _sss,                           
            mWQQQQQQQ[      ]WQQ.  von  -gamWWWQm,                         
           .QQQQQQQQQL  -'  ]WQQc  -*"  :QQQQQQQQm.                        
           =QQQQQQQQQQc    _mQQQQ,      jQQQQQQQQQ[                        
           )WQQQQQQQQWT'   ""!??TVas_aaQQQQQQQQQQQm                        
           :QQQQQQQD"  ___i__,__.   "!?$QQQQQQQQQQQ.                       
           -QQQQQQ! .%vnnonnoonnvvvi,,. -"$QQQQQQQQ[                       
            4QQQQ( _nvnvnvnvnvnvnnvnnnns=, "WQQQQQQf                       
            -QQQF _nnv}` -<vnvnvnvvnvnvvnn>. 4QQQQQf                       
             ]QQ` vvnv(   .nvnvnvnvnv~ .-Ins, 4QQQQ[                       
              4W .nvnvv,._%nnvnvnvnv=    =vvv. QWQW`                       
               4c <nvnvnnnvnvvnvvnvn;    :nnv; mQQf                        
                {. {vnvnvvnvnvnvnvnvs,  .%nv} _QWP                         
                 +. "{vvnnvnvnvnvnvnvnvvnvn}` yQD`                         
                   ._  --^""|{IIvvnvnvnvI"~ _mQP                           
                     "nwas,,,      ----  .<wQW!                            
                       -?VQQQQQmmgywwawwmQQQP`                             
                     _    -"?V$QQQQWWWQWWV!`                               
                    .QQa,       --"""""`     _yg,                          
            .__.    jQQQQQwaa,,          _swQQQQQa  3gw,                   
         _wmQQQQW'.jQQQWHVVWWWQQmgwwwwwyQ8?"` mQQQm, ?WWc                  
         ?HWWWWW^.jmT!`        -~""!"!^`    .wQQQQW#>                      
            ~"?' jP`                       _mQQQQQVXZa                     
                J^  _saaawaaass,,__.     _aQQQQQD' )ZZo.                   
              .u<ayQQQWWQWWWWWWQQQQQQQQQQQQQQQ@!   ]ZUZL                   
              jQQQQV?^--"?9$QQQQQQQQQQQQQQQQV"    _mXZUZ;                  
             _QQQF`          ~"!????T?TT??!`     <mXZZZUL                  
             ]QQQ,                             _wZXZZ#ZZZ,                 
              "?VQwwwwwwgmmwa,,            ._wXm#Z#ZZZZ#Z[                 
         .__.    -?$WWWWQQWQQQQQwwwwaaaawuwZ#ZZZZZZZ#Z#e"`                 
     _wgQP4QQQwa.   ?$WQQQQQQQQQQQWWWWWBXZZZUZUZ#2!4X7`   .sawyywas.       
   =mQQQW` $QQQWQa,   "$QQQQQQQQQQQQWBZZZUZ#ZZZZ"  %'     -4QQWQQQWQma.    
   d#QQQ[  ]QQQQQQQg,   "$QQQQQQQQB#ZZZZ#ZZZ2!^  _%         "9QQQQQQQWm,   
   #ZZWP   :QQQQQQQQQg,   4QQQQW#ZZZXXYY""~     _r  .wmc      -?$QQQQQQm   
   3#Z2     QQQQQQP4QQQw.  -~~----             _Z   yQQQQw,      ~9VQQQQ   
   +Ze     :QQQQQf ]QQQQm,                    <#(  jQQQQWWQQw,       "9Z   
    -      jQQQQP  ]WQQQQm.                ._wZZ   4WQQQQQQQQQQa,     .}   
        .adWQQQ@`  ]QQQQQQL   _____s_asaaomZ#ZU2    "?9WWQQQQQQQQWaaaum'   
       .XZXZWWP    jQQQQQQQ/  ]#Z####ZZXZUXZZZZC        -"9$QQWB#ZZZXZr    
         !SZ?^    .QQQQQQQQL  )ZZ#ZZZZUZUZZ#XY!^  _c.       ?SZZZZZZUX`    
                  jQQQQQQQQf   -""?Y?Y??!"~-      =WW#a,,     -"SZZ#2`     
                _dQQQQQQQQW'                       !XZ###qaaaaaaXZZ!       
                 -"YHQQQQ@'                         -?#XZZUZZXZXZ?`        
                      ~"^                              "YXZZZX?"`          
                                                           -               
                                                                           
int@sophi ~ $
ubik ()
Последнее исправление: ubik (всего исправлений: 2)
Ответ на: комментарий от Legioner

Отладочные символы увеличивают бинарник в разы, если не на порядки

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

в генте по этй причине даже фича compressdebug есть, символы стрипаются в отдельный файл, сжимаются и кладутся в /usr/lib/debug или куда-то туда и gdb как-то умеет с этим работать

Harald ★★★★★ ()

В каком дистрибутиве быстрей всего можно изменить код любого компонента и установить его модифицированную версию?

Любой достаточно популярный современный дистрибутив имеет хорошую инфраструктуру для его разработчиков. Достаточно немного вникнуть в использование apt-src для deb-based или SRPMs для RPM-based систем. Смысла держать исходники всех компонентов системы (а тем более debug-символы) никакого нет.

microdo3nik ()

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

Nastishka ★★★★★ ()

Дистрибутив для программистов

это дистрибутив в котором удобно будет работать программисту, разве нет?

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

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

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

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

такое окружение называется FVWM, где ты сам настраиваешь каждую деталь, каждый элемент поведения. после 10 лет за FVWM я пробовал в течении нескольских месяцев сидеть на KDE, Gnome, XFCE, всяких маргинальных dwm, cwm, и знаешь что? лучше FVWM пока ещё ничего не придумали. только FVWM даёт глубокую настройку поведения окон. например. ты можешь кликать по окну, но при этом окно не вылезет на передний план. это удобно, когда ты копируешь текст из браузера и вставляешь в консоль — браузер не перекрывает собой консоль, и тебе не нужно потом лишний раз делать Alt+Tab обратно. вот почему FVWM FTW.

во-вторых, сам дистрибутив не должен создавать тебе проблем. когда ты захочешь фичу N, ты полезешь гуглить, где эта фича включается в systemd. однажды дистрибутив не захочет загружаться на какой-нибудь btrfs, или же очередное обновление всё сломает. в каком-нибудь CRUX или NIX такого не произойдёт, например.

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

Ну ты и зануда. Из топика ведь понятно, какой дистрибутив хочет ТС.

CYB3R ★★★★★ ()

Да в любом, что deb, что rpm. Скачал сорцы и зависимости, поправил где надо, собрал по спеке в пакет, установил пакет. Не понравилось - снес собранный пакет и поставил старый

cobold ★★★★ ()

А что программисту от нечего делать нужно изучать исходники каждого пакета своего дистрибутива?

xmikex ★★★★ ()

Почему до сих пор никто не упомянул NixOS?

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

Ни разу такого делать не приходилось, но думаю, что можно создать оверлей, в котором с помощью функции overrideAttrs переопределить атрибут patches деривации. А если ты устанавливаешь пакеты декларативно (потому что смысл иначе использовать NixOS?), то можно обойтись и без оверлея.

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

после 10 лет за FVWM я пробовал … dwm, …

О! А расскажи какие ещё преимущества FVWM перед dwm? Я сам пользую последний и, если честно, не могу представить, что может быть удобнее и эффективнее. Возможно есть какие-нибудь скрытые фишечки у первого? Еслть мысла пощупать на досуге ☺

ubik ()

Однозначно - nixos. Если же хочется с FHS, то как-то смотрел в сторону Gentoo в том стиле, как оно сделано в chromeos/coreos. Или же надо брать embedded дистр вроде Yocto или Buildstream.
P.S. Ах, да - или любой BSD.

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

Да хоть арч. Скачал сорцы -> поправил -> собрал. В pacman есть настройка, сколько версий пакета хранить.

В общем, выбирай любой, по вкусу. Для полной свободы конечно больше Gentoo подходит.

InterVi ★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)