====== 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**//