¿Cómo obtengo y modifico el código fuente de los paquetes instalados a través de apt-get?

146

Supongo que todas las aplicaciones instaladas a través de apt-get son de código abierto; pero para aquellos que están disponibles de esa manera, ¿dónde puedo obtener el código fuente para estas aplicaciones y actualizarlas?

Tengo un par de aplicaciones que uso regularmente y que ya no se están desarrollando activamente y me gustaría agregar funciones. ¿A dónde iría para obtener los derechos para actualizar estas aplicaciones?

En este caso específicamente, me refiero al paquete hellanzb

    
pregunta myusuf3 27.02.2011 - 22:52

5 respuestas

172

Use el comando apt-get source <package> (no use sudo con él) para descargar la fuente de un paquete.

de man apt-get :

   source
       source causes apt-get to fetch source packages. APT will examine the
       available packages to decide which source package to fetch. It will then
       find and download into the current directory the newest available version of
       that source package while respect the default release, set with the option
       APT::Default-Release, the -t option or per package with the pkg/release
       syntax, if possible.

       Source packages are tracked separately from binary packages via deb-src type
       lines in the sources.list(5) file. This means that you will need to add such
       a line for each repository you want to get sources from. If you don't do
       this you will properly get another (newer, older or none) source version
       than the one you have installed or could install.

       If the --compile option is specified then the package will be compiled to a
       binary .deb using dpkg-buildpackage, if --download-only is specified then
       the source package will not be unpacked.

       A specific source version can be retrieved by postfixing the source name
       with an equals and then the version to fetch, similar to the mechanism used
       for the package files. This enables exact matching of the source package
       name and version, implicitly enabling the APT::Get::Only-Source option.

       Note that source packages are not tracked like binary packages, they exist
       only in the current directory and are similar to downloading source tar
       balls.

Para compilar un paquete desde el origen, primero instale las dependencias de compilación:

sudo apt-get build-dep <package>  

Luego use dpkg-buildpackage para crear un archivo .deb . De Hoja de referencia rápida de APT y Dpkg :

  

dpkg-buildpackage Crea un paquete Debian desde un árbol fuente Debian. Debe estar en el directorio principal del árbol de fuentes para que esto funcione. Uso de muestra:

 dpkg-buildpackage -rfakeroot -uc -b
     

Donde -rfakeroot le indica que use el programa fakeroot para simular privilegios de raíz (para fines de propiedad), -uc significa "No firmar criptográficamente el registro de cambios", y -b significa "Crear el paquete binario" solo "

En un terminal, cd en el directorio que contiene el origen del paquete (por ejemplo, ~/code/hellanzb-0.13 ) y ejecuta el siguiente comando:

dpkg-buildpackage -rfakeroot -uc -b

Si la construcción es exitosa, habrá un archivo .deb ubicado en el archivo principal
 directorio (por ejemplo, ~/code/hellanzb_0.13-6.1_all.deb ).

    
respondido por el Isaiah 27.02.2011 - 23:01
19

En general, puede obtener la fuente de un paquete instalado siguiendo este procedimiento:

  1. Habilita los repositorios de origen. Abra el tablero (botón superior izquierdo) y busque sources . Eso debería mostrar el programa Software & Updates , ejecutar eso y asegurarse de tener seleccionada la opción "Código fuente":

  2. Abre una terminal y ejecuta este comando:

    apt-get source vlc
    

Eso descargará las fuentes de vlc a su directorio actual y podrá verlas cuando lo desee.

Por supuesto, en el caso de vlc , también puede descargarlos directamente del sitio web de videolan.org: enlace

    
respondido por el terdon 18.03.2014 - 20:03
16

Puedes usar apt-get source --compile directamente:

sudo apt-get build-dep <package>
sudo apt-get source --compile <package>

Trabajó para mí. El .deb termina en el directorio desde el que ejecutó el comando.

    
respondido por el kaleissin 21.08.2013 - 07:37
3

Para obtener más información sobre un paquete que incluye la URL ascendente y los contactos del proyecto / programa, puede consultar archivo de derechos de autor (al que se hace referencia en packages.debian.org ) .

Cuando el paquete se incluye e instala en su sistema, también puede leer el archivo de derechos de autor directamente en /usr/share/doc/$package_or_program_name/copyright .

Consulte cómo descargar el código fuente del paquete Debian .

    
respondido por el ypid 01.08.2015 - 12:52
1

Como se mencionó en enlace , también existe un enfoque específico de Ubuntu con bzr .

Obtenga la última versión:

bzr branch lp:ubuntu/hello

TODO: esto dejó de funcionar en Ubuntu 16.04 Xenial, fallando con: bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/". . bzr branch lp:ubuntu/wily/hello funciona y bzr branch lp:ubuntu/xenial/hello falla nuevamente. Por algún motivo, enlace no muestra Xenial: enlace

Versión específica:

bzr branch lp:ubuntu/trusty/hello

También puedes usar pull-lp-source :

sudo apt-get install ubuntu-dev-tools
pull-lp-source hello

Luego podrá editarlo:

cd hello
vim some_file

Reconstruirlo:

dch -i 
debcommit
bzr bd -- -b -us -uc

E instálalo:

sudo dpkg -i ../hello.deb

La guía de empaque de Ubuntu es una buena fuente de información.

    

Lea otras preguntas en las etiquetas