diff options
Diffstat (limited to 'es_ES.ISO8859-1/books/handbook/cutting-edge/chapter.sgml')
-rwxr-xr-x | es_ES.ISO8859-1/books/handbook/cutting-edge/chapter.sgml | 1193 |
1 files changed, 27 insertions, 1166 deletions
diff --git a/es_ES.ISO8859-1/books/handbook/cutting-edge/chapter.sgml b/es_ES.ISO8859-1/books/handbook/cutting-edge/chapter.sgml index 0da661ce19..daba5eaf47 100755 --- a/es_ES.ISO8859-1/books/handbook/cutting-edge/chapter.sgml +++ b/es_ES.ISO8859-1/books/handbook/cutting-edge/chapter.sgml @@ -2,6 +2,18 @@ The FreeBSD Documentation Project $FreeBSD$ + + + + + The FreeBSD Spanish Documentation Project + %SOURCE% en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml + %SRCID% 1.228 + + + + + --> <chapter id="cutting-edge"> @@ -39,413 +51,40 @@ <title>Lo último de lo último</title> <sect1> - <title>Sinópsis</title> - - <para>&os; está en desarrollo continuo entre versiones. Para los - que quieran estar en lo último de lo último, hay varias - formas de sincronizar tu sistema con el último desarrollo - fácilmente. ¡Estás advertido— lo último - de lo último no es para cualquiera! - Este capítulo te ayudará a decidir si quieres seguir el - sistema de desarrollo o quedarte en algunas de las versiones publicadas.</para> + <title>Sinopsis</title> - <para>Después de leer este capítulo sabrás:</para> + <para>Pendiente de Traducción</para> - <itemizedlist> - <listitem><para>La diferencia entre las dos ramas de desarrollo; - &os.stable; y &os.current;.</para> - </listitem> - <listitem><para>Cómo mantener tu sistema al día con - <application>CVSup</application>, - <application>CVS</application>, o - <application>CTM</application>.</para> - </listitem> - <listitem><para>Cómo reconstruir y reinstalar el sistema base - entero con <command>make world</command>.</para> - </listitem> - </itemizedlist> - <para>Antes de leer este capítulo, deberías:</para> - - <itemizedlist> - <listitem><para>Disponer correctamente tu conexión de red (<xref - linkend="advanced-networking">).</para> - </listitem> - <listitem><para>Saber cómo instalar programas adicionales de - terceros. (<xref linkend="ports">).</para></listitem> - </itemizedlist> </sect1> <sect1 id="current-stable"> <title>&os.current; vs. &os.stable;</title> - <indexterm><primary>-CURRENT</primary></indexterm> - <indexterm><primary>-STABLE</primary></indexterm> - <para>Hay dos ramas de desarrollo de FreeBSD; &os.current; y &os.stable;. Esta - sección explicará un poco sobre cada una y describirá - cómo mantener tu sistema al día entre cada árbol respectivo. - &os.current; será discutida primero, luego &os.stable;.</para> <sect2 id="current"> - <title>Manteniendo la versión Current.</title> - - <para>Al leer esto, ten en cuenta que &os.current; es el - <quote>lo más reciente</quote> del desarrollo y que si tú - eres nuevo en &os;, deberías pensartelo muy mucho antes de ejecutarlo.</para> - - <sect3> - <title>¿Qué es &os.current;?</title> - <indexterm><primary>Instantánea</primary></indexterm> - - <para>&os.current; es, literalmente, nada más que una instantánea - diaria sobre el trabajo en el código fuente para el &os;. Esto incluye - trabajo cambiante, cambios experimentales y mecanismos transitorios que - podrían estar o no presentes en la próxima versión del - programa. Mientras la mayoría de nosotros compilamos casi a diario el - &os.current; las fuentes, Hay períodos de tiempo en que las fuentes son - literalmente incompilables. Estos problemas son solucionados tan pronto como es - posible, pero si las fuentes del &os.current; son un desastre o una bendición - su utilidad puede ser literalmente una cuestión de en que momento del - período de 24 horas dado las grabaste.</para> - </sect3> - - <sect3> - <title>¿Quién necesita&os.current;?</title> - - <para>&os.current; está disponible generalmente para tres grupos de - interés principales:</para> - - <orderedlist> - <listitem> - <para>Miembros del grupo &os; que están activamente trabajando en - alguna parte del código fuente del árbol y para los que - mantenerse <quote>current</quote> es un requisito absoluto.</para> - </listitem> - - <listitem> - <para>Miembros del &os; grupo que son activos probadores, con el propósito - de pasar tiempo trabajando en los problemas para asegurarse de que - &os.current; se mantiene tan cuerdo como sea posible. También - hay gente que desea hacer sugerencias típicas en cambios y en la - dirección principal del &os;.</para> - </listitem> - - <listitem> - <para>Miembros externos &os; o algún grupo que desea mantener un - ojo en las cosas y usa las fuentes del "current" por motivos de referencia - (reference) (Ej. para <emphasis>leer</emphasis>, no ejecutar). Estas personas - también hacen comentarios ocasionales o contribuyen al código.</para> - </listitem> - </orderedlist> - </sect3> - - <sect3> - <title>¿Qué <emphasis>No</emphasis> es &os.current;?</title> - - <orderedlist> - <listitem> - <para>Un rápido sistema de seguimiento para conseguir pre-distribuciones porque has oido que hay alguna nueva funcionalidad interesante dentro y quieres ser el primero del barrio en tenerla.</para> - </listitem> - - <listitem> - <para>Un sistema rápido de tener los fallos solucionados.</para> - </listitem> - - <listitem> - <para>En ningún caso <quote>asistencia oficial</quote> por nuestra parte. - Nosotros nos esforzamos sinceramente en ayudar a la gente en alguna de las tres situaciones. - - Nosotros <quote>habilitamos</quote> &os.current; pero simplemente <emphasis>no tenemos tiempo</emphasis> para dar asistencia técnica. Esto no es porque seamos de alguna forma mala gente que no quiere ayudar a los demás (ni siquiera estaríamos haciendo &os; si lo fueramos), es simplemente porque no podemos responder 400 mensajes al día - <emphasis>y</emphasis> en realidad trabajamos en FreeBSD! Si nos dan a escoger entre mejorar el &os; y responder montones de preguntas, la mayoría de los desarrolladores y usuarios, problamente opten por lo primero.</para> - </listitem> - </orderedlist> - </sect3> - - <sect3> - <title>Usando &os.current;</title> - - <orderedlist> - <listitem> - <para>Unirse a &a.current; y al &a.cvsall; . No es sólo una buena idea, es <emphasis>esencial</emphasis>. Si no estás en el <emphasis>&a.current;</emphasis>, - no verás los comentarios que la gente hace sobre la situación del sistema current y por esto probablemente terminarás tropezando con un montón de problemas que otros ya han encontrado y solucionado. Casi más importante, te perderás importantes boletines que podrían ser fundamentales para la continuidad de la salud de tu sistema.</para> - - <para>La lista de correo&a.cvsall; te permitirá ver el apunte en el registro de "commits" - por cada cambio que se realice junto con información pertinente sobre posibles efectos secundarios.</para> - - <para>Para unirte a estas listas, envía un correo a &a.majordomo; and - indicando lo siguiente en el cuerpo del mensaje:</para> - - <programlisting>subscribe freebsd-current -subscribe cvs-all</programlisting> - <indexterm> - <primary><application>majordomo</application></primary> - </indexterm> - - <para>Opcionalmente,puedes también poner<literal>help</literal> - y Majordomo te enviará ayuda completa sobre como suscribirse o desuscribirse a las varias listas de correo que asistimos.</para> - </listitem> - <listitem> - <para>Graba las fuentes desde <hostid - role="fqdn">ftp.FreeBSD.org</hostid>. Puedes hacer esto de varias maneras:</para> + <title>Current</title> - <orderedlist> - <indexterm> - <primary><command>cvsup</command></primary> - </indexterm> - <indexterm> - <primary><command>cron</command></primary> - </indexterm> - <indexterm> - <primary>-CURRENT</primary> - <secondary>Syncing with CVSup</secondary> - </indexterm> - - <listitem> - <para>Usa el programa cvsup con este <ulink - url="ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/standard-supfile"> - supfile</ulink>. Este es el método más recomendable, ya que te permite grabar la colección entera una vez y a partir de entonces sólo lo que cambie desde entonces.Mucha gente ejecuta <command>cvsup</command> from - <command>cron</command> y mantiene actualizadas sus fuentes automáticamente. Tienes que adaptar la muestra de supfile de arriba y configurar -cvsup a tu entorno.Si quieres ayuda para hacer esta configuración, teclea: </para> -<screen>&prompt.root; <userinput>pkg_add -f -ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/All/cvupit-3.0.tgz</userinput></screen> - </listitem> - <indexterm> - <primary>-CURRENT</primary> - <secondary>Bajarlo con FTP</secondary> - </indexterm> - - <listitem> - <para>Usa <command>ftp</command>. El código fuente del árbol del - &os.current; está siempre <quote>exportado</quote> en: - <ulink - url="ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/">ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/</ulink>. - Algunos de nuestros servidores FTP también permiten grabar los árboles enteros comprimidos/tarred. ej. Mira:</para> - - <screen>usr.bin/lex</screen> - - <para>Puedes hacer lo siguiente para conseguir el directorio completo como un archivo tar:</para> - - <screen><prompt>ftp></prompt> <userinput>cd usr.bin</userinput> -<prompt>ftp></prompt> <userinput>get lex.tar</userinput></screen> - </listitem> - - - - <indexterm> - <primary>-CURRENT</primary> - <secondary>Syncing with CTM</secondary> - </indexterm> - <listitem> - <para>Usa la aplicació<application> - CTM</application>. Si tienes muy mala conexión (conexiones caras o sólo acceso para correo electrónico) <application>CTM</application>es una opción. - Sin embargo es muy complicado y puede darte archivos rotos. - Por eso se usa raramente, lo que incrementa la posibilidad de que no funcione durante largos periodos de tiempo. Te recomendamos usar - <application>CVSup</application> - para cualquiera con un modem de 9600bps modem o una conexión más rapida. - </para> - </listitem> - </orderedlist> - </listitem> - - <listitem> - <para>Si estás grabando las fuentes para ejecutarlas y no sólo leerlas, entonces graba <emphasis>todo</emphasis> el &os.current;, no sólo algunos trozos. La razón es que varias partes de las fuentes dependen de actualizaciones de otros sitios, y tratar de compilar sólo una proció casi te garantiza meterte en problemas.</para> - - <para>Antes de compilar &os.current;, lee con cuidado - <filename>Makefile</filename> en <filename>/usr/src</filename> - Deberías al menos ejecutar un <link - linkend="makeworld">make world</link> la primera vez como parte del proceso de actualización. Leer el &a.current; - te mantendrá al día en otros procedimientos de arranque que a veces se convierten en necesarios cuando nos acercamos a la siguiente versión.</para> - </listitem> - - <listitem> - <para>¡Participa! Si estas usando &os.current;, queremos saber lo que tienes que decir sobre él, especialmente si tienes sugerencias para mejoras o arreglos de fallos. Recibimos tus sugerencias con más entusiasmo si incluyes el código correspondiente!</para> - </listitem> - </orderedlist> - </sect3> + <para>Pendiente de Traducción</para> + </sect2> - - <sect2 id="stable"> - <title>Manteniendo Stable con &os;</title> - - <sect3> - <title>¿Qué es &os.stable;?</title> - <indexterm><primary>-STABLE</primary></indexterm> - - <para>&os.stable; es nuestra rama de desarrollo con la que hacemos las versiones principales. Los cambios van a esta rama con un ritmo diferente, asumiendo que han ido primero a - &os.current; para probarse. Esta es <emphasis>aun</emphasis> - una rama de desarrolllo, aunque, y esto significa en cualquier momento, las fuentes de&os.stable; pueden o no ser adecuadas para un propósito determinado. Es simplemente otro camino en la ingeniería del desarrollo, no un recurso para usuarios finales.</para> - </sect3> - - <sect3> - <title>¿Quién necesita &os.stable;?</title> - - <para>Si estás interesado en seguir o en contribuir al proceso de desarrollo de FreeBSD, especialmente en lo relativo a la próxima<quote>point</quote> release de FreeBSD, entonces deberías considerar seguir &os.stable;.</para> - - <para>Aunque es verdad que algunos arreglos de seguridad van tambien a la rama - &os.stable; , tú no <emphasis>necesitas</emphasis> seguir &os.stable; para hacerlo. Cada notificación de seguridad de - FreeBSD explica como solucionar el problema en la versión que afecta. - <footnote><para>Esto no es del todo cierto. No podemos continuar prestando asistencia para las viejas versiones de FreeBSD nunca más, aunque lo hayamos hecho durante años. - Para conocer la política de seguridad de las viejas versiones de FreeBSD, por favor mira <ulink - url="../../../../security/index.html">http://www.FreeBSD.org/security</ulink></para> - </footnote> - seguir una rama de desarrollo sólo por razones de seguridad es seguramente también traer una gran cantidad de cambios no deseados.</para> - - <para>Aunque nosotros nos esforzamos para asegurar que la rama &os.stable; compila y funciona en cualquier ocasión, esto no puede garantizarse, ya que el código es desarrollado en &os.current; antes de incluirlo en &os.stable;, más gente usa &os.stable; que &os.current;, asi que es inevitable que algunos errores se encuentren alguna vez en &os.stable; que no eran evidentes en &os.current;.</para> - - <para>Por estas razones, nosotros <emphasis>no</emphasis> recomendamos que sigas ciegamenteme &os.stable;, y es especialmente importante que no actualices algun servidor importante a &os.stable; sin probar primero el código en tu entorno de desarrollo.</para> - - <para>Si no tienes los recursos para hacer esto entonces te aconsejamos que ejecutes la más reciente distribución de FreeBSD, y uses el mecanismo de actualización binaria entre distribución y distribución.</para> - </sect3> - - <sect3> - <title>Usando &os.stable;</title> - - <indexterm> - <primary>-STABLE</primary> - <secondary>using</secondary> - </indexterm> - <orderedlist> - <listitem> - <para>Únete a &a.stable;. Esto te mantendrá informado de las - dependencias de construcción que puedan aparecer en &os.stable; - o cualquier otra cuestión que requiera especial atención. Los desarrolladores harán los anuncios en esta lista de correo cuando estén contemplando algun arreglo polémico o actualización, dando a los usuarios la oportunidad de responder si tienen alguna cuestión que plantear respecto al cambio propuesto.</para> - - <para>La lista de correo &a.cvsall; te permitirá ver el - apunte del commit log para cada cambio tal como se hace junto con la posible información sobre los efectos secundarios.</para> - - <para>Para apuntarse a estas listas, envía un correo a &a.majordomo; y especifica lo siguiente en el cuerpo del mensaje:</para> - - <programlisting>subscribe freebsd-stable -subscribe cvs-all</programlisting> - - <indexterm> - <primary><application>majordomo</application></primary> - </indexterm> - <para>Opcionalmente, puedes indicar <literal>help</literal> - y Majordomo te enviará ayuda completa sobre como suscribirte y desuscribirte a las otras listas que mantenemos.</para> - </listitem> - - <listitem> - <para>Si estás instalando un nuevo sistema y quieres que sea lo más estable posible, puedes grabar simplemente la última rama con la instantánea más antigua de <ulink - url="ftp://releng4.FreeBSD.org/pub/FreeBSD/">ftp://releng4.FreeBSD.org/pub/FreeBSD/</ulink> - and install it like any other release.</para> - - <para>Si ya estas usando una versión previa de &os; - y quieres actualizar via fuentes entonces puedes hacerlo fácilmente desde <hostid role="fqdn">ftp.FreeBSD.org</hostid>. Esto puede hacerse de tres maneras:</para> - - <orderedlist> - <indexterm> - <primary>-STABLE</primary> - <secondary>syncing with CVSup</secondary> - </indexterm> - <listitem> - <para>Usa el programa cvsup con <ulink - url="ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/stable-supfile">this - supfile</ulink>. Este es el sistema recomendado, ya que te permite grabar la colección entera una vez y a partir de entonces sólo lo que cambie. Algunos usan <command>cvsup</command> from - <command>cron</command> para mantener las fuentes al día autom´ticamente. -Para una interface bastante sencilla para esto, simplemente teclea:</para> - - <blockquote><screen>&prompt.root; <userinput>pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz</userinput></screen></blockquote> - </listitem> - - <indexterm> - <primary>-STABLE</primary> - <secondary>Bajandolo con FTP</secondary> - </indexterm> - <listitem> - <para>Usa <command>ftp</command>. Las fuentes de árbol para el - &os.stable; están siempre <quote>exported</quote> en: - <ulink - url="ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/">ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/</ulink></para> - - <para>Algunos de nuestros servidores de FTP permiten tambien grabar los árboles completos compressed/tarred. ej. Mira:</para> + <sect2 id="stable"> - <screen>usr.bin/lex</screen> + <title>Stable</title> - <para>Puedes hacer lo siguiente para conseguir el directorio como archivo tar:</para> + <para>Pendiente de Traducción</para> - <screen><prompt>ftp></prompt> <userinput>cd usr.bin</userinput> -<prompt>ftp></prompt> <userinput>get lex.tar</userinput></screen> - </listitem> - <indexterm> -<primary>-STABLE</primary> -<secondary>Sincronización mediante CTM</secondary> -</indexterm> -<listitem> -<para>Usa <application> -CTM</application>. -Si no tienes una conexió rápida y barata a Internet,este es el método que debería considerar usar. -</para> -</listitem> - </orderedlist> - </listitem> - <listitem> - <para>Básicamente, si necesitas acceso rápido bajo demanda a la fuente y el ancho de banda no es una consideración , usa - <command>cvsup</command> o <command>ftp</command>. - De otro modo, usa <application>CTM</application>.</para> - </listitem> + </sect2> - <indexterm> - <primary>-STABLE</primary> - <secondary>compiling</secondary> - </indexterm> - <listitem> - <para>Antes de compilar&os.stable;, lee el - <filename>Makefile</filename> en <filename>/usr/src</filename> - con cuidado. Deberías al menos ejecutar un <link - linkend="makeworld">make world</link> la primera vez como parte del proceso de instalaci´n.Leyendo el&a.stable; te mantendrá al día en los otros procedimientos de arranque que alguna vez pueden llegar a ser necesarios cuando nos acercamos a la siguiente versión.</para> - </listitem> - </orderedlist> - </sect3> - </sect2> </sect1> <sect1 id="synching"> <title>Sincronización de su código fuente</title> - <para>Hay varias formas de usar una conexión de Internet (o de correo) para estar al día en cualquier area dada de las fuentes del proyecto &os;, o en todas las areas, dependiendo de lo que te interese. Los servicios primarios que ofrecemos son Anonymous - CVS, CVSup, y - CTM.</para> - - <warning> - <para>Aunque es posible actualizar sólo partes del código fuente del arbol, el único procedimiento de actualización que prestamos es actualizar el arbol entero y recompilarlo a la vez junto al espacio del usuario (ej., todos los programas que se ejecutan en el espacio del usuario, tales como los que están en <filename>/bin</filename> y - <filename>/sbin</filename>) y las fuentes del kernel. Actualizar sólo parte del código fuente del arbol, sólo el kernel, o sólo el area de usuario trae a menudo problemas.Estos problemas pueden ir desde errores de compilación hasta kernel panics o corrupción de datos.</para> - </warning> - - <indexterm><primary>anonymous CVS</primary></indexterm> - <para><application>Anonymous CVS</application> and - <application>CVSup</application> usa el modelo <emphasis>pull</emphasis> - para actualizar las fuentes. En caso de - <application>CVSup</application> el usuario (o un - <command>cron</command> script) invoca el programa - <command>cvsup</command>, y este interactua con el servidor - <command>cvsupd</command> en algún lugar para traer los archivos actualizados. -Las actualizaciones que recibes lo están al minuto y tú las consigues cuando, y sólo cuando, las quieras. - Puedes fácilmente restringir tus actualizaciones a los archivos o directorios que te interesen. -Las actualizaciones se crean sobre la marcha por el servidor según lo que tienes o quieras tener. - <application>Anonymous CVS</application> es bastante mas simple que CVSup que es sólo una extensión de <application>CVS</application> que permite retirar los cambios directamente desde un repositorio (repository) CVS remoto. - <application>CVSup</application> puede hacer esto mucho más eficientemente, pero - <application>Anonymous CVS</application> es más fácil de usar.</para> - - <indexterm> - <primary><command>CTM</command></primary> - </indexterm> - <para><application>CTM</application>, por otro lado, no compara las fuentes que tienes interactivamente con las del archivo master o de otro que retires..En vez de eso, un script que identifica los cambios en los archivos se ejecuta varias veces al día en la maquina maestra CTM, cualquier cambio detectado, sellado con una secuencia de números y codificado para transmitirlo en correo ( sólo en ASCII imprimible). -Una vez recibido, estos<quote>CTM deltas</quote> pueden ser manipulados por la utilidad - &man.ctm.rmail.1; que automáticamente decodifica, verifica y aplica los cambios a la copia de las fuentes del usuario. -Este proceso es más eficiente que <application>CVSup</application>, - y pone menos presión en nuestros recursos de servidor ya que es un modelo de - <emphasis>empujar</emphasis> en vez de <emphasis>tirar </emphasis>.</para> - - <para>Hay otros aspectos a tener en cuenta, por supuesto. Si descuidadamente barres trozos de tu archivo, <application>CVSup</application> - te detectará y reconstruirá las porciones dañadas. - <application>CTM</application> no hace esto, y si borras algún trozo de las fuentes del árbol - (y no has hecho una copia de respaldo) entonces tendrás que partir de cero - ( desde el más reciente CVS - <quote>base delta</quote>) y reconstruirlo todo con CTM o, con anoncvs, simplemente borrará los malos bits (bad bits) y resincronizarás</para> + <para>Pendiente de Traducción</para> </sect1> @@ -453,796 +92,18 @@ Este proceso es más eficiente que <application>CVSup</application>, <sect1 id="makeworld"> <title>Uso de <command>make world</command></title> - <indexterm> - <primary><command>make world</command></primary> - </indexterm> - <para>Una vez que has sincronizado las fuentes de tu árbol local con alguna versión determinada de&os; (&os.stable;, &os.current;, y asi) - puedes usar las fuentes del árbol para reconstruir el sistema.</para> - - <warning> - <title>Haciendo una copia de respaldo</title> - - <para>Nunca se hace suficiente hincapié sobre lo importante que es hacer una copia de respaldo de tu sistema <emphasis>antes</emphasis> de hacer esto. - Aunque reconstruir world es (siempre que sigas estas instrucciones) una tarea fácil de hacer, habrá veces que inevitablemente cometas errores, o cuando errores hechos por otros en las fuentes del árbol inutilice tu sistema haciendolo inarrancable.</para> - - <para>Asegúrate de haber hecho una copia de respaldo. Y ten un diskette de reparación a mano. ¡Probablemente no tengas nunca que usarlo, pero es mejor asegurarse que lamentarlo!</para> - </warning> - - <warning> - <title>Suscribete a la lista de correo correcta </title> - - <indexterm><primary>lista de correo</primary></indexterm> - <para>Las ramas &os.stable; and &os.current; son , por naturaleza, <emphasis>en desarrollo </emphasis>. La gente que contribuye a &os; son humanos, y los errores ocasionalmente ocurren.</para> - - <para>Algunos de estos errores pueden ser poco dañinos, que sólo causan que tu sistema imprima una nueva señal de diagnostico. O el cambio puede ser catastrófico, e inutilizar tu sistema inarrancable o destruir tu sistema de archivos ( o algo peor).</para> - - <para>Si un problema como este ocurre, un <quote>heads up</quote> es enviado a la lista de correo apropiada, explicando la naturaleza del problema y a que sistema afecta. Y un <quote>all - clear</quote> anuncio es enviado cuando el problema ha sido resuelto.</para> - - <para>Si intentas seguir &os.stable; o &os.current; y no lees la &a.stable; o la - &a.current; respectivamente, entonces estás buscando problemas.</para> - </warning> - - <sect2> - <title>Lee <filename>/usr/src/UPDATING</filename></title> - - <para>Antes de hacer nada mas, lee - <filename>/usr/src/UPDATING</filename> (o el archivo equivalente dondequiera que tengas una copia del código fuente). Este archivo puede contener importante información sobre problemas que puedes encontrarte, o indicar el orden en que debes ejecutar ciertas ordenes.) - Si <filename>UPDATING</filename> contradice algo que leas aqui, - <filename>UPDATING</filename> tiene preferencia.</para> - - <important> - <para>Leer <filename>UPDATING</filename> no es un sustituto aceptable a la suscripcion a la lista adecuada, como se describió antes. Los dos requisitos son complementarios no exclusivos.</para> - </important> - </sect2> - - <sect2> - <title>Comprueba <filename>/etc/make.conf</filename></title> - <indexterm> - <primary><filename>make.conf</filename></primary> - </indexterm> - - <para>Examina los archivos - <filename>/etc/defaults/make.conf</filename> y - <filename>/etc/make.conf</filename>. El primero contiene algunas definiciones por defecto – la mayoría de las cuales ya se han comentado. Para hacer uso de ellas cuando reconstruyas tu sistema desde las fuentes, añadelas a <filename>/etc/make.conf</filename>. Ten en cuenta que cualquier cosa que añadas a <filename>/etc/make.conf</filename> se usa cada vez que ejecutas <command>make</command>, así que es una buena idea colocarles algo sensato para tu sistema.</para> - - <para>Un usario típico querrá probablemente copiar las líneas - <makevar>CFLAGS</makevar> y - <makevar>NOPROFILE</makevar> encontradas en - <filename>/etc/defaults/make.conf</filename> a - <filename>/etc/make.conf</filename> y ponerles un comentario.</para> - - <para>Examina las otras definiciones (<makevar>COPTFLAGS</makevar>, - <makevar>NOPORTDOCS</makevar> y sucesivamente) y decide si son importantes para ti.</para> - </sect2> - - <sect2> - <title>Actualiza <filename>/etc/group</filename></title> - - <para>Este directorio <filename>/etc</filename> contiene una gran parte de la información sobre la configuración de tu sistema ,asi como scripts que se ejecutan al iniciarse el sistema. Algunos de estos scripts cambian de versión en versión de FreeBSD.</para> - - <para>Algunos de estos archivos de configuración son usados en el funcionamiento del día a día del sistema. En particular, - <filename>/etc/group</filename>.</para> - - <para>Ha habido ocasiones durante la instalación de - <quote>make world</quote> que se ha supuesto la existencia de ciertos nombres de usuario o grupos. - Cuando se lleva a cabo una actualizacion es probable que alguno de estos grupos no existan. -Esto causa problemas cuando actualizas. para> - - <para>El ejemplo más reciente de esto es cuando el grupo <quote/ppp/ - (llamado despues <quote/network/) fue añadido. A los usarios les falló el proceso de instalación cuando partían del subsistema - <filename>ppp</filename> fueron instaladas usando un nombre de grupo inexistente (para ellas).</para> - - <para>La solución es examinar - <filename>/usr/src/etc/group</filename> y comparar su lista con la tuya.Si hay algún grupo en el nuevo archivo que no están en tu archivo entonces cópialos encima. - De la misma forma, deberías renombrar cualquier grupo en <filename>/etc/group</filename> que tenga la misma GID pero un nombre diferente para aquellas en - <filename>/usr/src/etc/group</filename>.</para> - - <tip> - <para>Si te sientes particularmente paranoico, puedes comprobar tu sistema para ver que archivos pertenecen al grupo que estas renombrando o borrando.</para> - - <screen>&prompt.root; <userinput>find / -group <replaceable>GID</replaceable> -print</userinput></screen> - - <para>mostrará todos los ficheros que pertenecen al grupo - <replaceable>GID</replaceable> (que puede ser o un nombre de grupo o una ID numérica de grupo).</para> - </tip> - </sect2> - - <sect2 id="makeworld-singleuser"> - <title>Cambiando a modo Monousuario</title> - <indexterm><primary>single-user mode</primary></indexterm> - - <para>Puede que quieras compilar el sistema en modo monousuario.Aparte del beneficio obvio de hacer que las cosas vayan más rapido , - reinstalar el sistema tocará un montón de archivos importantes del sistema, todos los binarios standard del sistema, bibliotecas incluso archivos y demás. - -Cambiar estas cosas en un sistema en funcionamiento (especialmente si en ese momento hay usuarios activos en el sistema) es ganas de meterse en lios.</para> - - <indexterm><primary>modo multiusuario</primary></indexterm> - <para>Otro método es compilar el sistema en modo multiusuario y luego cambiar a modo monousuario para la instalación.Si te gustaría hacerlo de esta forma, simplemente retrasa los siguientes pasos hasta que hayas completado la construcción.</para> - - <para>Como superusuario, ejecuta </para> - - <screen>&prompt.root; <userinput/shutdown now/</screen> - - <para>desde un sistema en funcionamiento, al que cambiará a modo monousuario.</para> - - <para>Alternativamente, reinicia el sistema, y en el boot promt, introduce la <option>-s</option> flag. El sistema se reiniciará en modo monousuario.En el promt de la shell deberías ejecutar:</para> - - <screen>&prompt.root; <userinput>fsck -p</userinput> -&prompt.root; <userinput>mount -u /</userinput> -&prompt.root; <userinput>mount -a -t ufs</userinput> -&prompt.root; <userinput>swapon -a</userinput></screen> - - <para>Esto comprueba los sistemas de archivos, remounts <filename>/</filename> - lectura/escritura, mounts, todos los sistemas de archivos UFS referenciados en - <filename>/etc/fstab</filename> y entonces hace los cambios indicados.</para> - </sect2> - - <sect2> - <title>Quita <filename>/usr/obj</filename></title> - - <para>Mientras algunas partes son reconstruidas ellas se colocan en directorios que (por defecto) estan bajo <filename>/usr/obj</filename>. Los directorios shadow estos bajo - <filename>/usr/src</filename>.</para> - - <para>Puedes acelerar el proceso <quote>make world</quote> y posiblemente ahorrarte dolores de cabeza por las dependencias quitando este directorio también.</para> - - <para>Algunos archivos bajo <filename>/usr/obj</filename> pueden tener colocada la señal inmutable (immutable flag set) (mira &man.chflags.1; para mas información) - que deberá ser quitada primero.</para> - - <screen>&prompt.root; <userinput>cd /usr/obj</userinput> -&prompt.root; <userinput>chflags -R noschg *</userinput> -&prompt.root; <userinput>rm -rf *</userinput></screen> - </sect2> - - <sect2> - <title>Recompilar la fuente</title> - - <sect3> - <title>Guardando la salida (Output)</title> - - <para>Es una buena idea guardar la salida que obtienes cuando se ejecuta - &man.make.1; en otro archivo. Si algo sale mal tendrás una copia del mensaje de error.Aunque esto puede no ayudarte en el diagnóstico de que ha salido mal, puede ser útil si mandas tu problema a una de las listas de &os; .</para> - - <para>La forma más fácil de hacer esto es usar la orden &man.script.1; - , con un parámetro que indique el nombre del archivo donde guardar los datos de salida.Podrías hacer esto inmediatamente antes de reconstruir world, y luego teclear <userinput>exit</userinput> - cuando el proceso ha terminado.</para> - - <screen>&prompt.root; <userinput>script /var/tmp/mw.out</userinput> -Script started, output file is /var/tmp/mw.out -&prompt.root; <userinput>make TARGET</userinput> -<emphasis>… compile, compile, compile …</emphasis> -&prompt.root; <userinput>exit</userinput> -Script done, …</screen> - <para>Si haces esto, <emphasis>no</emphasis> guardes el output en <filename>/tmp</filename>. Este directorio podria ser vaciado en el proximo arranque. - Un lugar mejor para almacenarlo es en - <filename>/var/tmp</filename> (como en el ejemplo anterior) o - en el directorio home de <username>root</username>.</para> - </sect3> +<para>Pendiente de Traducción</para> - <sect3> - <title>Compilar e instalar el Sistema Base (Base System)</title> - <para>Debes estar en <filename>/usr/src</filename> - directory...</para> - - <screen>&prompt.root; <userinput>cd /usr/src</userinput></screen> - - <para>(a menos que, por supuesto, tu código fuente este en otra parte, en ese caso cambia a ese directorio).</para> - <indexterm><primary><command>make</command></primary></indexterm> - - <para>Para reconstruir world utiliza el &man.make.1; command. Esta orden lee las instrucciones desde el <filename>Makefile</filename>, - que describe como el programa que comprende el &os; debe ser reconstruido.</para> - - <para>El formato general de la línea de ordenes que teclearás es como sigue: </para> - - <screen>&prompt.root; <userinput>make <option>-<replaceable/x/</option> <option>-D<replaceable>VARIABLE</replaceable></option> <replaceable>target</replaceable></userinput></screen> - - <para>En este ejemplo, <option>-<replaceable>x</replaceable></option> - es una opción que pasarías a &man.make.1;. Mira la pagina del manual de - &man.make.1; para un ejemplo de las opciones que puedes pasar.</para> - - <para><option>-D<replaceable>VARIABLE</replaceable></option> - pasa una variable a el <filename>Makefile</filename>. El comportamiento de <filename>Makefile</filename> esta controlado por esas variables.Estas son las mismas variables como estan colocadas en - <filename>/etc/make.conf</filename>, y esto proporciona otra forma de disponerlas.</para> - - <screen>&prompt.root; <userinput>make -DNOPROFILE=true <replaceable>target</replaceable></userinput></screen> - - <para>es otra forma de indicar que las bibliotecas indicadas no se construyan, y corresponde con el </para> - - <programlisting>NOPROFILE= true -# Avoid compiling profiled libraries</programlisting> - - <para>Las líneas en <filename>/etc/make.conf</filename>.</para> - - <para><replaceable>target</replaceable> dicen a &man.make.1; que quieres hacer. Cada <filename>Makefile</filename> define un número de diferentes <quote>objetivos</quote>, y la elección de esos objetivos determina lo que ocurre.</para> - - <para>Algunos objetivos estan listados en - <filename>Makefile</filename>, pero no significa que puedas ejecutarlos - En vez de eso, se usan por el proceso de consrucción para romper los pasos necesarios para reconstruir el sistema en un número de sub-pasos.</para> - - <para>La mayoría de las veces, no necesitas pasar ningun parametro a - &man.make.1;, y asi tu orden se parecerá a esto:</para> - - <screen>&prompt.root; <userinput>make <replaceable>target</replaceable></userinput></screen> - - <para>A partir de la versión 2.2.5 de &os; (en realidad, se creó por primera vez en la &os.current; branch, y luego posteriormente colocado en - &os.stable; a mitad de camino entre 2.2.2 y 2.2.5) el objetivo (target) - <maketarget>world</maketarget> se ha dividido en dos. - <maketarget>buildworld</maketarget> y - <maketarget>installworld</maketarget>.</para> - - <para>Como el nombre implica, <maketarget>buildworld</maketarget> - construye un nuevo árbol bajo <filename>/usr/obj</filename>, - y <maketarget>installworld</maketarget>instala este árbol en una máquina con la versión current.</para> - - <para>Esto es muy útil por dos motivos.Primero, te permite construir de forma segura, sabiendo que ningún componente del sistema current será afectado. - La construcción es <quote>self hosted</quote>. Por esto puedes con seguridad ejecutar <maketarget>buildworld</maketarget> en una m6aacute;quina funcionado en modo multiusuario sin miedo a efectos indeseados.Aunque aun es recomendable que ejecutes - - <maketarget>installworld</maketarget> en modo monousuario.</para> - - <para>En segundo lugar, permite usar NFS mounts para actualizar multiples m6aacute;quinas en tu red. Si tienes tres máquinas, A, B y C que quieres actualizar, ejecuta <command>make - buildworld</command> y <command>make installworld</command> en - A. B y C deben luego mount NFS <filename>/usr/src</filename> - y <filename>/usr/obj</filename> desde A, y puedes luego ejecutar - <command>make installworld</command> para instalar los resultados de -la construcción en B y C.</para> - - <para>Aunque el <maketarget>world</maketarget> target aún exista, - se recomienda firmemente que no lo uses.</para> - - <para>Ejecutar</para> - - <screen>&prompt.root; <userinput>make buildworld</userinput></screen> - - <para>Ahora es posible especificar un opción -j - <command>make</command> lo que provocará varios procesos simultaneos. -Esto es lo mas útil en máquinas con multiples CPU. -Sin embargo, ya que el proceso de compilación es IO bound - mas que CPU bound es también útil en máquinas con una sóla CPU.</para> - - <para>En una típica máquina mono-CPU ejecutarías:</para> - - <screen>&prompt.root; <userinput>make -j4 buildworld</userinput></screen> - - <para>&man.make.1; tendrías mas de 4 procesos ejecutandose en cada momento. -La evidencia empírica comentada en las listas de correo muestran que esto da el mejor resultado.</para> - - <para>Si tienes una máquina multi-CPU y estas usando un kernel configurado SMP - prueba valores entre 6 y 10 y mira como se aceleran las cosas.</para> - - <para>Estas advertido de que esto es aún experimental y que hacer commits al código fuente del árbol puede ocasionalmente romper esta posibilidad. -Si world falla al compilar usando este parámetro intentalo de nuevo sin él, antes de informar de los problemas. </para> - </sect3> - - <sect3> - <title>Momento (Timings)</title> - <indexterm> - <primary><command>make world</command></primary> - <secondary>timings</secondary> - </indexterm> - - <para>Muchos factores influyen en el tiempo de construcción, pero generalmente un Pentium 3 500 Mhz con 128 MB de RAM tardara 2 horas en construir el árbol - &os.stable; , sin trucos o cortes durante el proceso. -Un árbol &os.current; tardará algo mas.</para> - </sect3> - </sect2> - - <sect2> - <title>Compilar e instalar un nuevo Kernel</title> - <indexterm> - <primary>kernel</primary> - <secondary>compiling</secondary> - </indexterm> - - <para>Para sacar el máximo provecho de nuestro sistema debemos recompilar el kernel. -Esto es prácticamente una necesidad, ya que ciertas estructuras de memoria podrían haber cambiado y ciertos programas como &man.ps.1; y &man.top.1; fallarán hasta que el kernel y la versiones del código fuente sean la misma. </para> - - <para>El modo más simple y seguro de hacer esto es construir e instalar un kernel basado en <filename>GENERIC</filename>. Mientras - <filename>GENERIC</filename> puede no teer todos los dispositivos necesarios para tu sistema, debe tener todo lo necesario para arrancar tu sistema de nuevo en modo monousuario. - Esta es una buena prueba de que el nuevo sistema funciona correctamente. -Después de hacer el arranque desde - <filename>GENERIC</filename> y verificar que el sistema funciona puedes luego construir un nuevo kernel basado en el archivo de configuración de tu kernel normal.</para> - - <para>Si estas actualizando de &os; 4.0 a superior entonces el procedimiento standard de construcción de kernel (descrito <xref linkend="kernelconfig">) - es desaconsejable.En vez de eso deberías, ejecutar estas ordenes</para> - - <screen>&prompt.root; <userinput>cd /usr/src</userinput> -&prompt.root; <userinput>make buildkernel</userinput> -&prompt.root; <userinput>make installkernel</userinput></screen> - - <para>Si estás actualizando a una versión de &os; por debajo de 4.0 usa el procedimiento de construcción standard del kernel. - Sin embargo, se recomienda que uses una nueva versión de &man.config.8;, usando una línea de ordenes como esta.</para> - - <screen>&prompt.root; <userinput>/usr/obj/usr/src/usr.sbin/config/config <replaceable>KERNELNAME</replaceable></userinput></screen> - </sect2> - - <sect2> - <title>Arranca en Modo Usuario Único </title> - <indexterm><primary>single-user mode</primary></indexterm> - - <para>Deberías arrancar en modo usuario único para probar como funciona el nuevo kernel.Haz esto siguiendo las instrucciones en - <xref linkend="makeworld-singleuser">.</para> - </sect2> - - <sect2> - <title>Instalar los Nuevos Binarios del Sistema </title> - - <para>Si estuvieses construyendo una version de &os; suficientemente reciente como para haber usado <command>make buildworld</command> entonces deberías usar ahora el - - <maketarget>installworld</maketarget>para instalar el nuevo sistema de binarios. - </para> - - <para>Ejecuta</para> - - <screen>&prompt.root; <userinput>make installworld</userinput></screen> - - <note> - <para>Si especificaste variables en la línea de orden <command>make - buildworld</command> deberías poner las mismas variables en la línea de orden de - <command>make installworld</command> . -Esto no es necesariamente cierto para otras opciones; por ejemplo, -, <option>-j</option> nunca debe ser usada con - <maketarget>installworld</maketarget>.</para> - - <para>Por ejemplo, si ejecutaste:</para> - - <screen>&prompt.root; <userinput>make -DNOPROFILE=true buildworld</userinput></screen> - - <para>debes instalar los resultados con:</para> - - <screen>&prompt.root; <userinput>make -DNOPROFILE=true installworld</userinput></screen> - - <para>de otro modo, instalaría bibliotecas seleccionadas que no habían sido construidas durante la fase <command>make buildworld</command> - .</para> - </note> - </sect2> - - <sect2> - <title>Actualización de archivos no actualizados por <command>make world</command></title> - - <para>Rehacer el world no actualizará ciertos directorios (en - particular, <filename>/etc</filename>, <filename>/var</filename> y - <filename>/usr</filename>) con los archivos de configuración nuevos o cambiados.</para> - <indexterm><primary><command>mergemaster</command></primary></indexterm> - - <para>El medio más simple para actualizar estos archivos es usar - &man.mergemaster.8;, aunque es posible hacerlo manualmente si lo prefieres. Nosotros te recomendamos fervientemente usar &man.mergemaster.8;, aunque, si lo haces entonces puedes saltar a la siguiente sección <link linkend="update-dev"> </link>, puesto que &man.mergemaster.8; es muy simple de usar. -Deberías leer la página del manual primero, y hacer una copia de respaldo de - <filename>/etc</filename> por si algo va mal.</para> - - <para>Si deseas hacer la actualización manualmente no basta con que copies los archivos de - <filename>/usr/src/etc</filename> a <filename>/etc</filename> y que funcione. Algunos de estos archivos deben ser <quote>instalados</quote> - primero. Esto es porque el directorio<filename>/usr/src/etc</filename> - <emphasis>no es </emphasis> una copia de lo que tu directorio - <filename>/etc</filename> debería parecer. Además, hay archivos que deberían estar en <filename>/etc</filename> que no están en <filename>/usr/src/etc</filename>.</para> - - <para>El medio más sencillo de hacer esto a mano es instalar los archivos en un nuevo directorio y luego trabajar con ellos buscando las diferencias.</para> - - <warning> - <title>Haz una copia de tu existente <filename>/etc</filename></title> - - <para>Aunque en teoría nada va a tocar este directorio automáticamente, es mejor estar seguros. Así que copia tu existente <filename>/etc</filename> en lugar seguro. - Algo como:</para> - - <screen>&prompt.root; <userinput>cp -Rp /etc /etc.old</userinput></screen> - - <para><option>-R</option> hace una copia recursiva , <option>-p</option> - almacena los tiempos, propiedad de los archivos y cosas así.</para> - </warning> - - <para>Necesitas construir el grupo de directorios que hagan el papel de / para instalar el nuevo - <filename>/etc</filename> y otros archivos dentro. - <filename>/var/tmp/root</filename> es una elección razonable, y también se requiere un número de subdirectorios debajo de este.</para> - - <screen>&prompt.root; <userinput>mkdir /var/tmp/root</userinput> -&prompt.root; <userinput>cd /usr/src/etc</userinput> -&prompt.root; <userinput>make DESTDIR=/var/tmp/root distrib-dirs distribution</userinput></screen> - - <para>Esto construirá la necesaria estructura de directorio e intalará los archivos.Un montón de directorios que habrán sido creados bajo - <filename>/var/tmp/root</filename> estan vacios y deberan ser borrados. - Una forma muy f6aacute;cil de hacerlo es:</para> - - <screen>&prompt.root; <userinput>cd /var/tmp/root</userinput> -&prompt.root; <userinput>find -d . -type d | xargs rmdir 2>/dev/null</userinput></screen> - - <para>Así quitamos todos los directorios vacios. (El error standard es redirigido a <filename>/dev/null</filename> para prevenir las advertencias sobre directorios que no están vacios.) </para> - - <para><filename>/var/tmp/root</filename> ahora contiene todos los archivos que deberían estar colocados en lugares adecuados bajo - <filename>/</filename>. Ahora tienes que ir a cada archivo y determinar cuánto difieren de tus archivos exiting. - </para> - - <para>Date centa que algunos de los archivos que se habrán instalado en - <filename>/var/tmp/root</filename> tienen un leading <quote/./. En el momento de escribir esta documentación los únicos archivos como estos son los archivos de inicio de la shell en - <filename>/var/tmp/root/</filename> y - <filename>/var/tmp/root/root/</filename>, aunque podría haber otros - (dependiendo de cuando leas esto.Asegurate de usar - <command/ls -a/ para capturarlos.</para> - - <para>El sistema más fácil para hacerlo es usar &man.diff.1; para comparar los dos ficheros.</para> - - <screen>&prompt.root; <userinput>diff /etc/shells /var/tmp/root/etc/shells</userinput></screen> - - <para>Esto te mostrará las diferencias entre tu archivo - <filename>/etc/shells</filename>y el nuevo archivo - <filename>/etc/shells</filename> . Úsalos para decidir si fusionas con los cambios que hayas hecho o si lo copias encima de tu viejo archivo.</para> - - <tip> - <title>Nombra el Nuevo Directorio de Root - (<filename>/var/tmp/root</filename>) con un Sello temporal (time stamp), de esta forma puedes comparar fácilmente las diferencias entre versiones </title> - - <para>Reconstruir frecuentemente el world significa que actualizas - <filename>/etc</filename> tambien frecuentemente, lo que puede ser un poco pesado.</para> - - <para>Puedes acelerar este proceso manteniendo una copia del último grupo de archivos cambiados que hayas fusionado en <filename>/etc</filename>. - El siguiente metodo te da una idea de como hacer esto.</para> - - <procedure> - <step> - <para>Make the world como normal. Cuando quieras actualizar - <filename>/etc</filename>y los otros directorios, dále al directorio de destino un nombre basado en la fecha actual. Si estuvieses haciendo esto el 14 de Febrero de 1998 harías lo siguiente.</para> - - <screen>&prompt.root; <userinput>mkdir /var/tmp/root-19980214</userinput> -&prompt.root; <userinput>cd /usr/src/etc</userinput> -&prompt.root; <userinput>make DESTDIR=/var/tmp/root-19980214 \ - distrib-dirs distribution</userinput></screen> - </step> - - <step> - <para>Añade los cambios del directorio según lo explicado arriba.</para> - - <para><emphasis>No</emphasis> quites el directorio - <filename>/var/tmp/root-19980214</filename> cuando hayas acabado.</para> - </step> - - <step> - <para>Cuando hayas descargado la ultima versión de las fuentes y las hayas rehecho, sigue el paso 1.Esto te dará un nuevo directorio, que podría llamarse - <filename>/var/tmp/root-19980221</filename> (si esperas una semana entre las actualizaciones).</para> - </step> - - <step> - <para>Tu puedes ahora ver las diferencias que se han hecho en esa semana intermedia usando &man.diff.1; puedes usar diff para buscar recursivamente las diferencias entre los dos directorios.</para> - - <screen>&prompt.root; <userinput>cd /var/tmp</userinput> -&prompt.root; <userinput>diff -r root-19980214 root-19980221</userinput></screen> - - <para>Típicamente, este conjunto de diferencias serán más pequeñas que las que hay entre - <filename>/var/tmp/root-19980221/etc</filename> y - <filename>/etc</filename>. Como las diferencias son menores, es más fácil enviar esos cambios hasta tu directorio - <filename>/etc</filename> .</para> - </step> - - <step> - <para>Ahora puedes quitar el más viejo de los dos directorios - <filename>/var/tmp/root-*</filename>.</para> - - <screen>&prompt.root; <userinput>rm -rf /var/tmp/root-19980214</userinput></screen> - </step> - - <step> - <para>Repite el proceso cada vez que necesites añadir un cambio a - <filename>/etc</filename>.</para> - </step> - </procedure> - - <para>Puedes usar &man.date.1; para automatizar la generación de los nombres de directorio.</para> - - <screen>&prompt.root; <userinput>mkdir /var/tmp/root-`date "+%Y%m%d"`</userinput></screen> - </tip> - </sect2> - - <sect2 id="update-dev"> - <title>Actualiza <filename>/dev</filename></title> - - <note> - <title>DEVFS</title> - <indexterm><primary>DEVFS</primary></indexterm> - <para>Si estás usando DEVFS esto no sería necesario.</para> - </note> - - <para>En la mayoría de los casos, la herramienta &man.mergemaster.8 se dar6aacute; cuenta cuando es necesario actualizar dispositivos y se ofrecerá a hacerlo automáticamente. -Estas instrucciones te dirán como hacerlo manualmente.</para> - - <para>Por motivos de seguridad, este es un proceso con varios pasos.</para> - - <procedure> - <step> - <para>Copia <filename>/var/tmp/root/dev/MAKEDEV</filename> en - <filename>/dev</filename>.</para> - - <screen>&prompt.root; <userinput>cp /var/tmp/root/dev/MAKEDEV /dev</userinput></screen> - <indexterm> - <primary><filename>MAKEDEV</filename></primary> - </indexterm> - - <para>Si usaste &man.mergemaster.8; para actualizar <filename>/etc</filename>, entonces tu script - <filename>MAKEDEV</filename> debería haberse actualizado ya, aunque no hace daño si lo compruebas (con &man.diff.1;)y lo copias manualmente si fuese necesario.</para> - </step> - - <step> - <para>Ahora, toma una instantánea de tu actual - <filename>/dev</filename>. Esta instantánea necesita contener los permisos, propiedades, números mayores y menores de cada archivo, pero no debería contener un sello temporal (time stamp) La forma más fácil de hacerlo es usar &man.awk.1; para sacar alguna información.</para> - - <screen>&prompt.root; <userinput>cd /dev</userinput> -&prompt.root; <userinput>ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.out</userinput></screen> - </step> - - <step> - <para>Rehacer todos los dispositivos.</para> - - <screen>&prompt.root; <userinput/sh MAKEDEV all/</screen> - </step> - - <step> - <para>Copia otra instantánea del directorio , esta vez en - <filename>/var/tmp/dev2.out</filename>. Ahora mira entre esos dos archivos por si se te olvido crear algun dispositivo. No debería haber ninguno, pero es mejor estar seguro que lamentarlo.</para> - - <screen>&prompt.root; <userinput>diff /var/tmp/dev.out /var/tmp/dev2.out</userinput></screen> - - <para>Podrás detectar más fácilmente discrepancias en las cuotas del disco que tienen que ver con mandatos tales como - - <screen>&prompt.root; <userinput>sh MAKEDEV sd0s1</userinput></screen> - - Para recrear las entradas a las cuotas. Tus circunstancias especificas pueden variar.</para> - </step> - </procedure> - </sect2> - - <sect2> - <title>Actualiza <filename>/stand</filename></title> - - <note> - <para>Este paso se incluye para completar. Puede omitirse sin miedo.</para> - </note> - - <para>Para terminar completamente , podrías querer actualizar los archivos en - <filename>/stand</filename> tan bien. Estos archivos consisten en enlaces sostenidos (hard - links) a el binario <filename>/stand/sysinstall</filename>. Este binario - debería estar enlazado estáticamente, para que pueda funcionar cuando ningún otro sistema de archivos (y en particular <filename>/usr</filename>)haya sido montado.</para> - - <screen>&prompt.root; <userinput>cd /usr/src/release/sysinstall</userinput> -&prompt.root; <userinput>make all install</userinput></screen> - </sect2> - - <sect2> - <title>Reinicio</title> - - <para>Ya esta hecho. Despues de que hayas verificado que todo parece estar en el lugar adecuado puedes reiniciar el sistema. -Un simple&man.fastboot.8; lo hará.</para> - - <screen>&prompt.root; <userinput>fastboot</userinput></screen> - </sect2> - - <sect2> - <title>Finalizado</title> - - <para>Deberías tener ahora tu sistema operativo actualizado con exito. - Felicidades.</para> - - <para>Si las cosas fueron ligeramente mal, es facil reconstruir una parte del sistema. Por ejemplo, si accidentalmente borraste - <filename>/etc/magic</filename> como parte de la actualización o al añadir algo a - <filename>/etc</filename>, la orden (command) &man.file.1; dejara de funcionar. -En ese caso, el arreglo sería ejecutar:</para> - - <screen>&prompt.root; <userinput>cd /usr/src/usr.bin/file</userinput> -&prompt.root; <userinput/make all install/</screen> - </sect2> - - <sect2> - <title>Preguntas</title> - - <qandaset> - <qandaentry> - <question> - <para>¿Es necesario rehacer world en cada cambio?</para> - </question> - - <answer> - <para>No hay una respuesta fácil para esto, depende de la naturaleza del cambio. - Por ejemplo, si sólo ejecutaste CVSup, y mostró las siguientes líneas mientras se actualizaba ,</para> - - <screen><filename>src/games/cribbage/instr.c</filename> -<filename>src/games/sail/pl_main.c</filename> -<filename>src/release/sysinstall/config.c</filename> -<filename>src/release/sysinstall/media.c</filename> -<filename>src/share/mk/bsd.port.mk</filename></screen> - - <para>Probablemente no merezca la pena reconstruir world entero. - Puedes ir a los subdirectorios apropiados y - <command>make all install</command>, y ya esta. Pero si el cambio fue mayor, por ejemplo - <filename>src/lib/libc/stdlib</filename> entonces deberías o rehacer world, o al menos aquellas de sus partes que estan estáticamente unidas (asi como cualquier otra cosa que hayas añadido y que esté unida estáticamente).</para> - - <para>Es cuestión de que elijas. Podrías estar contento ejecutando make world digamos cada quincena , y dejar que los cambios se acumulen hasta ese día. - O quizá quieras hacerlo sólo a aquellas que hayan cambiado, y tengas confianza en haber comprobado todas las dependencias.</para> - - <para>Y, por supuesto, todo esto depende de cada cuánto tiempo actualices y si estas usando la versión stable o current.</para> - </answer> - </qandaentry> - - <qandaentry> - <question> - <para>¿Cuando compilo falla con montones de señales de error 11 (u otro número de señal). ¿Qué ha ocurrido?</para> - </question> - <indexterm><primary>senal 11</primary></indexterm> - - <answer> - - <para>Esto normalmente es una indicación de problemas de máquina. -Al ejecutar make world ((Re)making world) se produce una sobrecarga del ordenador, que frecuentemente desencadena problemas de memoria.Esto se manifiesta cuando el compilador agoniza recibiendo señales extrañas.</para> - - <para>Un indicador seguro de esto, es si puedes repetir el make y muere en un punto diferente del proceso. </para> - - <para>En este cambio hay poco que puedas hacer excepto comenzar a probar los compenentes de tu máquina para saber cual es el que falla.</para> - </answer> - </qandaentry> - - <qandaentry> - <question> - <para>¿Puedo quitar <filename>/usr/obj</filename> cuando he terminado? -</para> - </question> - - <answer> - <para>La respuesta corta es si.</para> - - <para><filename>/usr/obj</filename> contiene todos los archivos binarios (object files) -que se produjeron durante la fase de compilación.Normalmente, uno de los primeros pasos en el proceso <quote/make world/ es quitar este directorio y hacer uno nuevo. En este caso, mantener - <filename>/usr/obj</filename> después de haber terminado no tiene mucho sentido, y liberarás un buen montón de espacio de disco (alrededor de 340MB).</para> - - <para>Aunque, si sabes lo que haces puedes hacer que - <quote/make world/ se salte este paso. -Esto hará que la consiguiente construcción vaya más rápido, ya que la mayor parte de las fuentes no necesitarán recompilarse. -La parte molesta de esto es que pueden provocarse problemas de dependencias, haciendo que la construcción falle de forma rara. -Esto genera alboroto en las listas de correo, cuando una persona se queja de que su construcción ha fallado, sin darse cuenta de que es porque ha intentado acortar demasiado.</para> - - <para>Si quieres vivir peligrosamente entonces haz make world, pasando la definición <makevar>NOCLEAN</makevar> , como esto:</para> - - <screen>&prompt.root; <userinput>make -DNOCLEAN world</userinput></screen> - </answer> - </qandaentry> - - <qandaentry> - <question> - <para>¿Puede continuarse una construcción interrumpida? </para> - </question> - - <answer> - <para>Esto depende de como de lejos llegaste hasta encontar el problema.</para> - - <para><emphasis>En general</emphasis> (y esto no es una regla fija) - - El proceso <quote>make world</quote> construye nuevas copias de herramientas esenciales (como &man.gcc.1;, y &man.make.1;) y el sistema de bibliotecas. -Estas herramientas y bibliotecas estan entonces instaladas.Las nuevas herramientas y bibliotecas son usadas para reconstruirse a si mismas, y son instaladas de nuevo.El sistema entero (incluyendo ahora programas normales como &man.ls.1; or &man.grep.1;)es entonces reconstruido con el nuevo sistema de archivos. </para> - - <para>Si estas al final del proceso, y lo sabes (porque has mirado los resultados que estuviste guardando) entonces puedes (bastante seguramente) hacer </para> - - <screen><emphasis>… fix the problem …</emphasis> -&prompt.root; <userinput>cd /usr/src</userinput> -&prompt.root; <userinput>make -DNOCLEAN all</userinput></screen> - - <para>Esto no deshará el trabajo de los previos - <quote>make world</quote>.</para> - - <para>Si ves el mensaje - - <screen>-------------------------------------------------------------- -Building everything.. ---------------------------------------------------------------</screen> - en la salida <quote>make world</quote> entonces es probablemente bastante seguro hacer eso.</para> - - <para>Si tu no ves ese mensaje, o no estas seguro, entonces es siempre mejor estar seguro que lamentarse, y comenzar otra vez desde el principio.</para> - </answer> - </qandaentry> - - <indexterm><primary>NFS</primary></indexterm> - <qandaentry> - <question> - <para>¿Puedo usar una máquina como<emphasis/master/ para actualizar montones de maquinas (NFS)?</para> - </question> - - <answer> - <para>Esto es una tarea bastante sencilla, y puede ahorrar horas de compilacion en muchas máquinas.Simplemente ejecuta - <makevar>buildworld</makevar> en una máquina central, y entonces NFS monta - <filename>/usr/src</filename> y - <filename>/usr/obj</filename> en la máquina remota y - <makevar>installworld</makevar> alli.</para> - </answer> - </qandaentry> - - <qandaentry> - <question> - <para>¿Cómo acelero making the world?</para> - </question> - - <answer> - <itemizedlist> - <listitem> - <para>Ejecuta en modo monousuario.</para> - </listitem> - - <listitem> - <para>Pon <filename>/usr/src</filename> y - <filename>/usr/obj</filename> en sistemas de archivos diferentes en discos separados. Si es posible, pon esos discos en controladoras de discos separadas.</para> - </listitem> - - <listitem> - <para>Aún mejor, pon esos sistemas de archivos a través de multiples discos usando &man.ccd.4 </para> - </listitem> - - <listitem> - <para>Desactiva el perfil (coloca <quote>NOPROFILE=true</quote> en <filename>/etc/make.conf</filename>). Casi seguro que no lo necesitas.</para> - </listitem> - - <listitem> - <para>También en <filename>/etc/make.conf</filename>, coloca - <makevar>CFLAGS</makevar> a algo como <quote>-O - -pipe</quote>. La optimización <quote>-O2</quote> es mucho más lenta y la diferencia de optimización entre <quote>-O</quote> y <quote>-O2</quote> es normalmente poco importante. - <quote>-pipe</quote> permite que el compilador utilice tuberias (pipes) antes que archivos temporales lo que ahorra accesos al disco (a expensas de memoria). </para> - </listitem> - - <listitem> - <para>Pon la opción <option>-j<n></option> para hacer que se ejecuten multiples procesos en paralelo.Esto ayuda se tenga un procesador o varios.</para> - </listitem> - - <listitem><para>El sistema de archivos que contiene - <filename>/usr/src</filename> puede ser montado ( o vuelto a montar) -con la opción -<option>noatime</option> . Esto evita al sistema de archivos el grabar la hora de acceso al archivo. -Probablemente no te haga falta esta información para nada. + </sect1> - <screen>&prompt.root; <userinput>mount -u -o noatime /usr/src</userinput></screen> - - <warning> - <para>Este ejemplo supone que <filename>/usr/src</filename> esta en su propio sistema de archivo.Si no está (Por ejemplo, si es parte de <filename>/usr</filename> ) Entonces necesitarás el punto de montaje de ese sistema de archivos, y no - <filename>/usr/src</filename>.</para> - </warning> - </para> - </listitem> - - <listitem> - <para>El sistema de archivos que contiene<filename>/usr/obj</filename> puede montarse (o volverse a montar) con la opción - <quote>async</quote>. -Esto hace que el disco escriba de modo asíncrono. + <sect1 id="small-lans"> + <title>Redes pequeñas</title> - En otras palabras, el grabar se completa inmediatamente, y el dato es escrito en el disco unos pocos segundos después.Esto hace que las grabaciones se agrupen juntas y puede ser una gran aceleración del funcionamiento.</para> + <para>Pendiente de Traducción</para> - <warning> - <para>Ten en cuenta que esta opción hace el sistema de archivos más fragil.Con esta opción hay un incremento de posibilidades, si la corriente falla, de que el sistemas de archivos sea irrecuperable cuando la m6aacute;quina se reinicie.</para> - - <para>Si <filename>/usr/obj</filename> es lo único en este sistema de archivos entonces no hay problema.Si tienes otros datos valiosos entonces asegúrate de tener copias recientes antes de habilitar esta opción.</para> - </warning> - - <screen>&prompt.root; <userinput>mount -u -o async /usr/obj</userinput></screen> - - <warning> - <para>Como arriba, si<filename>/usr/obj</filename>no está en su propio sistema de archivos, reemplazalo en el ejemplo con el nombre del apropiado punto de montaje.</para> - </warning> - </listitem> - </itemizedlist> - </answer> - </qandaentry> - <qandaentry> -<question> -<para>¿Queé hago si algo sale mal?</para> -</question> -<answer> -<para>Asegurate de que tu entorno no tiene extrañas cruft de construcciones anteriores.Esto es suficiente.</para> -<screen> -&prompt.root; <userinput>chflags -R noschg /usr/obj/usr</userinput> -&prompt.root;<userinput>rm -rf /usr/obj/usr</userinput> -&prompt.root;<userinput>cd /usr/src</userinput> -&prompt.root;<userinput> make cleandir</userinput> -&prompt.root;<userinput>make cleandir</userinput></screen> -<para>Sí , <command>make cleandir</command> realmente debería ejecutarse dos veces.</para> -<para>Entonces comienza el proceso de nuevo, empezando con <command>make buildworld</command>.</para> -<para>Si aún tienes problemas, envía el error y la salida de <command>uname -a</command>a &a.questions;. -¡Prepárate para contestar preguntas sobre tu setup</para> -</answer> -</qandaentry> - </qandaset> - </sect2> - </sect1> </chapter> <!-- |