Next: , Previous: , Up: Canales   [Contents][Index]


6.7 Creación de un canal

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:

  1. A channel lives in a Git repository so the first step, when creating a channel, is to create its repository:
    mkdir my-channel
    cd my-channel
    git init
    
  2. The next step is to create files containing package modules (see Módulos de paquetes), each of which will contain one or more package definitions (see Definición de paquetes). A channel can provide things other than packages, such as build systems or services; we’re using packages as it’s the most common use case.

    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 Módulos de paquetes en un subdirectorio, for more info on that.

  3. With this first module in place, the next step is to test the packages it provides. This can be done with 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).

  4. It might take Alice a few iterations to obtain satisfying package definitions. Eventually Alice will commit this file:
    git commit
    

    Como autora de un canal, considere adjuntar el material para la identificación a su canal de modo que las usuarias puedan verificarlo. See Verificación de canales, y Especificación de autorizaciones del canal, para obtener información sobre cómo hacerlo.

  5. To use Alice’s channel, anyone can now add it to their channel file (see Especificación de canales adicionales) and run guix pull (see Invocación de 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à!

Aviso: Before you publish your channel, we would like to share a few words of caution:

¡Ha quedado advertida! Habiendo dicho esto, creemos que los canales externos son una forma práctica de ejercitar su libertad para aumentar la colección de paquetes de Guix y compartir su mejoras, que son pilares básicos del software libre. Por favor, envíenos un correo a guix-devel@gnu.org si quiere hablar sobre esto.


Next: Módulos de paquetes en un subdirectorio, Previous: Channels with Substitutes, Up: Canales   [Contents][Index]