¿Cómo creo un PPA?

Respuestas:

97

Usando un archivo de paquete personal ( PPA ), puede distribuir software y actualizaciones directamente a los usuarios de Ubuntu. Cree su paquete fuente, cárguelo y Launchpad creará binarios y luego los alojará en su propio repositorio apt.

Aquí hay una explicación detallada .

hhlp
fuente
55
FWIW Pude activar mi PPA antes de firmar el código de conducta.
Sparhawk
2
Esta es la mejor respuesta. Acaban de decirle cómo crear un PPA. La respuesta a continuación (por totti) no es un PPA, pero es un repositorio público. Los dos son diferentes, a pesar de (potencialmente) lograr lo mismo. Incluso dice en la primera línea de su respuesta: "Esta pregunta tiene una respuesta bien escrita y aceptada. Como el OP quiere una manera simple de publicar sus paquetes, estoy dando un truco fácil". Porque prefieres el truco fácil no es la mejor respuesta.
lbaile200
OK, pero ninguno de los enlaces en esta respuesta realmente describe cómo hacerlo desde cero. todos los enlaces aquí están hechas para los desarrolladores, que ya se encuentran en el material mucho más
rubo77
1
@ rubo77: el "cómo crear" es estrictamente demasiado amplio para responder. Todo depende de lo que intente empaquetar. De hecho, cada uno de los pasos en la respuesta anterior puede ser Q individual con una buena respuesta detallada cada uno.
fossfreedom
1
La nueva respuesta de Totti ya es genial
rubo77
86

Cómo crear un archivo .deb

Este es un tutorial sobre cómo crear un archivo .deb básico a partir de un script de muestra dado. En este tutorial primero creamos un programa de muestra en bash que solo muestra 'HOLA DEL PROGRAMA'. Luego creamos un archivo de control para el programa con el fin de hacer un instalador de Debian. Finalmente se empaquetan en un .debarchivo.

Pasos:

  1. crear un programa de muestra en bash

    mkdir "$HOME/create_deb/pgmdir"
    gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
    

    pegue el siguiente código en él

    #!/bin/bash
    echo 'HELLO FROM PROGRAM' | zenity --text-info 
    
  2. Hacer el programa ejecutable

    chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
    
  3. Crear archivo de control para el paquete debian

    Hacer un archivo llamado controldentro de la carpetaDEBIAN

    mkdir "$HOME"/create_deb/DEBIAN
    gedit "$HOME"/create_deb/DEBIAN/control
    

    y pegue los siguientes detalles

    Package: hellodeb
    Version: 0.1
    Architecture: all
    Maintainer: totti
    Installed-Size: 6
    Depends: zenity, bash
    Section: testing
    Priority: optional
    Homepage: http://askubuntu.com
    Description: This is my first debian package.
     Guided by Totti Torvalds.
     In Description new line start with a space.
    

    Puede editar el contenido si lo desea. Lea más sobre el formato de este archivo aquí y aquí .

  4. Crear postinstscript, que se ejecuta inmediatamente después de la instalación del paquete

    gedit "$HOME"/create_deb/DEBIAN/postinst
    

    luego pegar

    #!/bin/sh
    set -e
    echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
    

    y hacerlo ejecutable

    chmod +x "$HOME/create_deb/DEBIAN/postinst"
    
  5. Crear prermscript, que se ejecuta antes de eliminar el paquete

    #!/bin/sh
    set -e
    echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
    

    y hacerlo ejecutable

    chmod +x "$HOME/create_deb/DEBIAN/prerm"
    
  6. Realice la estructura del paquete y copie programas, datos, etc.
    Cree una estructura de sus programas instalados y sus datos. En este ejemplo ponemos el archivo en /bin.

    mkdir -p "$HOME"/create_deb/bin
    cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
    
  7. Construya el archivo .deb .

    dpkg-deb --build "$HOME"/create_deb .
    

    El .nombre automático del .debarchivo con versión, arco, etc. O su nombre personalizado

    dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
    

    O si crea el archivo .deb con

    debuild -k'your GPG key here' -S
    

    entonces puedes subirlo a Ubuntu Launchpad con

    dput ppa:<lp-username>/<ppa-name> packet-source.changes
    

    como se describe aquí (fuente: crear un paquete .deb a partir de scripts o binarios )

  8. Instale el .debpaquete recién creado . Puede abrirlo software-centerpero puede que no le permita instalarlo. Así que recomiendo usar el gdebiadministrador de paquetes.

    sudo apt-get install gdebi
    
    gdebi "$HOME"/create_deb/hellodeb.deb
    

    Ahora puedes instalarlo. Durante la instalación, debería ver un diálogo gtk

    Instalando el programa: zenity_hello.sh ......

  9. Después de la instalación, abra una terminal y escriba zenity_hello. Si el programa se instaló correctamente y todo está bien, debería ver un diálogo de GTK

    HOLA DEL PROGRAMA

  10. Eliminando paquete

    sudo apt-get remove zenity_hello
    

