Cheat Sheet for dpkg/apt-get

  • Apt/Dpkg: Beyond the basic use of installing programs, apt and dpkg have many features that are useful for packaging.
    • apt-cache dump – lists every package in the cache. This command is especially helpful in combination with a grep pipe such as apt-cache dump | grep foo to search for packages whose names or dependencies include “foo”.
    • apt-cache policy – lists the repositories (main/restricted/universe/multiverse) in which a package exists.
    • apt-cache show – displays information about a binary package.
    • apt-cache showsrc – displays information about a source package.
    • apt-cache rdepends – shows reverse dependencies for a package (which packages require the queried one.
    • dpkg -S – lists the binary package to which a particular file belongs.
    • dpkg -l – lists currently installed packages. This is similar to apt-cache dump but for installed packages.
    • dpkg -c – lists the contents of a binary package. It is useful for ensuring that files are installed to the right places.
    • dpkg -f – shows the control file for a binary package. It is useful for ensuring that the dependencies are correct.
    • grep-dctrl – searches for specialized information in packages. It is a specific use of the grep package (but not installed by default).

Empacando en ubuntu/debian

La guía para hacer paquetes para ubuntu y debian, aquí.

openSUSE Junior Jobs

El programa Junior Jobs de openSUSE permite a programadores sin mucha experiencia en Linux y en empacar programas para el sistema, participar en las actividades de desarrollo de la distribución openSUSE.

Comenzar es muy sencillo. Hay que ir a este wiki para ver que tareas están pendientes por realizar, que son, principalmente, bugs que son fáciles de solucionar, pero que, como todo, lleva tiempo hacerlo.

Cuando un bug es marcado como Junior Jobs no significa que al desarrollador no le interesa más, es más bien el hecho de que tiene otros bugs que tienen mayor prioridad y que cuando termine con esos, continuará con los junior, si es que nadie los hizo antes.

El flujo de trabajo que se sigue con los junior jobs es el siguiente:

  1. El Mantenedor decide que bug es “junior”
  2. El Mantenedor pone un JJ: en el título del bug
  3. El junior busca estos bugs con: http://tr.im/opensusejj
  4. El junior añade un comentario comentando de su interés en arrreglar el bug y el tiempo que piensa que le llevará.
  5. El junior arregla el bug, envía el parche upstream, hace un submitrequest y pone el número de solicitud en el bug como comentario.
  6. El mantenedor revisa el parche, lo acepta o no haciendo algún comentario y listo!

Cómo arreglar un bug.

  1. crea tu propio branch: osc branch openSUSE:Factory package
  2. Baja los fuentes: osc co home:login:branches:project/package
  3. Cambia al directorio adecuado cd home:login:branches:project/package
  4. If you need to patch anything, quilt may be usefull
  • Desempaca el software
    quilt setup package.spec
  • Ve al directorio adecuado de nuevo
  • cd unpacked_package_directory
  • Aplica todos los parches
    quilt push -a
  • Crea el nuevo parche
    quilt new package-version-brief-description.patch
  • Añade los archivos a modificar
    quilt add file
  • Modifica los archivos (esto puede hacerse con quilt edit file)
  • Crea el parche final
    quilt refresh -p0 package-version-brief-description.patch
  • No olvides marcar los nuevos parchesy y añadir una entrada al archivo .changes usando osc vc
  • Despues de arreglar todo, y reportar los arreglos upstream, solo resta enviar los cambios al build service con:
    • corre primero esto, si es que añadiste o borraste archivos
      osc addremove
    • has commit de los cambios
      osc commit
    • y envia un submitrequest al mantenedor
      osc sr -m 'Fixed bug #1234'
  • Y por supuesto reporta esto en bugzillla, que el bug esta arreglado y en donde.
    • Algo como “Fixed sent to the devel project as sr#456
  • Despues que lo acepten, tu nombre estara en el changelog para siempre.

Imagen: Flickr

SUSE OBS Tricks 2008

- Forcing a package to be installed in your jail

- disabling devel files checking in rpmlint.

- adding debugging to your package

- How to package java programs properly?

- How to tag your patches for gnome

- SUSE Insanities

- Create lighter packages, use -lang subpackages

That’s all folks!