Package maintainer guide (Galego)
Benvido ao Package Maintainer Guide of Parabola GNU/Linux (Guia do Mantenedor de paquetes de Parabola GNU/Linux).
Este artículo describe os pasos necesários para comezar a traballar nos nosos repositorios. Se vai facer un novo reemplazo libre para algún paquete, consulte a nosa guía para a creación de reemplazos libres.
En primero lugar, tratar de pasar pola canle #parabola e suscribirse a lista de correo dev list . Se surxe algo importante, vostede o encontrara alí.
Ademais, debe rexistrarse no seguimento de incidencias, para que poidamos asinar tarefas ou vostede poida escoller alguns pola súa cuenta.
Contents
Ferramentas
Instale libretools. Tamén vai instalar ssh, rsync, git, devtools, que son as ferramentas necesárias para o paquete.
# pacman -Sy libretools devtools
Editando /etc/libretools.conf
A configuración para o libretools está en
## Blacklist URL BLACKLIST=http://repo.parabolagnulinux.org/docs/blacklist.txt # Diff tool (vimdiff, gvimdiff, meld, etc) DIFFTOOL=vimdiff # The dir where you work on WORKDIR=/home/$USER/packages # The repos you'll be packaging for # Tip: As early repos take precedence on $REPOS loops, you can use this as # inverted order of precedence. Put testing repos first so fullpkg find new # PKGBUILDs first, for instance. REPOS=('core' 'extra' 'community' 'libre' 'libre-testing' 'social' 'sugar') # The architectures ARCHES=('i686' 'x86_64' 'mips64el' 'any') ## The directory where the chroots are stored CHROOTDIR=/home/chroot ## The working chroot # A chroot is useful to build packages isolated from the current system and avoid # unwanted (as in not in dependencies) automatic library linking CHROOT=root ## Obtains CacheDir from pacman.conf CACHEDIR=`grep "^#\?CacheDir" /etc/pacman.conf | cut -d'=' -f2` ## Parabola hostname (should be the same used on ssh_config PARABOLAHOST=parabola ## Run a command before releasing a package (ie. SSH connection, SSH tunnel, etc.) HOOKPRERELEASE="ssh -fN parabola" ## Server destination of libre packages # Don't change unless you know what you're doing and you won't screw # anything ;) LIBREDESTDIR=/srv/http/repo/public ## ABSLibre ABSLIBREGIT=http://projects.parabolagnulinux.org/abslibre.git ## Commit Command ## Should be git or hg ## Uncomment only one of those #COMMITCMD=git #COMMITCMD=hg ## Build cmd for fullpkg-ng ## Uncomment one of those or make one of your choice FULLBUILDCMD="sudo libremakepkg -cumL -M --noconfirm -M --nocheck" #FULLBUILDCMD="here is a place for cross-compiling build cmd" ## Toru # Section for toru's vars TORUPATH=/var/lib/libretools/toru ## Package signing # Leave commented to disable signing #SIGEXT=".sig" #SIGID="0xYOURID" # Checks if vars aren't empty for VAR in CHROOTDIR CHROOT CACHEDIR PARABOLAHOST LIBREDESTDIR \ BLACKLIST WORKDIR REPOS ARCHES ABSLIBREGIT \ COMMITCMD DIFFTOOL FULLBUILDCMD; do ret=0 [[ -z ${!VAR} ]] && { echo "Configure $VAR var in /etc/libretools.conf" ret=1 } [ $ret -ne 0 ] && exit 1 done source /usr/bin/libremessages ## These are architecture specific files. ## Uncomment them if you installed libretools-arch #source /etc/libretools.d/mips64el.conf #source /etc/libretools.d/x86_64.conf #source /etc/libretools.d/i686.conf ## Recommended SSH Config follows # SSH host, it's better if you have it configured on ~/.ssh/config # with ControlMaster auto (and a shell opened somewhere else) # # Example: # Host * # Protocol 2 # ControlMaster auto # ControlPath /tmp/ssh-%r@%h:%p # ## Repo server # Host parabola # Port 22 # HostName repo.parabolagnulinux.org # User parabolavnx # IdentityFile ~/.ssh/id_rsa # ## Git server # Host vparabola # Port 1863 # HostName parabolagnulinux.org # User parabola # IdentityFile ~/.ssh/id_rsa
Podes poñer a tua propia configuración por usuario ~/.config/libretools/libretools.conf en lugar do global en /etc/libretools.conf.
Terá que editar este ficheiro:
# $EDITOR /etc/libretools.conf
Configurar CHCOPY
Ao traballar con chroots, hai o chroot principal ($CHROOTDIR/root), e unha copia de traballo del, CHROOTDIR$/$chroot. É máis doado se definir chroot para o seu nome de usuario.
## The working copy CHCOPY=$USUARIO
Elixa un COMMITCMD
Primeiro elixir un commitcmd:
## Uncomment only one of those COMMITCMD=git #COMMITCMD=hg
Engadir firma GPG
A continuación, proporcione unha chave pública GnuPG para firmar o paquete:
Se non ten unha clave pública GnuPG pode utilizar o seahorse para construír unha clave utilizando o RSA 2048 e exportalo para gardalo.
Use a peza da chave ID no SIGID e descomente a liña correspondente:
## Package signing # Leave commented to disable signing #SIGEXT=".sig" #SIGID="0xSUAID"
Trocar ABSLIBREGIT
Se necesita forzar a abslibre.git (se vostede está mantendo un paquete), entonces necesitas editar ABSLIBREGIT:
## ABSLibre ABSLIBREGIT=ssh://git@parabolagnulinux.org:1863/abslibre.git
Se xa se copiou o repositorio, para cambiar esto a after-the-fact (despois dos feitos), edite
[remote "origin"] url = ssh://git@parabolagnulinux.org:1863/abslibre.git
Entorno de empaquetamento
O empaquetamento pode ser desordenada e converterse nunha carga (ao igual que calquera tarefa repetitiva). Libretools existe para facela máis lixera.
Directorio Chroot
Vai a precisar dun entorno de empaquetamento limpo para asegurarse de que os paquetes, funcionen en cada sistema de parábola a pesar da configuración e os paquetes que tes no teu. Para iso está o chroot.
Debe crear dentro un directorio chroot para a construción de paquetes. Isto tamén pode axudar a identificar as dependencias que faltan e manter o seu sistema limpo todos os días tamén. O xeito máis doado de facelo para ser executado é
# libremkchroot -C /etc/pacman.conf -M /etc/makepkg.conf
Debes cambiar CHROOTDIR, CHROOT, CHCOPY en /etc/libretools.conf de acordo a configuración do seu chroot.
Directorio de traballo libretools
Para minimizar os erros nos paquetes de carga, creamos ferramentas automáticas para o proceso, noso libretools utiliza a xerarquía de directorios do noso repositorio.
Hai un script que lle axudará a xenerar directorio de traballo adecuado , asombrosamente chamado createworkdir
. Execute isto, e creará todos os directorios necesarios, ademais que git-clone fará a árbore ABSLibre para ti.
$ createworkdir
Pode encontrar máis información sobre a arbore de directorio aquí.
Host de Parabola para a configuración do seu ssh
Debe agregar isto ao seu ~/ssh/config:
Host parabola Port 1863 HostName repo.parabolagnulinux.org User repo
E enviar o súa chave publica (~/.ssh/id_rsa.pub o nome personalizado) a Parabola mailing list.
Se vostede desexa o nombre do seu host diferente, tamén debe cambiar o seu'''PARABOLAHOST=nome_personalizado'''
Creación de paquetes
Para facer un librepackage, só necesitas do PKGBUILD de abslibre. Para actualizar no seu abslibre $ WORKDIR só debes facer:
$ updateabslibre
Só necesitas "copiar ou enlazar os ficheiros desde abslibre e facer:
$ cd /directory/where/your/PKGBUILD/is # libremakepkg -cu
-u opción para libremakepkg actualizar o chroot root antes de crear o paquete
-c opción para libremakepkg limpar a copia de chroot antes de construir o paquete
Cando isto termine terá un paquete de ${PKGDEST} especificado no ficheiro /etc/makepkg.conf.
Comprobe a páxina de libremakepkg para unha descripción de como traballa o libremakepkg.
Creando paquetes
Por favor, siga esta guia: Creating -libre packages
Subir paquetes
Para subir paquetes no noso repositorio, so ten que facer:
$ librestage {repo-to-upload} $ librerelease
Consellos e trucos
Liberando vários paquetes ao mesmo tempo
Orixinalmente, librerelease debería decidir onde poñer un paquete e subilo ao repositorio servidor inmediatamente. Agora, librestage fai a primera parte e librerelease fai a segunda, entón na práctica, podes facer vários paquetes e etapas para subilos máis tarde.
Organizando un só paquete para vários repositorios
Toma nota, librestage acepta varios nomes de repositorios como argumento. Se o fai, poderase organizar o paquete(s) en todos eles, o que permite cargar os paquetes en calquera número de repositorios que desexe. Non é unha función para abusar, pero é útil mentras migran a repositorios [libre] e [libre-testing]... por exemplo, terás que liberar a [core] e [libre], o [testing] e [libre-testing] ao mesmo tempo.
Control MD5sum
Se cambias a matriz de fontes nun PKGBUILD, terás que cambiar a matriz md5sums para poder reflexar o teu. Retírea do PKGBUILD e a utlización deste comando para xenerar md5sum para os teus paquetes:
$ makepkg -g >> PKGBUILD
Conexión SSH para Parabola
Asegúrese de que os permisos en /home/${user}/.ssh sexan 700:
$ chmod 700 * *.*
Se añadeu o host de parabola para o teu ~/.ssh/config, podes simplemente facer:
$ ssh parabola