Tabla de Contenidos

Mini-repos-personalizados

NOTA1: Esto se puede adaptar a cualquier situación y está sujeto a cambios. NOTA2: Mi terminal se llama root@happyharry, no vaya a ser que algún despistado pregunte que no encuentra el tal happyharry ese en su PC, xD.

Introducción

ADVERTENCIA: Esto que pongo a continuación es puramente experimental, usar en un ambiente estrictamente controlado solamente, ya que resultaría perjudicial para su salud y la de sus compañeros aledaños… xD

Instalación

Instalar un sistema base, máquina virtual o real, consola prieta fea cantidad, demás yerbas y hasta etcéteras…

Configuración

1- Después de configurar la red y demas detalles[dns, gateway, netmask], configurar repositorio.

2- instalar reprepro, yo creo que se hace con “apt-get install reprepro” xD

3- Crear carpeta en donde se va a bajar el mirror “ mkdir Mirror”

4- Dentro crear carpeta llamada conf.

5- Dentro de “conf” crear 2 archivos, uno llamado distributions[touch distributions] y otro llamado updates[touch updates]

6- Contenido de distributions:

<distributions>
     Origin: Debian
     Label: My Development Mirror
     Suite: stable
     Codename: squeeze
     Version: 1.1
     Architectures: i386 amd64
     Components: main contrib non-free
     Update: debian-squeeze-update
     Description: Selected packages to develop apps
     Log: squeeze_log.log
</distributions>

7- Contenido de updates:

<updates>
     Name: debian-squeeze-update
     Method: http://fecrd.cujae.edu.cu/Mirror/debian <- este es mi mirror, cambiar por el mirror que ustedes tengan a mano...
     Components: main contrib non-free
     Architectures: i386 amd64
     FilterFormula: Priority (== required)
     VerifyRelease: blindtrust
</updates>

8- Si desean crean un archivo llamado options y dentro escriben solamente la palabra “verbose” dentro de la misma carpeta, el se ejecutará como parámetro del reprepro.

9- Ejecutar en nuestra adorada consola

root@happyharry:/home/koratsuki/Mirror# reprepro export
[output]
Exporting squeeze...

10- Ejecutar en nuestra adorada consola

root@happyharry:/home/koratsuki/Mirror# reprepro createsymlinks

11- Ejecutar en nuestra adorada consola

root@happyharry:/home/koratsuki/Mirror# reprepro -V --show-percent update squeeze

Ahí en ese punto el reprepro va al repositorio y baja los paquetes mínimos requeridos[que están declarados en la linea “FilterFormula:

Priority (== required)”] para un sistema base, pero eso resuelve nuestros problemas, entonces, lo que yo hice fue hacer eso mismo en una máquina virtual con un sistema base y me descargó todo lo necesario. Acto seguido le dije lo siguiente a la consola:

Ejemplo clásico: Y si quiero un repo de gnome???

root@happyharry:/home/koratsuki# apt-get install gnome
The following N
NOTA:EW packages will be installed:
   abiword abiword-common abiword-plugin-grammar abiword-plugin-mathview 
alacarte anacron apache2.2-bin app-install-data aptdaemon at-spi
   baobab binfmt-support bluez bogofilter bogofilter-bdb 
bogofilter-common brasero browser-plugin-gnash capplets-data cheese 
cheese-common
   cli-common cpufrequtils cups-pk-helper dasher dasher-data 
deskbar-applet desktop-base desktop-file-utils dmz-cursor-theme dnsmasq-base
   ekiga empathy empathy-common eog epiphany-browser 
epiphany-browser-data epiphany-extensions espeak espeak-data evolution 
evolution-common
   evolution-data-server evolution-data-server-common evolution-exchange 
evolution-plugins evolution-webcal freedesktop-sound-theme freeglut3
   gcalctool gconf-defaults-service gconf-editor gdebi gdebi-core gdm3 
