Sessiˇ 8 dia 20/04

Shell scripts
Exercicis de scripts
Instal·lació de programes

Shell scripts

Shell scripts simples (en espanyol)
Scripts bÓsics per a bash (en espanyol)
Advanced Bash-Scripting Guide ContÚ una gran quantitat d'exemples. Sense cap dubte la millor (en anglŔs)

Exercicis de scripts

1. Heu de crear un shell script que es digui mata.sh al que se li passarÓ com a parÓmetre un nom de procÚs. El script ha de matar al procÚs.

Soluciˇ 1:

#!/bin/bash
pid=`pidof $1` 
caracters=`echo $pid | wc -c`
if [ $caracters -gt 1 ]
then 
	kill -9 $pid
fi

Soluciˇ 2:

Aquesta soluciˇ la he trobat per la Internet. ╔s una soluciˇ molt mÚs elaborada i complexa.

#!/bin/bash
# kill-byname.sh: Killing processes by name.
# Compare this script with kill-process.sh.

#  For instance,
#+ try "./kill-byname.sh xterm" --
#+ and watch all the xterms on your desktop disappear.

#  Warning:
#  -------
#  This is a fairly dangerous script.
#  Running it carelessly (especially as root)
#+ can cause data loss and other undesirable effects.

E_BADARGS=66

if test -z "$1"  # No command line arg supplied?
then
  echo "Usage: `basename $0` Process(es)_to_kill"
  exit $E_BADARGS
fi


PROCESS_NAME="$1"
ps ax | grep "$PROCESS_NAME" | awk '{print $1}' | xargs -i kill {} 2&>/dev/null
#                                                       ^^      ^^

# -----------------------------------------------------------
# Notes:
# -i is the "replace strings" option to xargs.
# The curly brackets are the placeholder for the replacement.
# 2&>/dev/null suppresses unwanted error messages.
# -----------------------------------------------------------

exit $?

2. Heu de crear un shell script que es digui matatots.sh al que se li podrÓ passar un mÓxim de nou parÓmetres que es correspondran amb noms de processos. El script ha de matar als processos.

#!/bin/bash
for i in $1 $2 $3 $4 $5 $6 $7 $8 $9
do
	pid=`pidof $i` 
	caracters=`echo $pid | wc -c`
	if [ $caracters -gt 1 ]
	then 
		kill -9 $pid
	fi
done

3. Heu de crear un shell script que es digui cercacarpetes.sh al que se li podrÓ passar com a parÓmetre un nom de carpeta. El script ha de trobar en quin camÝ es troba la carpeta, si existeix. Com a resultat ens retornarÓ el camÝ a la carpeta o bÚ ens dirÓ que no existeix.

#!/bin/bash
carpeta=$1
find / -type d | grep $carpeta | grep -v "$carpeta[^a-zA-Z]" > ~/kk
quantitat=`cat ~/kk | wc -l`
clear
if [ $quantitat -gt 0 ]
then
	echo "He trobat:" $quantitat 
	cat ~/kk
else
	echo "No he trobat cap"
fi
rm ~/kk

4. Heu de crear un shell script que es digui comprimeixcarpeta.sh al que se li podrÓ passar com a parÓmetre un nom de carpeta. El script ha de trobar en quin camÝ es troba la carpeta, si existeix. Com a resultat el script comprimirÓ amb l'ordre 'tar' la carpeta passada com a parÓmetre, si existeix.

Soluciˇ 1:

#!/bin/bash
carpeta=$1
find / -type d | grep $carpeta | grep -v "$carpeta[^a-zA-Z]" | grep -n $carpeta > ~/kk
quantitat=`cat ~/kk | wc -l`
clear
while [ $quantitat -gt 0 ]
do
	cat ~/kk | grep $quantitat |
	llistat=cat ~/kk
	arxiu=`cat ~/kk | grep $quantitat | sed "s:^[0-9]::g" | sed "s:^[\:]::g" | sed "s:/::g"`
	directori=`cat ~/kk | grep $quantitat | sed "s:^[0-9]::g" | sed "s:^[\:]::g"`
	`tar -cf ~/$arxiu.tar $directori`
	quantitat=`expr $quantitat - 1`
done
rm ~/kk

Soluciˇ 2: Aquesta altra soluciˇ, que tambÚ he trobat per la Internet, no Ús exactament la que es demanava per˛ la poso perquŔ Ús molt senzilla i us pot ser d'utilitat.

#!/bin/bash          
ORIG="/home/"
DEST="/var/copias_de_seguridad/"
FICH=home-$(date +%Y%m%d).tgz
tar -cZf $DEST$FICH $ORIG
Instal·lació de programes

Què és això d'apt


Apt és un sistema de gestió de paquets de programari (utilitzar aquest tipus d'eines és la forma més indolora d'instal·lar paquets). És originària de Debian i està portada a diverses distribucions no descendents d'aquesta, com RedHat, Fedora, Mandriva, Suse i multitud d'elles.

El gran avantatge d'apt, igual que aplicacions similars, és que tu li dius què instal·lar i ell no només t'ho instal·la, sino que a més et resol i instal·la totes les dependències, així que adéu a les instal·lacions difícils i benvingut a instal·lacions més senzilles, ordenades i netes que el següent, següent, següent de Windows. No és una meravella?

En qualsevol cas, apt és una interfície senzilla de 'dpkg' (o 'rpm' segons el cas).


D'on obtinc el necessari per al conjunt d'eines d'apt?

Els que usin Debian o derivades d'ella com Ubuntu, Knoppix, Gnoppix, Linex, Guadalinex i un grapat gran d'elles més, no tindran problemes perquè ja els ve de sèrie. Per als que no, ja poden fer recerques en google amb les paraules apt-get i la distribució que vols, encara que és possible que no ho trobin per a la seva.

Per als que usin alguna de RedHat, Fedora o Suse ja els estalvio jo una mica el treball:

http://apt.freshrpms.net/ per a RedHat i Fedora
http://linux01.gwdg.de/apt4rpm/home.htm per a Suse

I la resta pot mirar http://rpm.pbone.net/ on hi ha apt-get per a un munt d'elles.


BÚ, ja està instal·lat, però no corris. Necessitem saber una mica més

Bé, en aquest punt ja hauries de tenir instal·lat apt, però encara ens queden coses abans de començar. Apt en si no és una ordre, sinó un conjunt d'eines de les quals veurem bàsicament apt-get i apt-cache, que són les que normalment cobriran totes les nostres necessitats.

Apt, per treballar amb els paquets, li dóna igual que siguin deb o rpm, per aquest motiu ha estat portat a moltes distribucions. El que apt necessita és que li diguis on té els repositoris de paquets, els repositoris són els "llocs" on es troben els paquets dels quals volem disposar, i pot ser qualsevol font: cdrom, ftp, http o d'altres.

Nosaltres de moment optarem per instal·lar i actualitzar amb apt via ftp o http, perquè aconseguirem el programari més actual ja que els repositoris solen actualitzar-se freqüentment. Per configurar això hem d'editar (com root) /etc/apt/sources.list i tindrà un aspecte com aquest:

#deb file:///cdrom/ sarge main
#deb cdrom:[Debian GNU/Linux testing _#Sarge_ - #Official Snapshot i386 Binary-1 (20050318)]/ unstable contrib main

#testing SARGE
deb ftp://ftp.es.debian.org/debian/ testing main non-free contrib
#deb-src ftp://ftp.es.debian.org/debian/ testing main non-free contrib
deb http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free

#inestable SID
#deb ftp://ftp.es.debian.org/debian/ unstable main non-free contrib
#deb-src ftp://ftp.es.debian.org/debian/ unstable main non-free contrib
#deb http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free

Aquest és un sources.list ja configurat per a una Debian Sarge, i pot ser que el vostre estigui ja configurat o no, però ens servirà per explicar què significa cada cosa.

1) Tot el que es trobi després de '#' es considera un comentari i serà ignorat. Com podeu veure jo tinc comentades moltes línies.

2) El format de les línies és el següent:

tipus_de_paquet font distribució [component1] [component2] [...]

En "tipus de paquet" va o bé 'deb', 'deb-src' o bé 'rpm', 'rpm-src' depenent del tipus de paquets que usem. En "font" indiquem on està el repositori, que sol ser o bé alguna cosa com:

cdrom:[Debian GNU/Linux testing _#Sarge_ - #Official Snapshot i386 Binary-1 (20050318)]/ el que ens indica que és un cd i en aquest cas concret el d'instal·lació.

O bé és una adreça http o ftp, com podeu veure en l'exemple. El següent és la distribució, en el meu cas a l'usar Debian apareixen unstable i testing, que són 2 de les 3 branques que té Debian (stable, testing i unstable amb els noms de Woody, Sarge i Sid respectivament). I finalment, els components que poden existir o no, en el meu cas es corresponen amb la forma d'organitzar els paquets de Debian. En cada distribució aquestes coses canvien, depèn de com s'estructurin internament.

Un altre exemple amb un sources.list de la versiˇ Hoary de la distribuciˇ Ubuntu:

# cdrom
deb cdrom:[Ubuntu 5.04 _Hoary Hedgehog_ - Release i386 (20050407)]/ hoary main restricted

# http
deb http://es.archive.ubuntu.com/ubuntu hoary main restricted
deb-src http://es.archive.ubuntu.com/ubuntu hoary main restricted

deb http://es.archive.ubuntu.com/ubuntu hoary universe
deb-src http://es.archive.ubuntu.com/ubuntu hoary universe

# paquets de seguretat
deb http://security.ubuntu.com/ubuntu hoary-security main restricted
deb-src http://security.ubuntu.com/ubuntu hoary-security main restricted

deb http://security.ubuntu.com/ubuntu hoary-security universe
deb-src http://security.ubuntu.com/ubuntu hoary-security universe

Però tranquils, que encara que com veieu és fàcil, no haureu de crear les línies vosaltres mateixos (però us ho explico perquè és bo que sapigueu què signifiquen), ni investigar com és internament la vostra distribució. Nosaltres només ens limitarem a buscar per internet quines són les línies que hem d'afegir. Oi que és fàcil?

Així que només us queda buscar aquestes línies, preferiblement agafant sempre de les fonts oficials. Tranquils, és molt fàcil i la xarxa està plena d'elles ;) i depenent de quins programes o aplicacions us caldran més o menys repositoris.

Per fer aquesta recerca disposem d'una eina molt ˙til:

apt-setup

Aquesta eina ens busca els repositoris ftp o http del paÝs que nosaltres triem i ens afegeix les lÝnies a l'arxiu 'sources.list', Ús a dir, ens ho fa tot.

apt-setup

Sens dubte, en això de repositoris i nombre de paquets guanya per golejada Debian, que és una de les grans virtuts d'aquesta distribució, encara que no sigui precisament la més fàcil d'instal·lar i engegar. Sabent buscar bé repositoris és possible que mai necessiteu compilar res, o molt poc, per a aquesta distribució.


Ja ho tinc tot, que comenci la festa

Ja hem arribat a l'interessant, i no em digueu que us ha estat difícil arribar fins a aquí perquè no m'ho crec. Per començar amb el nostre sources.list ja configurat, el que hem de fer és sincronitzar l'índex de paquets respecte a les fonts (els repositoris apuntats pel nostre sources.list):

apt-get update

Res més fàcil que executar això cada vegada que canviem les fonts del sources.list. Com els repositoris solen actualitzar-se molt sovint, sobretot els de Debian, és convenient que executeu això amb freqüència per a no trobar problemes a l'hora d'instal·lar. Vegem un exemple:

ramon@portatil:$ su
Password:
root@portatil:/home/ramon # apt-get update
Obj http://non-us.debian.org testing/non-US/main Packages
Des:1 http://debian.tu-bs.de unstable/main Packages [17,6kB]
Obj http://non-us.debian.org testing/non-US/main Release
Obj http://non-us.debian.org testing/non-US/contrib Packages
Obj http://non-us.debian.org testing/non-US/contrib Release
Obj http://non-us.debian.org testing/non-US/non-free Packages
Obj http://non-us.debian.org testing/non-US/non-free Release
Des:2 http://debian.tu-bs.de unstable/main Release [112B]
Des:3 ftp://ftp.es.debian.org testing/main Packages [3151kB]
Des:4 ftp://ftp.es.debian.org testing/main Release [81B]
Des:5 ftp://ftp.es.debian.org testing/non-free Packages [58,6kB]
Des:6 ftp://ftp.es.debian.org testing/non-free Release [85B]
Des:7 ftp://ftp.es.debian.org testing/contrib Packages [55,8kB]
Des:8 ftp://ftp.es.debian.org testing/contrib Release [84B]
Descarregats 3284kB en 3m32s (15,5kB/s)
Llegint llista de paquets... Fet
root@portatil:/home/ramon #

Veieu quŔ fàcil, no heu de fer res per la vostra banda, només esperar.

Sempre que feu un 'apt-get update' és bo fer:

apt-get check

que no és més que una eina de diagnòstic. Actualitza la caché de paquets, torna a crear un nou arbre de dependències i busca dependències impossibles de resoldre, encara que si no enteneu res d'això no importa, simplement sapigueu que és bo realitzar-lo, sobretot per saber si tot ha sortit bé:

root@portatil:/home/ramon # apt-get check
Llegint llista de paquets... Fet
Creant arbre de dependències... Fet
root@portatil:/home/ramon #

Instal·lar i actualitzar, 2 en 1

Si un paquet ja està instal·lat, apt ho actualitza a l'última versió, i en cas contrari ho instal·la. El mateix amb totes les seves dependències, que es resolen automàticament. Quines més podem demanar quan és especial per a còmodes :).

apt-get install llista_de_paquets

Per veure un exemple d'això instal·larem avui un petit editor de text compatible en gran mesura amb els '.doc' de Windows, Abiword (encara que si voleu un bon paquet ofimátic ja sabeu, OpenOffice.org):

root@portatil:/home/ramon # apt-get install abiword
Llegint llista de paquets... Fet
Creant arbre de dependències... Fet
S'instal·laran els següents paquets extres:
  abiword-common libenchant1
Paquets suggerits:
  abiword-plugins abiword-plugins-gnome abiword-doc
Paquets recomanats
  abiword-help
S'instal·laran els següents paquets NOUS:
  abiword abiword-common libenchant1
0 actualitzats, 3 s'instal·laran, 0 per eliminar i 3 no actualitzats.
Necessito descarregar 3974kB d'arxius.
S'utilitzaran 13,6MB d'espai de disc addicional després de desempaquetar.
Desitja continuar [S/n]? s
Des:1 ftp://ftp.és.debian.org testing/main abiword 2.0.14-1 [1885kB]
Des:2 ftp://ftp.és.debian.org testing/main gnome-desktop-environment 61 [9960B]
Des:3 ftp://ftp.és.debian.org testing/main gnome-core 61 [9782B]
Descarregats 1905kB en 1m28s (21,4kB/s)
(Llegint la base de dades ...
...
...
Desempaquetant el reemplaçament de gnome-core ...
Configurant abiword (2.0.14-1) ...
Configurant gnome-core (61) ...
Configurant gnome-desktop-environment (61) ...
root@portatil:/home/ramon # 

Podeu comprovar que 'apt-get' amb la seva opció 'install' s'ha ocupat de tot, fins i tot d'eliminar paquets que ja no seran necessaris, cosa que no he comentat abans. Com veieu és el millor per mantenir net el sistema.


Desinstal·lar té també 2 formes

Desinstal·lar té 2 formes, encara que només per als que usem paquets 'deb'.

apt-get remove llista_de_paquets

apt-get --purge remove llista_de_paquets

El primer és el que elimina el paquet que li indiques, i el segon el que a més elimina els fitxers de configuració del paquet, que ens seran necessaris quan instal·lem de forma errònia, desinstal·lem i instal·lem de nou. Per a això, per variar, altre exemple:

root@portatil:/home/ramon # apt-get remove abiword
Llegint llista de paquets... Fet
Creant arbre de dependències... Fet
Els següents paquets s'ELIMINARAN:
abiword abiword-common
0 actualitzats, 0 s'instal·laran, 2 per a eliminar i 22 no actualitzats.
Necessito descarregar 0B d'arxius.
S'alliberaran 11,0MB després de desempaquetar.
Desitja continuar? [S/n] s
(Llegint la base de dades ...
146960 fitxers i directoris instal·lats actualment.)
Desinstal·lant abiword-common ...
Desinstal·lant abiword ...
root@portatil:/home/ramon #
root@portatil:/home/ramon # apt-get --purge remove abiword
Llegint llista de paquets... Fet
Creant arbre de dependències... Fet
Els següents paquets s'ELIMINARAN:
abiword* abiword-common*
0 actualitzats, 0 s'instal·laran, 2 per a eliminar i 22 no actualitzats.
Necessito descarregar 0B d'arxius.
S'alliberaran 11,0MB després de desempaquetar.
Desitja continuar? [S/n] s
(Llegint la base de dades ...
146960 fitxers i directoris instal·lats actualment.)
Desinstal·lant abiword-common ...
Desinstal·lant abiword ...
root@portatil:/home/ramon #

Com veieu 'apt-get remove' també elimina tot el que ja no necessitem, incloses les dependències, que ja no són usades per cap altre paquet.


Oh no! Tenim un problema

Moltes vegades si no fem 'apt-get update' de forma habitual ens podem trobar amb el problema que no poden instal·lar-se els paquets perquè ja no es troben, o bé has instal·lat alguna cosa que no venia en els repositoris i van ocórrer dependències, en qualsevol cas sempre que es trobin dependències trencades. Com podreu suposar aquest problema és més probable que es doni amb els que usen 'deb' que amb els que usen 'rmp', ja que 'dpkg' instal·la encara que trobi dependències i a 'rpm' en canvi cal dir-li que forci la instal·lació ja que si troba dependències per defecte no instal·laria.

Però aquest és un problema d'allò més senzill de solucionar. En el cas que sigui per no sincronitzar amb 'apt-get update', realitzarem aquest pas. En qualsevol altre cas, realitzar:

apt-get -f install

El que fa és intentar arreglar un sistema amb dependències actualment trencades, i generalment amb un bon fitxer 'sources.list' el nostre problema desapareixerà. En un sistema sense dependències trencades com el meu, l'execució d'aquesta ordre donaria el següent resultat:

root@portatil:/home/ramon # apt-get -f install
Llegint llista de paquets... Fet
Creant arbre de dependències... Fet
0 actualitzats, 0 s'instal·laran, 0 per eliminar i 0 no actualitzats.
root@portatil:/home/ramon # 

Posa't a l'última i actualitza el teu sistema complet

Sí llegeixes bé, amb apt és possible actualitzar el sistema complet i fins i tot la distribució completa a l'última versió, amb el que amb un bon sistema administrat només necessitaràs una instal·lació.

I ara que ho penso, com actualitzes un sistema Windows?, ah sí, fas copia de seguretat de les teves dades, gairebé segur que et convé formatar la teva partició i fins i tot depenent del cas canviar el format de sistema d'arxius i després comences a instal·lar el nou Windows (en la majoria dels casos pirata), i després a instal·lar de nou els programes des de zero. Si està clar... amb Windows són tot facilitats XD sobretot per mantenir una neteja, un ordre i sobretot per passar per caixa XD.

Hi ha dues formes d'actualitzar, cadascuna d'elles amb les seves peculiaritats, i ambdues són absurdes si abans no es realitza un 'apt-get update'. Vegem quins són i quins matisos té cadascuna d'elles:

apt-get upgrade

apt-get dist-upgrade

La primera es pot dir que és la més respectuosa, ja que s'usa per instal·lar la versió més nova de tots els paquets instal·lats en el sistema provinents d'alguna de les fonts llistades al 'sources.list'. Els paquets instal·lats amb una nova versió disponible són descarregats i actualitzats, sota cap circumstància es desinstal·laran paquets, o s'instal·laran paquets nous. Les noves versions de programes instal·lats que no puguin ser actualitzats sense canviar l'estat d'instal·lació d'altres paquets no s'instal·laran, mantenint-se la versió actual.

I la segona, a més de realitzar les accions de la primera, utilitza intel·ligentment els canvis de dependències deguts a noves versions de paquets, apt-get té un sofisticat sistema de resolució de conflictes, si és necessari tractarà d'actualitzar els paquets més importants a costa dels menys importants.

Normalment si es fa la segona no es necessitarà realitzar la primera, però si es fa la primera llavors la segona farà encara més actualitzacions. Vegem un exemple d'ambdues:

root@portatil:/home/ramon # apt-get upgrade
Llegint llista de paquets... Fet
Creant arbre de dependències... Fet
S'actualitzaran els següents paquets:
docbook-dsssl exim4 exim4-base exim4-config exim4-daemon-light fwbuilder
fwbuilder-common fwbuilder-linux gallery gftp gftp-common gftp-gtk gftp-text
groff-base klogd lha libfwbuilder6 libmysqlclient12 libsensors3 libssl0.9.6
libtag1 libxine1 manpages menu mysql-client mysql-common mysql-server
sysklogd tasksel xprt-common xprt-xprintorg zlib1g zlib1g-dev
33 actualitzats, 0 s'instal·laran, 0 per a eliminar i 0 no actualitzats.
Necessito descarregar 23,9MB d'arxius.
S'utilitzaran 408kB d'espai de disc addicional després de desempaquetar.
Desitja continuar? [S/n] s
Des:1 ftp://ftp.es.debian.org testing/main zlib1g-dev 1:1.2.2-3 [488kB]
....
Des:33 ftp://ftp.es.debian.org testing/main libssl0.9.6 0.9.6m-1 [1755kB]
Descarregats 23,9MB en 18m31s (21,5kB/s)
Preconfiguring packages ...
....
Configurant exim4-base (4.34-7) ...
....
root@portatil:/home/ramon # 
root@portatil:/home/ramon # apt-get dist-upgrade
Llegint llista de paquets... Fet
Creant arbre de dependències... Fet
Calculant l'actualització... Llest
0 actualitzats, 0 s'instal·laran, 0 per a eliminar i 0 no actualitzats.
root@portatil:/home/ramon # 

En aquest cas 'apt-get dist-upgrade' no va fer res perquè no va ser necessari, ja que 'apt-get upgrade' va realitzar tot l'imprescindible.

Per actualitzar la teva distribució el normal és canviar els repositoris de la que uses per la que desitges, per exemple, per passar de Debian Sarge a Debian Sid canviarem en sources.list les fonts d'una per la de l'altra i ens llancem amb 'apt-get update','apt-get check' i 'apt-get dist-upgrade'. Encara que això funciona bé en Debian, compte, pot ser que en altres distribucions no sigui així i pugueu tenir problemes.


Neteja la caché de l'apt

Apt el que fa és baixar els paquets i després fer el que sigui necessari amb ells. Per a això usa un directori com caché situat en /var/cache/apt/archives i aquest mai es buida, a menys que es faci manualment esborrant els arxius, cosa que no recomano o bé mitjançant altres dues opcions de l'apt amb les seves petites diferències.

Si no ho esborres pot arribar a convertir-se amb el pas del temps en un problema d'espai, per exemple, jo que solc ser descurat ho tinc a la grandària d'1.4 GB, encara que és convenient també no tenir-la sempre buida, sobretot quan instal·les i tornes a instal·lar un mateix paquet, ja que el que trobi en la caché no ho baixarà.

Les dues formes són:

apt-get clean

apt-get autoclean

La primera esborra totalment el repositori local que conté els fitxers descarregats, i la segona només esborrarà aquells paquets que ja no poden ser descarregats, o són clarament inservibles. Això permet mantenir la caché durant llargs períodes de temps sense que augmenti la seva grandària sense control.

Veurem un exemple d'ambdues, encara que aquesta vegada començarem per la segona:

root@portatil:/home/ramon # apt-get autoclean
Llegint llista de paquets... Fet
Creant arbre de dependències... Fet
Del a2ps 1:4.13b-4 [715kB]
Del alsa-base 1.0.5a-3 [47,5kB]
...
Del gftp 2.0.17-6 [34,6kB]
Del manpages-dev 1.67-2 [1044kB]
Del mysql-server 4.0.21-6 [0B]
root@portatil:/home/ramon #

Amb això he passat d'una caché d'1.4GB a una de 776.7 MB.

root@portatil:/home/ramon # apt-get clean
root@portatil:/home/ramon #

I amb això la caché estÓ buida.


Jo només vull que es descarreguin els paquets

Pot ser que ens interessi que a l'instal·lar o actualitzar només descarregui els paquets a la caché i no faci res més amb ells. Per a això usem l'opció '-d' quedant les ordres així:

apt-get -d install llista_de_paquets

apt-get -d upgrade

apt-get -d dist-upgrade

Això pot ser molt útil si vols instal·lar i no estarÓs present com en el cas dels 'deb', que moltes vegades llancen preguntes sobre com s'han de configurar els paquets, o també si instal·lem alguna cosa i com tenim una connexió lenta volem copiar els paquets de la caché a un directori per no tornar-los a baixar mai més :)

Vegem l'exemple només amb la instal·lació:

root@portatil:/home/ramon # apt-get -d install abiword
Llegint llista de paquets... Fet
Creant arbre de dependències... Fet
S'instal·laran els següents paquets extres:
abiword-common
Paquets suggerits:
abiword-plugins abiword-plugins-gnome abiword-doc
Paquets recomanats
abiword-help
S'instal·laran els següents paquets NOUS:
abiword abiword-common
0 actualitzats, 2 s'instal·laran, 0 per eliminar i 0 no actualitzats.
Necessito descarregar 3371kB d'arxius.
S'utilitzaran 11,0MB d'espai de disc addicional després de desempaquetar.
Desitja continuar? [S/n] s
Des:1 ftp://ftp.es.debian.org testing/main abiword-common 2.0.14-1 [1486kB]
Des:2 ftp://ftp.es.debian.org testing/main abiword 2.0.14-1 [1885kB]
Descarregats 3371kB en 2m42s (20,7kB/s)
Descàrrega completa i en manera de només descarrega
root@portatil:/home/ramon #
root@portatil:/home/ramon # apt-get install abiword
Llegint llista de paquets... Fet
...
S'utilitzaran 11,0MB d'espai de disc addicional després de desempaquetar.
Desitja continuar? [S/n] s
Seleccionant el paquet abiword-common prèviament no seleccionat.
(Llegint la base de dades ...
...
Configurant abiword-common (2.0.14-1) ...
root@portatil:/home/ramon #

Podeu observar com simplement el baixa i para. A l'executar la mateixa ordre sense '-d', com els troba en caché, ja no baixa res i en aquest cas s'instal·la.


Però si vull reinstal·lar alguna cosa ja instal·lada

Imaginem que se'ns ha corromput l'executable o fitxers d'alguna cosa que ja tenim instal·lada, la nostra primera ocurrència seria:

root@portatil:/home/ramon # apt-get install abiword
Llegint llista de paquets... Fet
Creant arbre de dependències... Fet
abiword ja està en la seva versió més recent.
0 actualitzats, 0 s'instal·laran, 0 per a eliminar i 0 no actualitzats.
root@portatil:/home/ramon #

Uhmm... realment un problema, ja que per defecte si està instal·lat ja no reinstal·la damunt, però això ho podem solucionar fàcilment amb l'opció '--reinstall'. Vegem l'exemple:

root@portatil:/home/ramon # apt-get --reinstall install abiword
Llegint llista de paquets... Fet
Creant arbre de dependències... Fet
0 actualitzats, 0 s'instal·laran, 1 reinstal·lats, 0 per eliminar i 0 no actualitzats.
Es necessita descarregar 0B/1885kB d'arxius.
S'utilitzaran 0B d'espai de disc addicional després de desempaquetar.
Desitja continuar? [S/n] s
(Llegint la base de dades ...
146924 fitxers i directoris instal·lats actualment.)
Preparant per reemplaçar abiword 2.0.14-1 (usant .../abiword_2.0.14-1i386.deb) ...
Desempaquetant el reemplaçament de abiword ...
Configurant abiword (2.0.14-1) ...
root@portatil:/home/ramon #

Com veieu és fàcil guanyar el pols si es coneixen les eines necessàries.


D'acord, tot està bé però falta alguna cosa, I si no conec el nom del que vull instal·lar?

Doncs també tenim una ordre dintre de les utilitats d'apt del qual només veurem una opció, i és la següent:

apt-cache search llista_de_paraules

Simplement realitza una recerca de l'expressió regular donada en tot el text de tots els paquets disponibles. Busca l'expressió regular tant en el nom dels paquets com en la seva descripció, i mostra el nom del paquet i una petita descripció d'aquest. Així que cercarem jocs que siguin com el Bubble:

root@portatil:/home/ramon # apt-cache search bubble
bubblefishymon - system load dockapp with a duck
bubblemon - Bubbling Load Monitoring GNOME Applet
emacs-goodies-el - Miscellaneous add-ons for Emacs
fb-music-high - High quality, large music files for Frozen-Bubble
fb-music-low - Lower quality, small music files for Frozen-Bubble
frozen-bubble - Pop out the bubbles !
frozen-bubble-data - Data files for Frozen-Bubble
gdesklets-data - displays and sensors for gdesklets
gkrellm-bfm - system load plugin for gkrellm with a duck
junior-puzle - Debian Jr. Puzles
wmbubble - A system-load meter for Window Maker that features a duck
wmfishtime - Dockable clock app for WMaker, BlackBox, I, SawFish etc
xbubble - A nice Puzle Bubble clone
xbubble-data - Data files for XBubble, a nice Puzle Bubble clone
root@portatil:/home/ramon #

copyleft © 2014 ramon lopez
última actualització 16/09/14 17:23