Next: Пакетные модули в поддиректории, Previous: Каналы с заменителями, Up: Каналы [Contents][Index]
Let’s say you have a bunch of custom package variants or personal packages that you think would make little sense to contribute to the Guix project, but would like to have these packages transparently available to you at the command line. By creating a channel, you can use and publish such a package collection. This involves the following steps:
mkdir my-channel cd my-channel git init
For example, Alice might want to provide a module called (alice
packages greetings)
that will provide her favorite “hello world”
implementations. To do that Alice will create a directory corresponding to
that module name.
mkdir -p alice/packages $EDITOR alice/packages/greetings.scm git add alice/packages/greetings.scm
You can name your package modules however you like; the main constraint to
keep in mind is to avoid name clashes with other package collections, which
is why our hypothetical Alice wisely chose the (alice packages
…)
name space.
Note that you can also place modules in a sub-directory of the repository; see Пакетные модули в поддиректории, for more info on that.
guix build
, which needs to be
told to look for modules in the Git checkout. For example, assuming
(alice packages greetings)
provides a package called
hi-from-alice
, Alice will run this command from the Git checkout:
guix build -L. hi-from-alice
... where -L.
adds the current directory to Guile’s load path
(see Load Paths in GNU Guile Reference Manual).
git commit
Как автор канала, рассмотрите возможность объединения материалов для аутентификации с вашим каналом, чтобы пользователи могли его аутентифицировать. See Аутентификация канала и Указание авторизаций канала для получения информации о том, как это сделать.
guix pull
(see Вызов guix pull
):
$EDITOR ~/.config/guix/channels.scm guix pull
Guix will now behave as if the root directory of that channel’s Git
repository had been permanently added to the Guile load path. In this
example, (alice packages greetings)
will automatically be found by
the guix
command.
Voilà!
Внимание: Before you publish your channel, we would like to share a few words of caution:
- Перед публикацией канала, пожалуйста, рассмотрите возможность поделиться вашими определениями пакетов со сборником Guix (see Содействие). Guix, как проект, открыт свободному программному обеспечению любого назначения, и пакеты в сборнике Guix готовы и доступны для использования всеми пользователями Guix и прошли проверку качества.
- Package modules and package definitions are Scheme code that uses various programming interfaces (APIs). We, Guix developers, never change APIs gratuitously, but we do not commit to freezing APIs either. When you maintain package definitions outside Guix, we consider that the compatibility burden is on you.
- Вывод: если вы используете внешний канал, и этот канал ломается, пожалуйста, заявите об этой проблеме авторам каналв, но не в проект Guix.
Вы предупреждены! Обозначив это, мы верим, что внешние каналы — это способ для вас проявлять свою свободу и вместе с тем расширять коллекцию пакетов Guix и делиться улучшениями, что является основными догматами свободного программного обеспечения. Пожалуйста, свяжитесь с нами по e-mail guix-devel@gnu.org, если вы хотите обсудить это.
Next: Пакетные модули в поддиректории, Previous: Каналы с заменителями, Up: Каналы [Contents][Index]