gedit gedit-common gedit-plugins geoclue geoclue-hostip
   geoclue-localnet geoclue-manual geoclue-yahoo ghostscript gimp 
gimp-data gir1.0-clutter-1.0 gir1.0-freedesktop gir1.0-glib-2.0
   gir1.0-gstreamer-0.10 gir1.0-gtk-2.0 gir1.0-json-glib-1.0 gnash 
gnash-common gnome gnome-about gnome-accessibility
   gnome-accessibility-themes gnome-applets gnome-applets-data 
gnome-backgrounds gnome-bluetooth gnome-cards-data gnome-codec-install
   gnome-control-center gnome-core gnome-desktop-data 
gnome-desktop-environment gnome-dictionary gnome-disk-utility gnome-games
   gnome-games-data gnome-games-extra-data gnome-js-common gnome-mag 
gnome-media gnome-media-common gnome-menus gnome-netstatus-applet
   gnome-nettool gnome-office gnome-orca gnome-panel gnome-panel-data 
gnome-screenshot gnome-search-tool gnome-session gnome-session-canberra
   gnome-session-common gnome-settings-daemon gnome-system-log 
gnome-system-monitor gnome-system-tools gnome-themes gnome-themes-extras
   gnome-themes-more gnome-user-share gnome-utils-common gnuchess 
gnuchess-book gnumeric gnumeric-common gok gstreamer0.10-ffmpeg
   gstreamer0.10-fluendo-mp3 gtk2-engines-pixbuf gtk2-engines-smooth 
gucharmap guile-1.8-libs hamster-applet imagemagick inkscape
   libabiword-2.8 libaiksaurus-1.2-0c2a libaiksaurus-1.2-data 
libaiksaurusgtk-1.2-0c2a libapache2-mod-dnssd libapr1 libaprutil1
   libaprutil1-dbd-sqlite3 libaprutil1-ldap libart2.0-cil libatspi1.0-0 
libavahi-gobject0 libavahi-ui0 libavcodec52 libavformat52 libavutil49
   libbabl-0.0-0 libboost-date-time1.42.0 libboost-python1.42.0 
libboost-thread1.42.0 libbrlapi0.5 libcamel1.2-14 libcap-ng0 libcdt4
   libchamplain-0.4-0 libchamplain-gtk-0.4-0 libcheese-gtk18 
libclutter-1.0-0 libclutter-gtk-0.10-0 libcolorblind0 libcpufreq0 
libcryptui0
   libebackend1.2-0 libebook1.2-9 libecal1.2-7 libedata-book1.2-2 
libedata-cal1.2-7 libedataserver1.2-13 libedataserverui1.2-8
   libegroupwise1.2-13 libepc-1.0-2 libepc-common libepc-ui-1.0-2 
libespeak1 libevolution libfile-copy-recursive-perl libfont-afm-perl
   libfreerdp-plugins-standard libfreerdp0 libgail-common 
libgail-gnome-module libgalago3 libgconf2.0-cil libgd2-noxpm libgdata-common
   libgdata-google1.2-1 libgdata1.2-1 libgdata7 libgdict-1.0-6 
libgdome2-0 libgdome2-cpp-smart0c2a libgdu-gtk0 libgee2 libgegl-0.0-0
   libgeoclue0 libgexiv2-0 libgimp2.0 libgirepository1.0-0 
libglade2.0-cil libglib2.0-cil libgmime2.4-cil libgnome-bluetooth7 
libgnome-mag2
   libgnome-media0 libgnome-speech7 libgnome-vfs2.0-cil 
libgnome-window-settings1 libgnome2.24-cil libgnomepanel2.24-cil 
libgoffice-0.8-8
   libgoffice-0.8-8-common libgpod-common libgpod4 libgraph4 libgsl0ldbl 
libgstfarsight0.10-0 libgtk2.0-cil libgtkglext1
   libgtkhtml-editor-common libgtkhtml-editor0 libgtkhtml3.14-19 
