TALLER

 

(Compilando apt-get para instalar paquetes de forma facil)

 

Cuando comenze a utilizar Linux me desesparaba al instalar paquetes, habia ocaciones en las que pasaba una noche entera tratando de instalar un paquete, si instalaba via rpm's estos me pedian dependencias que a su ves me pedian dependencias y tenia que buscar, descargar e instalar como 16 paquetes cada que instalava uno nuevo, si decidia instalar via fuentes la situacion era algo similar, casi nunca me funionaban sobre todo con mysql, cuando preguntava si habia una forma mas facil simpre me contestaban lo mismo: “Reinstala tu linux y selecciona los paquetes  que quieras!”, y bueno, lo que pasa es que si no tienes entorno grafico no puedes usar los gestores de pauetes que estos te proporcionan, tales como el _____________ de gnome

 

Despues decidi preguntarle a un maestro de verdad! (google) y el me contesto APT;  descarge los  rpm's para mi redhat7.4 eran 4 paquetes (_____________) pero el _________ me pedio: _______________ y el _____________ me pedio:______________ tambien el __________ me pidio: __________________ que asu ves me pidieron: _______________ me tarde un dia completo en instalar el famoso apt.

 

Luego decidi cambiar de redhat7.4 a redhat8 pero ni loco repetiria el proceso de instalacion del apt asi que busque y busque y encontre un articulo de: Ben Roberts el cual  habia instalado debian sobre su RedHat el logro hacer esto compilando apt y actualizando el sistema completo.

 

Pero compilar apt? En principio el codigo no esta echo para hacer una instalacion via source, pero aqui veremos como engañar al sistema y hacer que nuestro apt-get compilado funcione sobre casi cualquier distribucion de linux.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Compilar apt-get y dpkg, y hacer que funcionen

(los cambio al articulo original estan: original color gris y cambio en negrita cursiva )

 

TÍTULO:                 Compilar apt-get y dpkg, y hacer que funcionen

VERSIÓN LFS:            Todas

AUTOR:                  Ben Roberts <benr@wam.umd.edu>

TRADUCTOR:              Proyecto LFS-ES

 

SINOPSIS:

        dpkg y apt-get son un par de programas extremadamente potentes para manejar paquetes, famosos por su habilidad para actualizar fácilmente un sistema Linux entero.

Sin embargo, ya que estas herramientas están diseñadas para instalar y mantener una distribución Debian GNU/Linux, nunca se pensó que pudieran ser instaladas "desde cero". Esta receta describe como "engañar" a estos programas para que funcionen.

 

RECETA:

        [Intenté este proceso por primera vez en el 2001 para instalar Debian encima de RedHat sin arrancar de nuevo y sin los CDs de instalación. Funcionó bastante bien, pero las anotaciones de como lo hice se perdieron cuando se estropeó el disco duro de mi ordenador. He intentado recrear el proceso usando una instalación de LFS en un entorno chroot. Espero que a ti también te funcione.]

 

Primero, descarga el código fuente de dpkg y apt de packages.debian.org/dpkg y packages.debian.org/apt respectivamente (el enlace pequeño cerca del final de la página). Las versiones usadas para escribir esta receta son dpkg-1.9.21 y apt-0.5.4.

 

$ tar xzvf dpkg_1.9.21.tar.gz

$ cd dpkg-1.9.21

$ ./configure --prefix=/usr --admindir=/var/lib/dpkg

 

Ten en cuenta de que la opción --with-admindir tiene un valor por defecto diferente (/usr/lib/db) del que apt y el resto de Debian usa. Por tanto es conveniente usar la opción de configure para asignarle un valor por defecto ahora, o crear un enlace simbólico.

 

Si simplemente tecleas 'make', la compilación fallará a menos que tengas instalados jade y debiandoc2html (probablemente no tengas ninguno de los dos). La mejor forma de solucionar esto es cambiando doc/Makefile, de la siguiente forma:

 

$ mv doc/Makefile doc/Makefile.bak

$ sed 's/^all: /&# /g; s/^install: /&# /g' doc/Makefile.bak > doc/Makefile

 

(esta es una razón más para instalar la versión de Debian del paquete

una vez que apt funcione)

 

$ make

$ su

# make install

 

 

 

 

Ahora instalaremos apt.

$ tar xzvf apt_0.5.4.tar.gz

$ cd apt-0.5.4

$ ./configure

 