Publique su repositorio en 2 minutos

Como el OP quiere una manera simple de publicar sus paquetes, estoy dando un truco fácil.

requisito: dropbox (o cualquier otro servicio, por ejemplo github ) cuenta con una carpeta pública.

  1. Cree una carpeta dentro de su Carpeta pública de Dropbox donde coloque sus archivos * .deb:

    mkdir ~/Dropbox/Public/deb-packages  
    

    o cree esa carpeta en otro lugar y coloque un enlace simbólico en su carpeta pública:

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. Vaya a esa carpeta y cree un script que, cuando se ejecute, cree los Paquetes.gz, que contiene toda la información necesaria sobre sus paquetes de deb. crear:

    gedit import.sh  
    

    pon esto en esto:

    #!/bin/bash
    dpkg-scanpackages . /dev/null |gzip > Packages.gz
    

    hazlo ejecutable:

    chmod  x import.sh
    
  3. Copie algunos archivos * .deb en la carpeta. Podría ser el suyo o algunos que no están disponibles a través de otros repositorios. Luego vaya a la carpeta y ejecute el script que ponemos allí:

    cd ~/deb-packages/ 
    ./import.sh
    

    Eso debería crear el llamado archivo Packages.gz , que apt busca para saber qué paquetes se encuentran en este repositorio.


Eso es

Ahora, espere a que Dropbox sincronice la carpeta y tome la URL pública dePackages.gz . Debería verse más o menos así:

http://dl.getdropbox.../Packages.gz

Deshazte del final de ese enlace, ponle algunas palabras más y ahora puedes usar y completar la siguiente línea para las fuentes.list:

deb http://dl.getdropbox.../deb-packages ./

Eso es todo, tienes tu propio repositorio de Deb funcionando. Siempre sincronizado localmente, pero disponible para cualquier persona, en cualquier momento y en cualquier lugar.

NOTA: dpkg-scanpackages está disponible como dpkg-dev
referencia

totti
fuente
3
+1 ¡Genial! esto funcionó: utilicé Github y allí el directorio sin formato para una carpeta, releases/consulte github.com/rubo77/mouse-speed/blob/master/release/…
rubo77
Esto describe un auto alojado PPA, pero ¿cómo puedo construir un paquete Debian Ubuntu
rubo77
3
Si compila el archivo .deb en el paso 7. con debuild -us -uc -k'your GPG key here', puede cargarlo dput ppa:<lp-username>/<ppa-name> packet-source.changesen Launchpad como se describe aquí (fuente: crear un paquete .deb a partir de scripts o binarios )
rubo77
@ rubo77, gracias, le doy la bienvenida a agregar esta información al final de mi respuesta.
totti
1
OK, lo acabo de hacer, también descubrí que necesita otros parámetros para que Launchpad no cree el archivo .deb en este momento (solo -S): debuild -k'your GPG key here' -Sporque Launchpad creará el archivo deb (si no se rechaza) - qué ¿Habría sido el `-us -uc`?
rubo77
2

Necesitará una cuenta Launchpad.net para crear un PPA. Simplemente haga clic en su usuario en Launchpad (haga clic en su nombre en la esquina superior izquierda) y cree un PPA. Es posible que primero deba firmar el Código de conducta y tener una clave GPG registrada en su cuenta.

GTRsdk
fuente