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
1 Ferramentas
Instale libretools. Tamén vai instalar ssh, rsync, git, devtools, que son as ferramentas necesárias para o paquete.
# pacman -Sy libretools devtools
2 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
2.1 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
2.2 Elixa un COMMITCMD
Primeiro elixir un commitcmd:
## Uncomment only one of those COMMITCMD=git #COMMITCMD=hg
2.3 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"
2.4 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
3 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.
3.1 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.
3.2 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í.
3.3 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'''
4 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.
5 Creando paquetes
Por favor, siga esta guia: Creating -libre packages
6 Subir paquetes
Para subir paquetes no noso repositorio, so ten que facer:
$ librestage {repo-to-upload} $ librerelease
7 Consellos e trucos
7.1 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.
7.2 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.
7.3 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
7.4 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