libgtkimageview0 libgtkmathview0c2a libgtksourceview2.0-0
   libgtksourceview2.0-common libgtkspell0 libgucharmap7 libgvc5 
libgweather-common libgweather1 libhtml-format-perl libhtml-parser-perl
   libhtml-tagset-perl libhtml-tree-perl libical0 libieee1284-3 
libilmbase6 libjson-glib-1.0-0 liblink-grammar4 libloudmouth1-0 
liblouis-data
   liblouis2 liblqr-1-0 libmagick++3 libmagickcore3 libmagickcore3-extra 
libmagickwand3 libmailtools-perl libmetacity-private0
   libmono-addins-gui0.2-cil libmono-addins0.2-cil libmono-cairo2.0-cil 
libmono-corlib2.0-cil libmono-i18n-west2.0-cil libmono-posix2.0-cil
   libmono-security2.0-cil libmono-sharpzip2.84-cil 
libmono-system2.0-cil libmtp8 libndesk-dbus-glib1.0-cil libndesk-dbus1.0-cil
   libnet-dbus-perl libnet1 libnetpbm10 libnl1 libnm-glib-vpn1 
liboobs-1-4 libopal3.6.8 libopenexr6 libopenobex1 libopenraw1 libots0
   libpathplan4 libpcap0.8 libpcsclite1 libperl5.10 libplot2c2 
libpolkit-gtk-1-0 libportaudio2 libpostproc51 libpstoedit0c2a libpt2.6.7
   libpulse-mainloop-glib0 libsane libsane-extras libseed0 libslab0a 
libspeexdsp1 libsrtp0 libssh-4 libswscale0 libtelepathy-farsight0
   libtelepathy-glib0 libtidy-0.99-0 libtie-ixhash-perl libtimedate-perl 
libtracker-client-0.8-0 liburi-perl libwmf-bin libwmf0.2-7
   libwv-1.2-3 libwww-perl libxdot4 libxml-parser-perl libxml-twig-perl 
libxml-xpathengine-perl link-grammar-dictionaries-en media-player-info
   menu-xdg mesa-utils metacity metacity-common 
mobile-broadband-provider-info modemmanager mono-2.0-gac mono-gac 
mono-runtime mousetweaks
   mozilla-plugin-gnash nautilus nautilus-data nautilus-sendto 
nautilus-sendto-empathy netpbm network-manager network-manager-gnome
   obex-data-server obexd-client perlmagick poppler-utils ppp pstoedit 
python-aptdaemon python-aptdaemon-gtk python-axiom python-beautifulsoup
   python-brlapi python-bugbuddy python-clientform python-coherence 
python-configobj python-crypto python-cups python-cupshelpers python-dbus
   python-epsilon python-evolution python-feedparser python-gconf 
python-gdata python-gdbm python-gmenu python-gnome2 python-gnomeapplet
   python-gnomedesktop python-gnomekeyring python-gst0.10 
python-gtkglext1 python-gtksourceview2 python-httplib2 python-louie 
python-louis
   python-mako python-markupsafe python-mechanize python-nevow 
python-notify python-opengl python-openssl python-pam python-pyasn1
   python-pyatspi python-pyorbit python-rdflib python-serial 
python-tagpy python-twisted-bin python-twisted-conch python-twisted-core
   python-twisted-web python-utidylib python-vte python-webkit 
python-wnck python-xdg python-zope.interface remmina remmina-plugin-data
   remmina-plugin-rdp remmina-plugin-vnc rhythmbox 
rhythmbox-plugin-cdrecorder rhythmbox-plugins sane-utils seahorse 
seahorse-plugins shotwell
   simple-scan software-center sound-juicer system-config-printer 
system-config-printer-udev system-tools-backends tcl tcl8.4 tcptraceroute
   telepathy-gabble telepathy-mission-control-5 telepathy-salut tomboy 
totem totem-coherence totem-common totem-mozilla totem-plugins
   transmission-common transmission-gtk ufraw-batch update-inetd 
