The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Обновление установочных сборок Void Linux , opennews (??), 17-Окт-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


19. "Обновление установочных сборок Void Linux "  +/
Сообщение от PunkRatOFF (?), 17-Окт-22, 11:51 
> Планировал однажды перейти на войд. Войд научил меня разметке диска при помощи
> cfdisk и прочих mkfs, до этого размечал через гуйный установщик моего
> дистра. Слез с войда сразу же, как только понял, что в
> нем нет удобного способа создавать свои пакеты -- нужно качать всю
> ихнюю гит-репу со всеми спеками пакетов и форкать ее у себя.

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

Ответить | Правка | Наверх | Cообщить модератору

29. "Обновление установочных сборок Void Linux "  +1 +/
Сообщение от Аноним (8), 17-Окт-22, 12:24 
Допустим, хочу я, чтобы был в системе мега-полезный скрипт, именуемый hello. Можно завести его в ~/.local/bin/hello, и все будет работать. Но только для одного пользователя. Если он нужен в системе, можно положить его куда-нибудь в /usr/local/bin/hello. Но проблема в том, что пакетный менеджер о его существовании не в курсе, и тебе нужно держать в голове, что "такой-то пакет удалять нельзя, потому что от него зависит мой скрипт".

На самом деле в любом дистре эта проблема решается через пакетный менеджер: скрипт суется в пакет и устанавливается именно в виде пакета, для которого указаны все зависимости. Я не видел ни одного дистра (кроме одного), в котором можно было бы создавать такой пакет очень быстро, за считанные минуты (а то и секунды). В войде, как уже сказал, придется форкать их git-репу. В федоре нужно заводить свою rpm-репу. А в благословенном NixOS тебе нужно просто дописать строчки в свой декларативный конфиг:

    environment.systemPackages = with pkgs; [(writeShellApplication {
      name = "hello";
      runtimeInputs = [coreutils gnused gnugrep]; # допустим, зависим от cat, sed, grep
      text = ''
        cat <<EOF
        Я - реальный пакет, установленный на уровне системы и доступный
        через \$PATH всем пользователям. Состою из /bin/hello, но также
        во мне могли бы быть /share/applications/*.desktop-файлы; в этом
        случае я был бы виден через гуйные запускатели приложух.
        EOF
      '';
    })];

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

    (polybar.override {
      i3Support = true;
      pulseSupport = true;
    }).overrideAttrs (old: {
      patches = (old.patches or []) ++ [
        ./0001-Consistent-units.patch
      ];
    })

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

Ответить | Правка | Наверх | Cообщить модератору

40. "Обновление установочных сборок Void Linux "  +/
Сообщение от PunkRatOFF (?), 17-Окт-22, 13:10 
>[оверквотинг удален]
>       i3Support = true;
>       pulseSupport = true;
>     }).overrideAttrs (old: {
>       patches = (old.patches or []) ++
> [
>         ./0001-Consistent-units.patch
>       ];
>     })
> Теперь попробуй довесить патч, изменить опции сборки или создать новый пакет в
> любом другом дистре, причем за считанные минуты.

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

Ответить | Правка | Наверх | Cообщить модератору

44. "Обновление установочных сборок Void Linux "  +/
Сообщение от Аноним (8), 17-Окт-22, 13:39 
Правильно.
Ответить | Правка | Наверх | Cообщить модератору

48. "Обновление установочных сборок Void Linux "  +/
Сообщение от Самый умный из вас (?), 17-Окт-22, 14:32 
Но только для тех, кто хорошо знает nix и все кишки nixpkgs. Я уже полгода убил на всю эту экосистему и все равно иногда некоторые задачи вызывают ступор)
Ответить | Правка | Наверх | Cообщить модератору

50. "Обновление установочных сборок Void Linux "  +/
Сообщение от Аноним (32), 17-Окт-22, 14:56 
Запилют значит Манжаровойд и вего делов.D
Ответить | Правка | Наверх | Cообщить модератору

57. "Обновление установочных сборок Void Linux "  +/
Сообщение от Аноним (8), 17-Окт-22, 16:14 
NixOS не для слабых духом.
Ответить | Правка | К родителю #48 | Наверх | Cообщить модератору

58. "Обновление установочных сборок Void Linux "  +/
Сообщение от PunkRatOFF (?), 17-Окт-22, 16:33 
> Правильно.

ОК, скорее соглашусь, но доверясь вам и тому, что я пока что накопал про NixOS, если его не брать во внимание, то действительно "удобный способа создавать свои пакеты" в самом дистрибутиве, на мой взгляд, из того что я знаю, это в Gentoo и подобных.
Да, реализация несколько крива и неуклюжа с технической точки зрения, но ведь разговор именно про удобство создания своих пакетов. Быть сам себе мейнтейнером, если знаешь как, при прочих равных, много проще в гентушных системах, нежели в тех же rpm, а уж тем более в замороченном deb.

За NixOS ничего не могу сказать, самому интересна эта система, но я неосилил пока уделить время, чтобы погрузиться и разобраться, но выглядит очень интересно, по крайней мере концепция с nix-пакетником. Гораздо разумнее, на мой взгляд, нежели решения с жирноснапами и флатпаками.

Ответить | Правка | К родителю #44 | Наверх | Cообщить модератору

51. "Обновление установочных сборок Void Linux "  +/
Сообщение от vrms (ok), 17-Окт-22, 15:03 
>В войде, как уже сказал, придется форкать их git-репу

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

>Теперь попробуй довесить патч, изменить опции сборки или создать новый пакет в любом другом дистре, причем за считанные минуты.

В арчах-гентах-слаках такое изи делается, а то шо deb и rpm не для людей — ну щито поделать десу.
Вот например арчевский PKGBUILD, который будучи скормленным makepkg упакует скрипт в настоящщий пакет:

pkgname=henlo
pkgver=1
pkgrel=1
pkgdesc="Хелловорлд скрипт, установленный как настоящий™ пакетЪ"
arch=('any')
depends=('bash')
source=('henlo')
sha256sums=('') #можно сгенерить с помошью makepkg -g или пропустить вписав SKIP
package(){
        cd ${srcdir}
        install -Dm755 henlo "${pkgdir}/usr/bin/henlo"
}

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

Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

53. "Обновление установочных сборок Void Linux "  +/
Сообщение от Аноним (8), 17-Окт-22, 15:49 
> В чем сложность?

В том, что конфиг твоей системы теперь как минимум в двух гит-репах: твой собственный + форк войда.

> довольно неплохо сделано

Погугли, как люди оформляют свои оверлеи к войду. Спойлер: через костыли. В никсоси напротив, оверлеи - это штатный механизм.

> Вот например арчевский PKGBUILD

А как в нем сделать "наследуемся от PKGBUILD, предоставляемого дистром, и довешиваем туда доп. патч и применяем еще одну опцию сборки"? В никсоси есть override{,Attrs}. Мейнтейнеры nixpkgs обновят версию полибара, а у меня он сам автоматически заоверрайдится с нулевыми усилиями с моей стороны.

Да и чтобы оформить пакет, тебе пришлось создать два файла: собственно скрипт + PKGBUILD. В никсоси свой пакет можно оформлять по месту. К примеру, конфигурируем гит и тут же рядом кладем скрипт, оформленный правильно как пакет:

    programs.git.config = {
      init.defaultBranch = "master";
      alias = {
        "co" = "checkout";
        "s"  = "status";
      };
    };
    environment.systemPackages = [(writeShellApplication {
      name = "git-my-custom-command";
      runtimeInputs = with pkgs; [coreutils git];
      text = ''
        # не пришлось создавать отдельные файлы,
        # реализация кастомной гит-команды
        # находится рядом с конфигом гита
      '';
    })];

Ответить | Правка | Наверх | Cообщить модератору

91. "Обновление установочных сборок Void Linux "  +/
Сообщение от Аноним (88), 18-Окт-22, 10:26 
Он же PKGBUILD из Арча показывает, а не из Void'а.

Замечу, что тот на понятном всем (админам) Shell написан, а не на Nix-тарабарщине с матрешками из десяти видов скобочек. И выполняется этот сборочный скрипт (за вычетом времени сборки ПО) за секунды, без безумного потребления памяти, а не как у некоторых гениальных стартаперов.

> сам автоматически заоверрайдится с нулевыми усилиями

И нулевыми гарантиями работоспособности. А то ещё и в `rm -rf /` нечаянно-негаданно соберётся.
Когда благоразумный админ другого дистра просто устранит конфликт слияния руками в скриптах сборки и будет уверен, что ничего не сломалось, что все патчи актуальны для новой версии ПО и т.п.
Вероятно, одна из причин, почему в Nix всё так прекрасно собирается, верифицируется с доказательствами теорем, а половина ПО из оф-репы нормально не работает.

> не пришлось создавать отдельные файлы

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

Про гит-репы вообще не понял. Мы точно с одной планеты? В Арче вполне можно выкачивать, редактировать и собирать отдельный скрипт сборки в отдельном репо. А вот в Nix все (sic!) определения (sic!) пакетов, даже те, которые не установлены, а просто есть в подключенном репо, не просто скачиваются в систему, но и вычисляются при каждой "пересборке" одного единственного. И чем больше репозиторий, тем больше памяти нужно, чтобы в один прекрасный день обновление системы не сорвалось. Масштабируемость? Не, не слышали. И какое решение проблемы предлагают разработчики? Вы таки не поверите, каждому самостоятельно создавать копии репозиториев без "лишних" пакетов и одной парой ручек переносить все изменения. Ну где тут лучше, чем у других? Значительно хуже.

Ответить | Правка | Наверх | Cообщить модератору

95. "Обновление установочных сборок Void Linux "  +/
Сообщение от Аноним (8), 18-Окт-22, 14:38 
> на понятном всем (админам) Shell написан

Задачи нужно решать на своих уровнях, а не каждый раз с нуля. К примеру, в никсоси решена проблема "установки абстрактного, любого шелл-скрипта": https://github.com/NixOS/nixpkgs/blob/46872026bdb05e1487923f... - заметь, что помимо всего прочего над твоим скриптом выполняется dry run и shellcheck, а к нему еще и присобачивается set -o errexit и прочие вещи; в PKGBUILD оппонента ничего из этого нет, просто голый install. Если в будущем появится новый инструмент для проверки скриптов, то его добавят в writeShellApplication, что применит его ко всем одиночным скриптам сразу.

> нулевыми гарантиями работоспособности

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

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

То есть по-твоему в никсоси конфликты просто глушатся? Нет, выдается лог с ошибками применения патча, лол.

> надо по гигантскому файлу что-то искать?

Почему по гигантскому, я привел выдержку из своего 50-строчного git.nix, в котором собраны все мои предпочтения по гиту: алиасы, кастомные команды, дополнительные системные пакеты и т.д. Ни в каком дистре ты не сможешь все эти связные вещи объединить в один файл (ну ладно, сможешь, если оформишь самораспаковывающийся .run-файл, который положит куда надо конфиги, распакует PKGBUILD со скриптами, соберет и установит его, лол).

> вычисляются при каждой "пересборке" одного единственного

Откровенное вранье, ибо в nix все вычисляется лениво. Подгружается в память - да, вычисляется - нет. Да и выполняется у меня nixos-rebuild switch от силы секунд 5 ("за вычетом времени сборки ПО"), так что твоя проблема надумана.

Ответить | Правка | Наверх | Cообщить модератору

73. "Обновление установочных сборок Void Linux "  +/
Сообщение от Аноним (73), 17-Окт-22, 19:52 
Откуда вы лезете? Емнип, десу 'шо'. Компьютерные 'гении' скоро язык позабудут.
Ответить | Правка | К родителю #51 | Наверх | Cообщить модератору

98. "Обновление установочных сборок Void Linux "  +/
Сообщение от Аноним (96), 18-Окт-22, 15:55 
Чем не понравился nixos - все на nix. Даже настройка граба - nix. Везде этот nix - даже там, где не особо уместен и не нужен. Ваши знания из других дистрибутивов становятся бесполезны. Ваши знания и опыт из nixos - бесполезен в отличном от nixos.
Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру