This repository has been archived by the owner on Apr 10, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path5_administracion_software.html
453 lines (431 loc) · 19.3 KB
/
5_administracion_software.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=1024, user-scalable=no">
<title>LPIC Slides</title>
<!-- Required stylesheet -->
<link rel="stylesheet" href="core/deck.core.css">
<link rel="stylesheet" href="extensions/status/deck.status.css">
<link rel="stylesheet" href="extensions/scale/deck.scale.css">
<link rel="stylesheet" href="extensions/hash/deck.hash.css">
<link rel="stylesheet" href="themes/style/lpic_slides.css">
<link rel="stylesheet" href="themes/transition/horizontal-slide.css">
<!-- Required Modernizr file -->
<script src="modernizr.custom.js"></script>
</head>
<body>
<header>
<span><a href="http://josecriane.com/lpic/">Inicio</a></span>
</header>
<!-- Begin slides. Just make elements with a class of slide. -->
<article class="deck-container">
<section class="slide">
<h1>Administración de Software</h1>
</section>
<section class="slide">
<h2>Paquetes</h2>
<p>En los sistemas Linux, el software suele gestionarse mediante paquetes.</p>
<ul>
<li class="slide">
Existen 3 grandes clases de paquetes.
<ul>
<li class="slide"><strong>Tarball</strong>: Independiente de la distribución de Linux usada, suelen contener el código fuente en su interior para ser compilado.</li>
<li class="slide"><strong>RPM</strong>: Paquetes propios de RedHat, y de las distribuciones derivadas de esta. </li>
<li class="slide"><strong>DEB</strong>: Paquetes de las distribuciones derivadas de Debian.</li>
</ul>
</li>
<li class="slide">
<p>Generalmente los gestor de paquetes mantiene la siguiente información, para ayudar a evitar problemas:
<ul>
<li class="slide">
<strong>Paquetes</strong>: Son los contenedores del software, suelen estar formados por decenas de ficheros.
</li>
<li class="slide">
<strong>BD</strong> de los paquetes instalados en el sistema, para evitar que se intente instalar de nuevo un paquete que ya se encuentra en el sistema, haciendo que se ahorre espacio en el disco.
</li>
<li class="slide">
<strong>Dependencias</strong>: El software, normalmente, necesita de otro software o de librerías, para su correcta ejecución.
</li>
<li class="slide">
<strong>Checksums</strong>: Ayudan a verificar la validez del software.
</li>
<li class="slide">
Herramientas para la creación de <strong>binarios</strong>, que ayudaran en caso de tener que generar el fichero ejecutable de nuevo.
</li>
</ul>
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>RPM</h2>
<ul>
<li>
Sistema de paquetes principal de RedHat, Fedora, Suse...
</li>
<li class="slide">
<pre>packagename.X.X.X-Y.Arch.rpm</pre>
</li>
<li class="slide">
<strong>packagename</strong>: Nombre del paquete.
</li>
<li class="slide">
<strong>X.X.X</strong>: Version del software.
</li>
<li class="slide">
<strong>Y</strong>: Numero de compilación, suele ser generado por el administrador de paquetes, y puede tener cambios hechos por los administrador del paquete.
</li>
<li class="slide">
<strong>Arch</strong>: Arquitectura para la cual está compilado el paquete, puede ser <code>x86, x86_64, i386, i686</code>
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>RPM</h2>
<ul>
<li>
Los RPM son bastante estándar, sin embargo pueden presentar los siguientes problemas al intentar instalarlos en distribuciones para las cuales no fueron generados.
</li>
<li class="slide">
Las dependencias del software pueden varias de una distribución a otra.
</li>
<li class="slide">
Las versiones de RPM pueden ser distintas.
</li>
<li class="slide">
Los paquetes pueden tener marcadas las dependencias por el nombre del paquete del que dependen, esto implica que si otra distribución tiene un nombre distinto para esa dependencia el paquete no se instalará.
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>RPM</h2>
<ul>
<li class="slide">
<pre>rpm [OPERACION] [OPCIONES][PAQUETE]</pre>
</li>
<li class="slide">
Las operaciones más típicas son:
<ul>
<li class="slide"><code>-i</code>, instala el paquete.</li>
<li class="slide"><code>-U</code>, instala o actualiza el paquete si este ya existía en el sistema.</li>
<li class="slide"><code>-F</code>, actualiza el paquete, si existe.</li>
<li class="slide"><code>-q</code>, averigua el estado de un paquete.</li>
<li class="slide"><code>-e</code>, elimina un paquete del sistema.</li>
</ul>
</li>
<li class="slide">
Y las opciones más útiles son:
<ul>
<li class="slide"><code>--force</code>, fuerza la instalación del paquete, aunque sobrescriba otros.</li>
<li class="slide"><code>-h</code>, muestra un proceso de avance usando <strong>#</strong>.</li>
<li class="slide"><code>--test</code>, comprueba las dependencias, antes de instalar un paquete.</li>
</ul>
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>YUM</h2>
<ul>
<li class="slide">
<pre>yum [OPCIONES] [COMANDO] [PAQUETE]</pre>
</li>
<li class="slide">
Gestor de paquetes RPM, Las opciones más usadas son:
<ul>
<li class="slide">
<strong>Install</strong>: Instala un paquete
</li>
<li class="slide">
<strong>update / upgrade</strong>: Actualiza un paquete, si no de le indica que paquete, actualizará todos los paquetes que no estén actualizados
</li>
<li class="slide">
<strong>check-update</strong>: Comprueba si hay actualizaciones, de los paquetes instalados.
</li>
<li class="slide">
<strong>remove</strong>: Elimina un paquete instalado.
</li>
<li class="slide">
<strong>search</strong>: Busca un paquete.
</li>
<li class="slide">
<strong>localinstall</strong>: Instala los archivos RPM locales.
</li>
<li class="slide">
<strong>localupdate</strong>: Actualiza los archivos RPM locales.
</li>
</ul>
<li class="slide">
en caso de querer simplemente bajar el paquete tenemos el comando <code>rpmloader</code>.
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>Configuración de RPM y YUM</h2>
<ul>
<li class="slide">
El fichero de configuración de rpm es<code>/usr/lib/rpm/rpmrc</code>, la configuración de este fichero se limita a optimizaciones a la hora de compilar el software con rpm, sin embargo, si queremos cambiar la configuración deberíamos usar, <code>/etc/rpmrc</code>, si queremos un configuración global, o <code>~/.rpmrc</code>, si queremos que la configuración sea local para el usuario. Un ejemplo puede ser, <code>optflags: athlon -O2 -g -match=i686</code>
</li>
<li class="slide">
La configuración de yum se encuentra en:
<ul>
<li class="slide">
<code>/etc/yum.conf</code> y <code>/etc/yum.repos.d/.yum.conf</code>. Estos son los ficheros de configuración de yum.
</li>
<li class="slide">
<code>/etc/yum.repos.d/</code>, en este directorio se encuentran los ficheros que configuran las distintas fuentes de software para nuestro sistema.
</li>
</ul>
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>DPKG</h2>
<ul>
<li class="slide">
<pre>dpkg [OPCIONES] [ACCION] [PAQUETE]</pre>
</li>
<li class="slide">
Es análogo a rpm pero para paquetes deb, su :
<ul>
<li class="slide"><code>--i</code>, instala el paquete.</li>
<li class="slide"><code>--configure</code>, los scripts de configuración de los paquetes .deb son mejores que los de rpm, y en caso de en una configuración manual del software hacemos que algo deje de funcionar, podemos conseguir que el software vuelva a su estado casi inicial.</li>
<li class="slide"><code>-r</code>, elimina el paquete.</li>
<li class="slide"><code>-P</code>, elimina el paquete y su la configuración de este paquete.</li>
</ul>
</li>
<li class="slide">
Como opciones, cabe destacar <code>--ignore-depends</code>, que ignorará las dependencias del paquete al instalarlo.
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>Apt-get</h2>
<ul>
<li class="slide">
<pre>apt-get [OPCIONES] [COMANDO] [PAQUETE]</pre>
</li>
<li class="slide">
Gestor de paquetes Deb, Las opciones más usadas son:
<ul>
<li class="slide">
<strong>install</strong>: Instala un paquete
</li>
<li class="slide">
<strong>update</strong>: Actualiza la lista de paquetes disponibles en los repositorio.
</li>
<li class="slide">
<strong>upgrade /dist-upgrade</strong>: Instala todas las actualizaciones pendientes en el sistema.
</li>
<li class="slide">
<strong>remove / purge</strong>: Elimina un paquete instalado, en el caso de <code>purge</code> eliminaríamos también la configuración del paquete.
</li>
<li class="slide">
<strong>source</strong>: Descarga el código fuente del paquete.
</li>
<li class="slide">
<strong>clean /autoclean</strong>: Realiza una limpieza de todos aquellos paquetes que ya no son necesario, o ya no se pueden instalar.
</li>
</ul>
</li>
<li class="slide">
Las opciones más usadas son:
<ul>
<li class="slide"><strong>-d</strong>: Sirve para descargar, únicamente los paquetes y no instalarlos.</li>
<li class="slide"><strong>-f</strong>: Sirve para solucionar problemas con paquetes rotos, dependencias sin cumplir...</li>
<li class="slide"><strong>-y</strong>: Con esta opción conseguimos que no nos pregunte el instalador y asuma siempre que si</li>
<li class="slide"><strong>-no-upgrade</strong>: No actualiza, si ya hay una versión anterior.</li>
</ul>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>Apt-cache y dpkg-reconfigure</h2>
<ul>
<li class="slide">
<pre>apt-cache [OPCIONES] [COMANDO] [PAQUETE]</pre>
</li>
<li class="slide">
Comando que nos mostrará información sobre la base de datos de los paquetes deb:
<ul>
<li class="slide">
<strong>showpkg</strong>: Nos muestra la información del paquete.
</li>
<li class="slide">
<strong>stats</strong>: Nos indica estadísticas sobre paquetes instalados, disponibles, dependencias...
</li>
<li class="slide">
<strong>unmet</strong>: Sirve para encontrar dependencias no satisfechas.
</li>
<li class="slide">
<strong>depends</strong>: Nos muestra las dependencias de un paquete determinado.
</li>
<li class="slide">
<strong>search</strong>: Busca un paquete por la descripción, nombre, tags...
</li>
<li class="slide">
<strong>pkgnames</strong>: Similar a search, solo que solo busca por el nombre del paquete.
</li>
</ul>
</li>
<li class="slide">
<pre>dpkg-reconfigure [PAQUETE]</pre>
<ul>
<li class="slide">Reconfigura el paquete de forma similar a como lo hace <code>dpkg --configure</code></li>
</ul>
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>Configuración de DPKG y APT</h2>
<ul>
<li class="slide">
El fichero de configuración de dpkg es <code>/etc/dpkg/dpkg.cfg</code>, si queremos un configuración global, o <code>~/.dpkg.cfg</code>, si queremos que la configuración sea local para el usuario.
<ul>
<li class="slide">Las opciones de este fichero, son las que pudimos ver en el apartado dpkg, pero sin las --</li>
</ul>
</li>
<li class="slide">
La configuración de apt se encuentra en:
<ul>
<li class="slide">
<code>/etc/apt/apt.conf</code>, debido a la cantidad de parámetros de este fichero podemos ver las opciones de este fichero usando <code>man apt.conf</code>
</li>
<li class="slide">
<code>/etc/apt/sources.list</code>, este es el fichero en el que configuraremos los orígenes de software para nuestro sistema.
</li>
</ul>
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>Transformación de paquetes</h2>
<ul>
<li class="slide">
Para pasar de RPM a DEB y viceversa usaremos
<pre>alien [OPCIONES] PAQUETE</pre>
<ul class="slide">
Las opciones más relevantes de este comando serán:
<li class="slide"><code>--to-deb</code>: transformara un paquete a tipo deb</li>
<li class="slide"><code>--to-rpm</code>: transformara un paquete a tipo rpm</li>
<li class="slide"><code>--to-slp</code>: transformara un paquete a tipo stampede</li>
<li class="slide"><code>--to-tgz</code>: transformara un paquete a tipo tarball</li>
</ul>
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>Problemas</h2>
<ul>
<li class="slide">
Los problemas más típicos son los siguiente:
<ul>
<li class="slide"><strong>Librerías que faltan</strong>: Falta un paquete en el sistema, suele pasar cuando falta alguna dependencia.</li>
<li class="slide"><strong>Librerías incompatibles</strong>: Se necesita una versión de una librería que no es compatible.</li>
<li class="slide"><strong>Ficheros duplicados</strong>: Se produce cuando existen ficheros con el mismo nombre de otro paquete.</li>
<li class="slide"><strong>Diferencias de los nombres</strong>: En sistemas distintos el mismo paquete puede tener nombres distintos</li>
</ul>
</li>
</section>
<section class="slide">
<h2>Soluciones</h2>
<ul>
<li class="slide">
Los problemas anteriores suelen solucionarse con una de las siguientes maneras:
<ul>
<li class="slide"><strong>Forzar la instalación</strong>: Ignoramos el problema, y forzamos la instalación del paquete, es una opción arriesgada pero si fallan las dependencias puede ser la única solución.</li>
<li class="slide"><strong>Actualizar el paquete</strong> del que depende, en ocasiones esto no es posible o puede provocar inestabilidad en el sistema.</li>
<li class="slide"><strong>Recompilar el paquete problemático</strong>, si el nombre sabemos que cumplimos las dependencias, pero por el nombre de las mismas no es el mismo, suele ser una buena practica, además podremos hacer que el software sea más eficiente.</li>
<li class="slide"><strong>Localizar otra versión</strong>, tenemos que buscar otra versión del software que queremos instalar, si no nos importa demasiado la versión del software puede ser una buena idea.</li>
</ul>
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>Librerías Compartidos</h2>
<ul>
<li class="slide">
Los programas en Linux suelen utilizar librerías con código reutilizable, que además de ayudar a los programadores, optimizan el espacio en el disco duro.
Esto permite reducir el tamaño del programa, ya que en lugar de tener compilado todo el código con el programa algunas rutinas, se derivan a la librería compilada. Permitiendo además que si hay varios programas en ejecución se pueda compartir la librería entre todos los que la usen.
</li>
<li class="slide">
Como no todo podía ser bueno, las bibliotecas compartidas presentan una serie de problemas.
<ul>
<li class="slide">Los cambios en algunas librerías, pueden ser incompatibles con alguno de los programas que las usan, sin embargo, esto no tiene porque ser un problema ya que Linux mantiene la numeración de las librerías para que pueda haber mas de una versión de la misma librería al mismo tiempo.</li>
<li class="slide">Los programas tienen que saber donde encontrar las librerías compartidas, solucionar este problema normalmente habrá que ir a la configuración del programa o cambiar alguna variable de entorno.</li>
<li class="slide">Si una librería se sobrescribe, o si se elimina accidentalmente, puede provocar errores graves en el sistema.</li>
</ul>
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
<section class="slide">
<h2>Rutas Librerías Compartidos</h2>
<ul>
<li class="slide">
Para indicarle al software donde están las librerías compartidas Linux usa el fichero <code>/etc/ld.so.conf/</code>, donde cada linea presenta una ruta donde encontrar librerías compartidas, sin embargo, este fichero suele incluir <code>include /etc/ld.so.conf.d/*.conf</code>, que indica que cargue todos los ficheros <code>.conf</code> del directorio. Solo es necesario cambiar esta información en casos muy concretos, ya que el los propios paquete suelen colocar las librerías en los sitios habituales para este fin. Si aun así decidimos cambiar la configuración deberemos lanzar <code>ldconfig</code> para que los cambios se efectúen sin reiniciar el equipo.
</li>
<li class="slide">
En ocasiones nos interesa cambiar la ruta de forma temporal, para ello podemos usar la variable de entorno <code>LD_LIBRARY_PATH</code>, indicándole la ruta en la que tenemos esa librería. Esto tendrá preferencia sobre las librerías que haya en el sistema. No requiere el uso de <code>ldconfig</code>.
</li>
<li class="slide">
Si queremos mostrar las librerías que usa un determinado software podemos hacerlo con <code>ldd</code>
</li>
</ul>
<p class="deck-status">
<span class="deck-status-current"></span>/<span class="deck-status-total"></span>
</p>
</section>
</article>
<!-- End slides. -->
<!-- Required JS files. -->
<script src="jquery-1.7.2.min.js"></script>
<script src="core/deck.core.js"></script>
<script src="extensions/hash/deck.hash.js"></script>
<script src="extensions/status/deck.status.js"></script>
<script src="extensions/scale/deck.scale.js"></script>
<!-- Initialize the deck. You can put this in an external file if desired. -->
<script>
$(function() {
$.deck('.slide');
});
</script>
</body>
</html>