update-manager-core update-manager-gnome update-notifier
   update-notifier-common usb-modeswitch usb-modeswitch-data vino 
wpasupplicant xdg-user-dirs xdg-user-dirs-gtk
0 upgraded, 431 newly installed, 3 to remove and 0 not upgraded.
Need to get 402 MB of archives.
After this operation, 1,150 MB of additional disk space will be used.
Do you want to continue [Y/n]?

A esta lista tan linda y coqueta después de decirle que “no”, copio el contenido sin lo paquetes adicionales en un fichero de texto plano

root@happyharry:/home/koratsuki# apt-get install gnome > gnomepkg.lst

Después de dar Control+C para cancelar el prompt en espera, leer el fichero y borrar las líneas que tengan contenido insignificante:

<meaningless_content>
     Reading package lists...
     Building dependency tree...
     Reading state information...
     The following extra packages will be installed:
     The following NEW packages will be installed:
     0 upgraded, 431 newly installed, 3 to remove and 0 not upgraded.
     Need to get 402 MB of archives.
     After this operation, 1,150 MB of additional disk space will be used.
     Do you want to continue [Y/n]?
</meaningless_content>

Dejando solamente la lista de paquetes con dependencias y todo.

NOTA: Por qué hago esto??? Reprepro no gestiona dependencias, por lo que yo gestiono las dependencias mediante apt y en la lista de paquetes a instalar, ya vienen paquetes y dependencias, por lo que nos saltamos ese paso, si alguien sabe o conoce un metodo más facil de gestionar dependencias F5 a este tutorial y listo!

Ahora solamente tenemos la lista de paquetes+dependencias de gnome en el archivo gnomepkg.lst

12- Ejecutar en consola lo siguiente:

root@happyharry:/home/koratsuki/Mirror# for pkg in $(cat gnomepkgs.lst); do echo $pkg install; done > gnomepkg

Después de hecho esto nos queda lo siguiente:

abiword install
abiword-common install
abiword-plugin-grammar install
abiword-plugin-mathview install
alacarte install
anacron install
apache2.2-bin install
app-install-data install
aptdaemon install
at-spi install
baobab install
binfmt-support install
bluez install
bogofilter install
bla... bla... bla...

Por qué hay que poner “install” después del nombre de los paquetes?

Porque reprepro sigue la rutina de dpkg que marca los paquetes con la palabra install detrás de su nombre para que el sistema los reconozca, ni idea porque lo hace, pero es así.

Si tienen duda ejecuten:

root@happyharry:/home/koratsuki/Mirror# dpkg --get-selections

Y vean la lista de paquetes que tienen actualmente instalados :D.

Después de haber “parseado” el archivo gnomepkgs.lst copiar el archivo gnomepkgs a la carpeta “conf” junto a los archivos “updates”, “distributions” y “options”.

13- Modificar en el archivo “updates” comentando[con #] la línea:

FilterFormula: Priority (== required)

y añadiendo la línea:

FilterList: deinstall gnomepkgs

14- Después de hecho esto, ejecutar nuevamente:

    14.1 - reprepro export
    14.2 - reprepro createsymlinks
    14.3 - reprepro -V --show-percent update squeeze

Si lo anterior[14.3] nos da algún error ejecutamos:

reprepro --noskipold -V --show-percent update squeeze

Así actualiza sin tener en cuenta los archivos anteriores…

Notas

Así tenemos un repo de Gnome. Para hacerlo de KDE solamente debemos hacer la lista de paquetes de instalación de KDE con el método anterior más la palabrita install y demás procesos, que tendremos nuestro repo updated!

Por lo demás, leerse la página del manual de reprepro[man reprepro], en caso de error y/o duda con alguna sintáxis.

Por lo demás, un abrazo y disfruten de este tutorial. A mi se me gastaron los dedos escribiendo y probando cosas, durante las 3 madrugadas en que estuve haciendo pruebas x-P.

Autor Original

Leslie Leon Sinclair