The OpenNET Project / Index page

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



"Обновление установочных сборок Void Linux "
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Обновление установочных сборок Void Linux " +1 +/
Сообщение от Аноним (29), 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ообщить модератору

Оглавление
Обновление установочных сборок Void Linux , opennews, 17-Окт-22, 08:21  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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