No hay ninguna opción útil aquí, ni siquiera se necesita --prefix.

 

$ make

 

apt no tiene un objetivo 'make install', y por tanto debe instalarse manualmente. Afortunadamente, casi todos los ficheros que se deben instalar están en el subdirectorio bin. La excepción son los guiones de dselect.

 

¡Ten en cuenta que apt probablemente no funcionará si no se usan exactamente estos directorios!. Es por eso que no se utilizó la opción --prefix de configure; apt no tiene en cuenta esta opción.

 

$ su

# cd bin

# cp -a libapt-* /usr/lib

# ldconfig

# cp apt-cache apt-cdrom apt-config apt-get /usr/bin

# mkdir /usr/lib/apt

# cp -R methods /usr/lib/apt

# cd ..

# cp -R scripts/dselect /usr/lib/dpkg/methods/apt

# mkdir -p /etc/apt /var/state/apt/lists/partial \

        /var/cache/apt/archives/partial

 

Ahora, vamos a hacer que funcione. Primero necesitamos el fichero

/etc/apt/sources.list. Puedes cambiar los sitios que aparecen más abajo por los servidores de respaldo (mirrors) que desees, por supuesto. También puedes añadir otras fuentes y actualizaciones de seguridad, pero esto es sólo un consejo.

 

# cat > /etc/apt/sources.list >> EOF

# Inicio /etc/apt/sources.list

# vi /etc/apt/sources.list

Para comenzar a escribir teclea la letra a y escribe las lineas siguientes:

 

deb http://http.us.debian.org/debian testing main contrib non-free

deb http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free

 

# Fin /etc/apt/sources.list

EOF

Para salir del documento teclea Esc luego : y despues wq

 

Si necesitas crear el enlace simbólico /var/lib/dpkg a /usr/lib/db, hazlo ahora.

 

# ln -s /usr/lib/db /var/lib/dpkg

 

# touch /var/lib/dpkg/status

 

# dselect

 

 

 

En dselect, empieza con el menú [A]ccess y elige apt. Conserva el fichero de configuración que hemos creado antes. Después elige [U]pdate. Ahora la base de datos de dpkg ha sido actualizada (por alguna razón, apt-get update no me funcionó; si tienes problemas, prueba con dselect).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Eso es todo. Una cosa que hay que tener en cuenta es que a dpkg no le gusta instalarse desde cero como hemos hecho nosotros. Muchos paquetes esenciales tienen dependencias más complejas que las que muestran. Puedes tener problemas instalando cosas porque otras no están instaladas (un ejemplo es si intentas instalar libc6, te dirá que dpkg no está instalado, aunque no depende de él). La solución a esto es modificar /var/lib/dpkg/status. Para arreglar el problema con libc6, añade esto a la base de datos de dpkg:

 

Package: dpkg

Essential: yes

Status: install ok installed

Priority: required

Section: base

Installed-Size: 2360

Maintainer: Wichert Akkerman <wakkerma@debian.org>

Version: 1.9.21

Replaces: dpkg-doc-ja

Pre-Depends: libc6.1 (>= 2.2.4-4), libncurses4 (>= 5.2.20020112a-1),

libstdc++2.10-glibc2.2 (>= 1:2.95.4-0.010810) <--- *PON ESTO EN LA LÍNEA

ANTERIOR!*

Description: Package maintenance system for Debian

 This package contains the programs which handle the installation and

 removal of packages on your system.

 .

 The primary interface for the dpkg suite is the `dselect' program;

 a more low-level and less user-friendly interface is available in

 the form of the `dpkg' command.

 .

 In order to unpack and build Debian source packages you will need to

 install the developers' package `dpkg-dev' as well as this one.

 

Hay que destacar que la versión de dpkg es la misma que la que hemos instalado. Si quieres reinstalar dpkg a partir de un paquete, la mejor forma de hacerlo es decrementar el número de versión en uno, de modo que piense que está instalada la versión 1.9.20. Entonces dpkg automáticamente se actualizará a si mismo.

 

Podrías incluso añadir todos los paquetes instalados hasta el momento en esta base de datos, y utilizar dselect para hacer que no se actualicen (ponerlos en estado hold). De esta forma, sólo tienes que preocuparte de los binarios, y has engañado a dpkg para que no sobreescriba tu instalación LFS.

 

Eso es todo. ¡Buena suerte con tu Debian desde cero!

(¿DFS? ¿DG/LFS quizás?)