====== 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:
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
7- Contenido de 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
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:
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]?
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**//