Tips en Trucs 2018

Installatie terugdraaien

Als je software wilt uitproberen, installeer je deze meestal via de installatieprocedure van uw distributie. Daarbij worden meestal en soms veel afhankelijke pakketten mee geïnstalleerd. Als je dan beslist om de software niet verder te gebruiken, blijven deze wel op het systeem geïnstalleerd. De installatiesoftware van uw distributie kan het softwarepakket verwijderen, maar wat met de mee geïnstalleerde afhankelijke pakketten.

Grafisch installeren en verwijderen

Na een testperiode beslis je deze software volledig van uw systeem te verwijderen. Dit gaat als volgt:

Zo blijft jouw systeem licht en gezond.

Terminal installeren en verwijderen

Soms werk je vlotter met opdrachten in een terminal, bijvoorbeeld op afstand. Met de volgende opdracht installeer je Subliminal vanaf een terminal:

dany@pindabook:~> sudo zypper install python3-subliminal
[sudo] wachtwoord voor root: 
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Pakketafhankelijkheden oplossen...

De volgende 25 NIEUWE pakketten zullen worden geïnstalleerd:
  bsdtar python3-appdirs python3-Babel python3-babelfish python3-beautifulsoup4 python3-chardet python3-click python3-colorlog python3-cssselect
  python3-dateutil python3-dbm python3-dogpile.cache python3-enzyme python3-Genshi python3-guessit python3-html5lib python3-lxml python3-pbr
  python3-pysrt python3-pytz python3-rarfile python3-rebulk python3-six python3-stevedore python3-subliminal

De volgende 3 aanbevolen pakketten zijn automatisch geselecteerd:
  python3-colorlog python3-Genshi python3-lxml

25 nieuwe te installeren pakketten.
Totale downloadgrootte: 5,1 MiB. Reeds in de cache: 0 B. Na de bewerking zal aanvullend 21,3 MiB worden gebruikt.
Doorgaan? [j/n/...? alle opties tonen] (j): 
pakket python3-appdirs-1.4.0-3.1.noarch wordt opgehaald                                                  (1/25),  16,3 KiB ( 59,1 KiB uitgepakt)
Ophalen: python3-appdirs-1.4.0-3.1.noarch.rpm .............................................................................[gereed (22,2 KiB/s)]
pakket python3-babelfish-0.5.5-1.1.noarch wordt opgehaald                                                (2/25),  91,9 KiB (372,2 KiB uitgepakt)
Ophalen: python3-babelfish-0.5.5-1.1.noarch.rpm ...........................................................................[gereed (68,0 KiB/s)]
pakket python3-chardet-2.3.0-6.1.noarch wordt opgehaald                                                  (3/25), 192,6 KiB (  1,1 MiB uitgepakt)
Ophalen: python3-chardet-2.3.0-6.1.noarch.rpm ............................................................................[gereed (362,1 KiB/s)]
pakket python3-click-6.6-3.1.noarch wordt opgehaald                                                      (4/25), 117,5 KiB (460,7 KiB uitgepakt)
Ophalen: python3-click-6.6-3.1.noarch.rpm ..................................................................................[gereed (8,7 KiB/s)]
pakket python3-cssselect-0.9.1-5.3.noarch wordt opgehaald                                                (5/25),  45,1 KiB (194,4 KiB uitgepakt)
Ophalen: python3-cssselect-0.9.1-5.3.noarch.rpm ........................................................................................[gereed]
pakket python3-dogpile.cache-0.6.2-4.1.noarch wordt opgehaald                                            (6/25),  60,8 KiB (265,2 KiB uitgepakt)
Ophalen: python3-dogpile.cache-0.6.2-4.1.noarch.rpm .......................................................................[gereed (17,1 KiB/s)]
pakket python3-enzyme-0.4.1-1.1.noarch wordt opgehaald                                                   (7/25),  61,1 KiB (412,4 KiB uitgepakt)
Ophalen: python3-enzyme-0.4.1-1.1.noarch.rpm ..............................................................................[gereed (13,5 KiB/s)]
pakket python3-pbr-1.8.0-4.2.noarch wordt opgehaald                                                      (8/25), 127,2 KiB (429,4 KiB uitgepakt)
Ophalen: python3-pbr-1.8.0-4.2.noarch.rpm ..................................................................................[gereed (5,3 KiB/s)]
pakket python3-pytz-2015.6-4.1.noarch wordt opgehaald                                                    (9/25), 180,0 KiB (668,1 KiB uitgepakt)
Ophalen: python3-pytz-2015.6-4.1.noarch.rpm ..............................................................................[gereed (360,4 KiB/s)]
pakket python3-rebulk-0.8.2-1.1.noarch wordt opgehaald                                                  (10/25), 104,6 KiB (659,0 KiB uitgepakt)
Ophalen: python3-rebulk-0.8.2-1.1.noarch.rpm .............................................................................[gereed (207,1 KiB/s)]
pakket bsdtar-3.1.2-19.3.x86_64 wordt opgehaald                                                         (11/25),  58,8 KiB (111,9 KiB uitgepakt)
Ophalen: bsdtar-3.1.2-19.3.x86_64.rpm ....................................................................................[gereed (220,6 KiB/s)]
pakket python3-colorlog-2.10.0-1.1.x86_64 wordt opgehaald                                               (12/25),  24,6 KiB ( 82,0 KiB uitgepakt)
Ophalen: python3-colorlog-2.10.0-1.1.x86_64.rpm ........................................................................................[gereed]
pakket python3-pysrt-1.1.1-1.1.noarch wordt opgehaald                                                   (13/25),  27,3 KiB (102,3 KiB uitgepakt)
Ophalen: python3-pysrt-1.1.1-1.1.noarch.rpm ............................................................................................[gereed]
pakket python3-lxml-3.4.4-5.4.x86_64 wordt opgehaald                                                    (14/25), 760,5 KiB (  2,7 MiB uitgepakt)
Ophalen: python3-lxml-3.4.4-5.4.x86_64.rpm ...............................................................................[gereed (441,3 KiB/s)]
pakket python3-Babel-1.3-6.3.noarch wordt opgehaald                                                     (15/25),   2,0 MiB (  8,8 MiB uitgepakt)
Ophalen: python3-Babel-1.3-6.3.noarch.rpm ................................................................................[gereed (727,2 KiB/s)]
pakket python3-rarfile-3.0-1.4.noarch wordt opgehaald                                                   (16/25),  52,5 KiB (246,3 KiB uitgepakt)
Ophalen: python3-rarfile-3.0-1.4.noarch.rpm ............................................................................................[gereed]
pakket python3-Genshi-0.7-4.1.x86_64 wordt opgehaald                                                    (17/25), 280,2 KiB (  1,7 MiB uitgepakt)
Ophalen: python3-Genshi-0.7-4.1.x86_64.rpm ...............................................................................[gereed (153,7 KiB/s)]
pakket python3-dbm-3.4.6-12.3.1.x86_64 wordt opgehaald                                                  (18/25),  28,9 KiB ( 62,9 KiB uitgepakt)
Ophalen: python3-dbm-3.4.6-12.3.1.x86_64.rpm ...........................................................................................[gereed]
pakket python3-six-1.10.0-5.3.1.noarch wordt opgehaald                                                  (19/25),  26,4 KiB ( 58,4 KiB uitgepakt)
Ophalen: python3-six-1.10.0-5.3.1.noarch.rpm ...........................................................................................[gereed]
pakket python3-stevedore-1.20.0-1.1.noarch wordt opgehaald                                              (20/25),  57,1 KiB (209,5 KiB uitgepakt)
Ophalen: python3-stevedore-1.20.0-1.1.noarch.rpm ..........................................................................[gereed (10,6 KiB/s)]
pakket python3-html5lib-0.999999-4.1.noarch wordt opgehaald                                             (21/25), 183,8 KiB (871,2 KiB uitgepakt)
Ophalen: python3-html5lib-0.999999-4.1.noarch.rpm ........................................................................[gereed (393,7 KiB/s)]
pakket python3-dateutil-2.4.2-5.1.noarch wordt opgehaald                                                (22/25), 218,0 KiB (433,5 KiB uitgepakt)
Ophalen: python3-dateutil-2.4.2-5.1.noarch.rpm ...........................................................................[gereed (233,9 KiB/s)]
pakket python3-beautifulsoup4-4.4.0-4.1.noarch wordt opgehaald                                          (23/25), 142,3 KiB (573,1 KiB uitgepakt)
Ophalen: python3-beautifulsoup4-4.4.0-4.1.noarch.rpm .....................................................................[gereed (206,8 KiB/s)]
pakket python3-guessit-2.1.1-1.3.noarch wordt opgehaald                                                 (24/25), 138,2 KiB (636,3 KiB uitgepakt)
Ophalen: python3-guessit-2.1.1-1.3.noarch.rpm .............................................................................[gereed (64,8 KiB/s)]
pakket python3-subliminal-2.0.5-1.1.noarch wordt opgehaald                                              (25/25), 108,8 KiB (389,7 KiB uitgepakt)
Ophalen: python3-subliminal-2.0.5-1.1.noarch.rpm ..........................................................................[gereed (19,4 KiB/s)]
Controleren op conflicten tussen bestanden: ............................................................................................[gereed]
( 1/25) Installeren van: python3-appdirs-1.4.0-3.1.noarch ..............................................................................[gereed]
( 2/25) Installeren van: python3-babelfish-0.5.5-1.1.noarch ............................................................................[gereed]
( 3/25) Installeren van: python3-chardet-2.3.0-6.1.noarch ..............................................................................[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: using /usr/bin/chardetect-3.4 to provide /usr/bin/chardetect (chardetect) in auto mode                                     


( 4/25) Installeren van: python3-click-6.6-3.1.noarch ..................................................................................[gereed]
( 5/25) Installeren van: python3-cssselect-0.9.1-5.3.noarch ............................................................................[gereed]
( 6/25) Installeren van: python3-dogpile.cache-0.6.2-4.1.noarch ........................................................................[gereed]
( 7/25) Installeren van: python3-enzyme-0.4.1-1.1.noarch ...............................................................................[gereed]
( 8/25) Installeren van: python3-pbr-1.8.0-4.2.noarch ..................................................................................[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: using /usr/bin/pbr-3.4 to provide /usr/bin/pbr (pbr) in auto mode


( 9/25) Installeren van: python3-pytz-2015.6-4.1.noarch ................................................................................[gereed]
(10/25) Installeren van: python3-rebulk-0.8.2-1.1.noarch ...............................................................................[gereed]
(11/25) Installeren van: bsdtar-3.1.2-19.3.x86_64 ......................................................................................[gereed]
(12/25) Installeren van: python3-colorlog-2.10.0-1.1.x86_64 ............................................................................[gereed]
(13/25) Installeren van: python3-pysrt-1.1.1-1.1.noarch ................................................................................[gereed]
(14/25) Installeren van: python3-lxml-3.4.4-5.4.x86_64 .................................................................................[gereed]
(15/25) Installeren van: python3-Babel-1.3-6.3.noarch ..................................................................................[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: using /usr/bin/pybabel-3.4 to provide /usr/bin/pybabel (pybabel) in auto mode


(16/25) Installeren van: python3-rarfile-3.0-1.4.noarch ................................................................................[gereed]
(17/25) Installeren van: python3-Genshi-0.7-4.1.x86_64 .................................................................................[gereed]
(18/25) Installeren van: python3-dbm-3.4.6-12.3.1.x86_64 ...............................................................................[gereed]
(19/25) Installeren van: python3-six-1.10.0-5.3.1.noarch ...............................................................................[gereed]
(20/25) Installeren van: python3-stevedore-1.20.0-1.1.noarch ...........................................................................[gereed]
(21/25) Installeren van: python3-html5lib-0.999999-4.1.noarch ..........................................................................[gereed]
(22/25) Installeren van: python3-dateutil-2.4.2-5.1.noarch .............................................................................[gereed]
(23/25) Installeren van: python3-beautifulsoup4-4.4.0-4.1.noarch .......................................................................[gereed]
(24/25) Installeren van: python3-guessit-2.1.1-1.3.noarch ..............................................................................[gereed]
(25/25) Installeren van: python3-subliminal-2.0.5-1.1.noarch ...........................................................................[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: using /usr/bin/subliminal-3.4 to provide /usr/bin/subliminal (subliminal) in auto mode

En zo verwijder je het volledige softwarepakket terug:

dany@pindabook:~> sudo zypper remove --clean-deps python3-subliminal             
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Pakketafhankelijkheden oplossen...

De volgende 25 pakketten zullen worden VERWIJDERD:
  bsdtar python3-appdirs python3-Babel python3-babelfish python3-beautifulsoup4 python3-chardet python3-click python3-colorlog python3-cssselect
  python3-dateutil python3-dbm python3-dogpile.cache python3-enzyme python3-Genshi python3-guessit python3-html5lib python3-lxml python3-pbr
  python3-pysrt python3-pytz python3-rarfile python3-rebulk python3-six python3-stevedore python3-subliminal

25 te verwijderen pakketten.
Na de bewerking zal 21,3 MiB worden vrijgemaakt.
Doorgaan? [j/n/...? alle opties tonen] (j): 
( 1/25) Verwijderen van python3-Genshi-0.7-4.1.x86_64 ..................................................................................[gereed]
( 2/25) Verwijderen van python3-colorlog-2.10.0-1.1.x86_64 .............................................................................[gereed]
( 3/25) Verwijderen van python3-subliminal-2.0.5-1.1.noarch ............................................................................[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: warning: alternative /usr/bin/subliminal-3.4 (part of link group subliminal) doesn't exist; removing from list of alternatives                                                                                                                                             


( 4/25) Verwijderen van python3-Babel-1.3-6.3.noarch ...................................................................................[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: warning: alternative /usr/bin/pybabel-3.4 (part of link group pybabel) doesn't exist; removing from list of alternatives   


( 5/25) Verwijderen van python3-stevedore-1.20.0-1.1.noarch ............................................................................[gereed]
( 6/25) Verwijderen van python3-rarfile-3.0-1.4.noarch .................................................................................[gereed]
( 7/25) Verwijderen van python3-pysrt-1.1.1-1.1.noarch .................................................................................[gereed]
( 8/25) Verwijderen van python3-guessit-2.1.1-1.3.noarch ...............................................................................[gereed]
( 9/25) Verwijderen van python3-enzyme-0.4.1-1.1.noarch ................................................................................[gereed]
(10/25) Verwijderen van python3-dogpile.cache-0.6.2-4.1.noarch .........................................................................[gereed]
(11/25) Verwijderen van python3-dbm-3.4.6-12.3.1.x86_64 ................................................................................[gereed]
(12/25) Verwijderen van python3-click-6.6-3.1.noarch ...................................................................................[gereed]
(13/25) Verwijderen van python3-beautifulsoup4-4.4.0-4.1.noarch ........................................................................[gereed]
(14/25) Verwijderen van python3-appdirs-1.4.0-3.1.noarch ...............................................................................[gereed]
(15/25) Verwijderen van python3-pytz-2015.6-4.1.noarch .................................................................................[gereed]
(16/25) Verwijderen van python3-pbr-1.8.0-4.2.noarch ...................................................................................[gereed]
Aanvullende rpm-uitvoer:
warning: file /usr/bin/pbr: remove failed: No such file or directory


(17/25) Verwijderen van bsdtar-3.1.2-19.3.x86_64 .......................................................................................[gereed]
(18/25) Verwijderen van python3-chardet-2.3.0-6.1.noarch ...............................................................................[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: warning: alternative /usr/bin/chardetect-3.4 (part of link group chardetect) doesn't exist; removing from list of alternatives


(19/25) Verwijderen van python3-rebulk-0.8.2-1.1.noarch ................................................................................[gereed]
(20/25) Verwijderen van python3-dateutil-2.4.2-5.1.noarch ..............................................................................[gereed]
(21/25) Verwijderen van python3-babelfish-0.5.5-1.1.noarch .............................................................................[gereed]
(22/25) Verwijderen van python3-lxml-3.4.4-5.4.x86_64 ..................................................................................[gereed]
(23/25) Verwijderen van python3-html5lib-0.999999-4.1.noarch ...........................................................................[gereed]
(24/25) Verwijderen van python3-cssselect-0.9.1-5.3.noarch .............................................................................[gereed]
(25/25) Verwijderen van python3-six-1.10.0-5.3.1.noarch ................................................................................[gereed]
Er zijn enkele programma's actief waarvoor mogelijk bestanden worden gebruikt die zijn verwijderd tijdens een recente upgrade. U kunt deze controleren en opnieuw starten. Voer zypper ps -s uit om deze programma's weer te geven.

Hier zorgt de optie --clean-deps dat niet door andere pakketten gebruikte afhankelijke pakketten ook automatisch mee verwijderd worden.

Grafisch installeren en verwijderen via een script

Hoewel de hierboven beschreven methodes goed werken, is het leuk, leerzaam en een uitdaging om zelf iets gelijkaardigs in elkaar te steken. We hebben software grafisch geïnstalleerd en daarbij de lijst met geïnstalleerde pakketten in het bestand pkglist.txt opgeslagen (zie hoger). Door dit tekstbestand te openen en te bestuderen, merk je al vlug dat je voor installatie gemarkeerde pakketten kunt herkennen aan de tekst [Installeren] vooraan te regel. Deze regels kunnen we met behulp van de volgende opdracht afzonderen:

dany@pindabook:~> grep "\[Installeren\]" pkglist.txt
[Installeren]        python3-subliminal             | Python library to search and download... | (2.0.5-1.1)               |  389,7 KiB

Let op het gebruik van \ voor de rechte haken, de \ zorgt dat grep de rechte haken niet als een instructie maar als rechte haken ziet. Met andere woorden de rechte haken maken deel uit van het op te zoeken tekstfragment.

De regels met de automatisch mee geïnstalleerde afhankelijke pakketten beginnen met de tekst [Auto-installatie]. Deze regels voegen we toe aan onze opdracht door een OF (OR) functie te gebruiken \|:

dany@pindabook:~> grep "\[Installeren\]\|\[Auto-installatie\]" pkglist.txt
[Installeren]        python3-subliminal             | Python library to search and download... | (2.0.5-1.1)               |  389,7 KiB
[Auto-installatie]   bsdtar                         | Creates and reads several different s... | (3.1.2-19.3)              |  111,9 KiB
[Auto-installatie]   python3-Babel                  | Internationalization utilities           | (1.3-6.3)                 |    8,8 MiB
[Auto-installatie]   python3-Genshi                 | A toolkit for generation of output fo... | (0.7-4.1)                 |    1,7 MiB
[Auto-installatie]   python3-appdirs                | A small Python module for determining... | (1.4.0-3.1)               |   59,1 KiB
[Auto-installatie]   python3-babelfish              | A Python library to work with countri... | (0.5.5-1.1)               |  372,2 KiB
[Auto-installatie]   python3-beautifulsoup4         | HTML/XML Parser for Quick-Turnaround ... | (4.4.0-4.1)               |  573,1 KiB
[Auto-installatie]   python3-chardet                | Universal encoding detector              | (2.3.0-6.1)               |    1,1 MiB
[Auto-installatie]   python3-click                  | A simple wrapper around optparse for ... | (6.6-3.1)                 |  460,7 KiB
[Auto-installatie]   python3-colorlog               | Log formatting with colors               | (2.10.0-1.1)              |   82,0 KiB
[Auto-installatie]   python3-cssselect              | CSS3 selectors for Python                | (0.9.1-5.3)               |  194,4 KiB
[Auto-installatie]   python3-dateutil               | Een datum-tijd-bibliotheek voor Python   | (2.4.2-5.1)               |  433,5 KiB
[Auto-installatie]   python3-dbm                    | Python Interface to the GDBM Library     | (3.4.6-12.3.1)            |   62,9 KiB
[Auto-installatie]   python3-dogpile.cache          | A caching front-end based on the Dogp... | (0.6.2-4.1)               |  265,2 KiB
[Auto-installatie]   python3-enzyme                 | Python video metadata parser             | (0.4.1-1.1)               |  412,4 KiB
[Auto-installatie]   python3-guessit                | GuessIt - a library for guessing info... | (2.1.1-1.3)               |  636,3 KiB
[Auto-installatie]   python3-html5lib               | HTML parser based on the WHAT-WG Web ... | (0.999999-4.1)            |  871,2 KiB
[Auto-installatie]   python3-lxml                   | Powerful and Pythonic XML processing ... | (3.4.4-5.4)               |    2,7 MiB
[Auto-installatie]   python3-pbr                    | Python Build Reasonableness              | (1.8.0-4.2)               |  429,4 KiB
[Auto-installatie]   python3-pysrt                  | SubRip (.srt) subtitle parser and writer | (1.1.1-1.1)               |  102,3 KiB
[Auto-installatie]   python3-pytz                   | World timezone definitions, modern an... | (2015.6-4.1)              |  668,1 KiB
[Auto-installatie]   python3-rarfile                | RAR Archive Reader for Python            | (3.0-1.4)                 |  246,3 KiB
[Auto-installatie]   python3-rebulk                 | Rebulk - Define bulk search patterns ... | (0.8.2-1.1)               |  659,0 KiB
[Auto-installatie]   python3-six                    | Python 2 and 3 compatibility utilities   | (1.10.0-5.3.1)            |   58,4 KiB
[Auto-installatie]   python3-stevedore              | Manage dynamic plugins for Python app... | (1.20.0-1.1)              |  209,5 KiB

In de tweede kolom staat telkens de naam van het geïnstalleerde pakket. We breiden de opdracht uit met een awk opdracht die uit elke afgezonderde regel de tweede kolom afzondert:

dany@pindabook:~> grep "\[Installeren\]\|\[Auto-installatie\]" pkglist.txt | awk '{print $2}'
python3-subliminal
bsdtar
python3-Babel
python3-Genshi
python3-appdirs
python3-babelfish
python3-beautifulsoup4
python3-chardet
python3-click
python3-colorlog
python3-cssselect
python3-dateutil
python3-dbm
python3-dogpile.cache
python3-enzyme
python3-guessit
python3-html5lib
python3-lxml
python3-pbr
python3-pysrt
python3-pytz
python3-rarfile
python3-rebulk
python3-six
python3-stevedore

Het resultaat van deze opdracht vangen we op in de variabele packages:

dany@pindabook:~> packages=$(grep "\[Installeren\]\|\[Auto-installatie\]" pkglist.txt | awk '{print $2}')
dany@pindabook:~> echo $packages 
python3-subliminal bsdtar python3-Babel python3-Genshi python3-appdirs python3-babelfish python3-beautifulsoup4 python3-chardet python3-click python3-colorlog python3-cssselect python3-dateutil python3-dbm python3-dogpile.cache python3-enzyme python3-guessit python3-html5lib python3-lxml python3-pbr python3-pysrt python3-pytz python3-rarfile python3-rebulk python3-six python3-stevedore

De zypper opdracht kan nu de in de variable $packages opgeslagen pakketten verwijderen met de opdracht:

dany@pindabook:~> sudo zypper remove $packages          
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Pakketafhankelijkheden oplossen...

De volgende 25 pakketten zullen worden VERWIJDERD:
  bsdtar python3-appdirs python3-Babel python3-babelfish python3-beautifulsoup4
  python3-chardet python3-click python3-colorlog python3-cssselect
  python3-dateutil python3-dbm python3-dogpile.cache python3-enzyme
  python3-Genshi python3-guessit python3-html5lib python3-lxml python3-pbr
  python3-pysrt python3-pytz python3-rarfile python3-rebulk python3-six
  python3-stevedore python3-subliminal

25 te verwijderen pakketten.
Na de bewerking zal 21,3 MiB worden vrijgemaakt.
Doorgaan? [j/n/...? alle opties tonen] (j): j
( 1/25) Verwijderen van python3-Genshi-0.7-4.1.x86_64 ..................[gereed]
( 2/25) Verwijderen van python3-colorlog-2.10.0-1.1.x86_64 .............[gereed]
( 3/25) Verwijderen van python3-subliminal-2.0.5-1.1.noarch ............[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: warning: alternative /usr/bin/subliminal-3.4 (part of link group subliminal) doesn't exist; removing from list of alternatives             


( 4/25) Verwijderen van python3-Babel-1.3-6.3.noarch ...................[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: warning: alternative /usr/bin/pybabel-3.4 (part of link group pybabel) doesn't exist; removing from list of alternatives                   


( 5/25) Verwijderen van python3-stevedore-1.20.0-1.1.noarch ............[gereed]
( 6/25) Verwijderen van python3-rarfile-3.0-1.4.noarch .................[gereed]
( 7/25) Verwijderen van python3-pysrt-1.1.1-1.1.noarch .................[gereed]
( 8/25) Verwijderen van python3-guessit-2.1.1-1.3.noarch ...............[gereed]
( 9/25) Verwijderen van python3-enzyme-0.4.1-1.1.noarch ................[gereed]
(10/25) Verwijderen van python3-dogpile.cache-0.6.2-4.1.noarch .........[gereed]
(11/25) Verwijderen van python3-dbm-3.4.6-12.3.1.x86_64 ................[gereed]
(12/25) Verwijderen van python3-click-6.6-3.1.noarch ...................[gereed]
(13/25) Verwijderen van python3-beautifulsoup4-4.4.0-4.1.noarch ........[gereed]
(14/25) Verwijderen van python3-appdirs-1.4.0-3.1.noarch ...............[gereed]
(15/25) Verwijderen van python3-pytz-2015.6-4.1.noarch .................[gereed]
(16/25) Verwijderen van python3-pbr-1.8.0-4.2.noarch ...................[gereed]
Aanvullende rpm-uitvoer:
warning: file /usr/bin/pbr: remove failed: No such file or directory


(17/25) Verwijderen van bsdtar-3.1.2-19.3.x86_64 .......................[gereed]
(18/25) Verwijderen van python3-chardet-2.3.0-6.1.noarch ...............[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: warning: alternative /usr/bin/chardetect-3.4 (part of link group chardetect) doesn't exist; removing from list of alternatives


(19/25) Verwijderen van python3-rebulk-0.8.2-1.1.noarch ................[gereed]
(20/25) Verwijderen van python3-dateutil-2.4.2-5.1.noarch ..............[gereed]
(21/25) Verwijderen van python3-babelfish-0.5.5-1.1.noarch .............[gereed]
(22/25) Verwijderen van python3-lxml-3.4.4-5.4.x86_64 ..................[gereed]
(23/25) Verwijderen van python3-html5lib-0.999999-4.1.noarch ...........[gereed]
(24/25) Verwijderen van python3-cssselect-0.9.1-5.3.noarch .............[gereed]
(25/25) Verwijderen van python3-six-1.10.0-5.3.1.noarch ................[gereed]

Een script om een in een pkglist.txt opgeslagen installatie terug te draaien bestaat dus uit welgeteld twee opdrachtregels:

#!/bin/bash
# Software en afhankelijke pakketten automatisch verwijderen
packages=$(grep "\[Installeren\]\|\[Auto-installatie\]" pkglist.txt | awk '{print $2}')
sudo zypper remove $packages

Installeren via een terminalopdracht en verwijderen via een script

In ons vorige voorbeeld werd de lijst met geïnstalleerde software door de grafische installatiesoftware aangemaakt. Met de volgende opdracht kan je zo'n lijst aanmaken met een terminal installatie-opdracht:

dany@pindabook:~> sudo zypper install python3-subliminal | tee zpkglist.txt
[sudo] wachtwoord voor root: 
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Pakketafhankelijkheden oplossen...

De volgende 25 NIEUWE pakketten zullen worden geïnstalleerd:
  bsdtar python3-appdirs python3-Babel python3-babelfish python3-beautifulsoup4 python3-chardet python3-click python3-colorlog python3-cssselect python3-dateutil python3-dbm python3-dogpile.cache python3-enzyme python3-Genshi python3-guessit python3-html5lib python3-lxml python3-pbr python3-pysrt python3-pytz python3-rarfile python3-rebulk python3-six python3-stevedore python3-subliminal

De volgende 3 aanbevolen pakketten zijn automatisch geselecteerd:
  python3-colorlog python3-Genshi python3-lxml

25 nieuwe te installeren pakketten.
Totale downloadgrootte: 5,1 MiB. Reeds in de cache: 0 B. Na de bewerking zal aanvullend 21,3 MiB worden gebruikt.
Doorgaan? [j/n/...? alle opties tonen] (j): j
pakket python3-appdirs-1.4.0-3.1.noarch wordt opgehaald (1/25),  16,3 KiB ( 59,1 KiB uitgepakt)
Ophalen: python3-appdirs-1.4.0-3.1.noarch.rpm [gereed]
pakket python3-babelfish-0.5.5-1.1.noarch wordt opgehaald (2/25),  91,9 KiB (372,2 KiB uitgepakt)
Ophalen: python3-babelfish-0.5.5-1.1.noarch.rpm [gereed]
pakket python3-chardet-2.3.0-6.1.noarch wordt opgehaald (3/25), 192,6 KiB (  1,1 MiB uitgepakt)
Ophalen: python3-chardet-2.3.0-6.1.noarch.rpm [.gereed (2,0 MiB/s)]
pakket python3-click-6.6-3.1.noarch wordt opgehaald (4/25), 117,5 KiB (460,7 KiB uitgepakt)
Ophalen: python3-click-6.6-3.1.noarch.rpm [gereed]
pakket python3-cssselect-0.9.1-5.3.noarch wordt opgehaald (5/25),  45,1 KiB (194,4 KiB uitgepakt)
Ophalen: python3-cssselect-0.9.1-5.3.noarch.rpm [gereed]
pakket python3-dogpile.cache-0.6.2-4.1.noarch wordt opgehaald (6/25),  60,8 KiB (265,2 KiB uitgepakt)
Ophalen: python3-dogpile.cache-0.6.2-4.1.noarch.rpm [gereed]
pakket python3-enzyme-0.4.1-1.1.noarch wordt opgehaald (7/25),  61,1 KiB (412,4 KiB uitgepakt)
Ophalen: python3-enzyme-0.4.1-1.1.noarch.rpm [gereed]
pakket python3-pbr-1.8.0-4.2.noarch wordt opgehaald (8/25), 127,2 KiB (429,4 KiB uitgepakt)
Ophalen: python3-pbr-1.8.0-4.2.noarch.rpm [gereed]
pakket python3-pytz-2015.6-4.1.noarch wordt opgehaald (9/25), 180,0 KiB (668,1 KiB uitgepakt)
Ophalen: python3-pytz-2015.6-4.1.noarch.rpm [.gereed (1,6 MiB/s)]
pakket python3-rebulk-0.8.2-1.1.noarch wordt opgehaald (10/25), 104,6 KiB (659,0 KiB uitgepakt)
Ophalen: python3-rebulk-0.8.2-1.1.noarch.rpm [gereed]
pakket bsdtar-3.1.2-19.3.x86_64 wordt opgehaald (11/25),  58,8 KiB (111,9 KiB uitgepakt)
Ophalen: bsdtar-3.1.2-19.3.x86_64.rpm [gereed]
pakket python3-colorlog-2.10.0-1.1.x86_64 wordt opgehaald (12/25),  24,6 KiB ( 82,0 KiB uitgepakt)
Ophalen: python3-colorlog-2.10.0-1.1.x86_64.rpm [gereed]
pakket python3-pysrt-1.1.1-1.1.noarch wordt opgehaald (13/25),  27,3 KiB (102,3 KiB uitgepakt)
Ophalen: python3-pysrt-1.1.1-1.1.noarch.rpm [gereed]
pakket python3-lxml-3.4.4-5.4.x86_64 wordt opgehaald (14/25), 760,5 KiB (  2,7 MiB uitgepakt)
Ophalen: python3-lxml-3.4.4-5.4.x86_64.rpm [.gereed (2,7 MiB/s)]
pakket python3-Babel-1.3-6.3.noarch wordt opgehaald (15/25),   2,0 MiB (  8,8 MiB uitgepakt)
Ophalen: python3-Babel-1.3-6.3.noarch.rpm [gereed]
pakket python3-rarfile-3.0-1.4.noarch wordt opgehaald (16/25),  52,5 KiB (246,3 KiB uitgepakt)
Ophalen: python3-rarfile-3.0-1.4.noarch.rpm [.gereed (1,3 MiB/s)]
pakket python3-Genshi-0.7-4.1.x86_64 wordt opgehaald (17/25), 280,2 KiB (  1,7 MiB uitgepakt)
Ophalen: python3-Genshi-0.7-4.1.x86_64.rpm [gereed]
pakket python3-dbm-3.4.6-12.3.1.x86_64 wordt opgehaald (18/25),  28,9 KiB ( 62,9 KiB uitgepakt)
Ophalen: python3-dbm-3.4.6-12.3.1.x86_64.rpm [gereed]
pakket python3-six-1.10.0-5.3.1.noarch wordt opgehaald (19/25),  26,4 KiB ( 58,4 KiB uitgepakt)
Ophalen: python3-six-1.10.0-5.3.1.noarch.rpm [gereed]
pakket python3-stevedore-1.20.0-1.1.noarch wordt opgehaald (20/25),  57,1 KiB (209,5 KiB uitgepakt)
Ophalen: python3-stevedore-1.20.0-1.1.noarch.rpm [gereed]
pakket python3-html5lib-0.999999-4.1.noarch wordt opgehaald (21/25), 183,8 KiB (871,2 KiB uitgepakt)
Ophalen: python3-html5lib-0.999999-4.1.noarch.rpm [gereed]
pakket python3-dateutil-2.4.2-5.1.noarch wordt opgehaald (22/25), 218,0 KiB (433,5 KiB uitgepakt)
Ophalen: python3-dateutil-2.4.2-5.1.noarch.rpm [gereed]
pakket python3-beautifulsoup4-4.4.0-4.1.noarch wordt opgehaald (23/25), 142,3 KiB (573,1 KiB uitgepakt)
Ophalen: python3-beautifulsoup4-4.4.0-4.1.noarch.rpm [gereed]
pakket python3-guessit-2.1.1-1.3.noarch wordt opgehaald (24/25), 138,2 KiB (636,3 KiB uitgepakt)
Ophalen: python3-guessit-2.1.1-1.3.noarch.rpm [gereed]
pakket python3-subliminal-2.0.5-1.1.noarch wordt opgehaald (25/25), 108,8 KiB (389,7 KiB uitgepakt)
Ophalen: python3-subliminal-2.0.5-1.1.noarch.rpm [gereed]
Controleren op conflicten tussen bestanden: [.......gereed]
( 1/25) Installeren van: python3-appdirs-1.4.0-3.1.noarch [.......gereed]
( 2/25) Installeren van: python3-babelfish-0.5.5-1.1.noarch [...........gereed]
( 3/25) Installeren van: python3-chardet-2.3.0-6.1.noarch [...........gereed]
Aanvullende rpm-uitvoer:
update-alternatives: using /usr/bin/chardetect-3.4 to provide /usr/bin/chardetect (chardetect) in auto mode


( 4/25) Installeren van: python3-click-6.6-3.1.noarch [...........gereed]
( 5/25) Installeren van: python3-cssselect-0.9.1-5.3.noarch [..........gereed]
( 6/25) Installeren van: python3-dogpile.cache-0.6.2-4.1.noarch [..........gereed]
( 7/25) Installeren van: python3-enzyme-0.4.1-1.1.noarch [...........gereed]
( 8/25) Installeren van: python3-pbr-1.8.0-4.2.noarch [............gereed]
Aanvullende rpm-uitvoer:
update-alternatives: using /usr/bin/pbr-3.4 to provide /usr/bin/pbr (pbr) in auto mode


( 9/25) Installeren van: python3-pytz-2015.6-4.1.noarch [............gereed]
(10/25) Installeren van: python3-rebulk-0.8.2-1.1.noarch [............gereed]
(11/25) Installeren van: bsdtar-3.1.2-19.3.x86_64 [......gereed]
(12/25) Installeren van: python3-colorlog-2.10.0-1.1.x86_64 [...........gereed]
(13/25) Installeren van: python3-pysrt-1.1.1-1.1.noarch [...........gereed]
(14/25) Installeren van: python3-lxml-3.4.4-5.4.x86_64 [............gereed]
(15/25) Installeren van: python3-Babel-1.3-6.3.noarch [............gereed]
Aanvullende rpm-uitvoer:
update-alternatives: using /usr/bin/pybabel-3.4 to provide /usr/bin/pybabel (pybabel) in auto mode


(16/25) Installeren van: python3-rarfile-3.0-1.4.noarch [......gereed]
(17/25) Installeren van: python3-Genshi-0.7-4.1.x86_64 [............gereed]
(18/25) Installeren van: python3-dbm-3.4.6-12.3.1.x86_64 [........gereed]
(19/25) Installeren van: python3-six-1.10.0-5.3.1.noarch [.....gereed]
(20/25) Installeren van: python3-stevedore-1.20.0-1.1.noarch [............gereed]
(21/25) Installeren van: python3-html5lib-0.999999-4.1.noarch [............gereed]
(22/25) Installeren van: python3-dateutil-2.4.2-5.1.noarch [..........gereed]
(23/25) Installeren van: python3-beautifulsoup4-4.4.0-4.1.noarch [...........gereed]
(24/25) Installeren van: python3-guessit-2.1.1-1.3.noarch [............gereed]
(25/25) Installeren van: python3-subliminal-2.0.5-1.1.noarch [............gereed]
Aanvullende rpm-uitvoer:
update-alternatives: using /usr/bin/subliminal-3.4 to provide /usr/bin/subliminal (subliminal) in auto mode

Daarbij gebruiken we de tee opdracht om alle uitvoer die bij de zypper installatie opdracht op het scherm verschijnt op te slaan in het bestand zpkglist.txt. Het volgende script draait de installatie terug:

#!/bin/bash
# Software en afhankelijke pakketten automatisch verwijderen
while read p; do
  package=$(echo $p | grep "Ophalen:" | awk '{print $2}')
  packages="$packages ${package%-*-*}"
done < zpkglist.txt
sudo zypper remove $packages

De while lus leest elke regel van het zpkglist.txt bestand in om deze binnen de lus elk afzonderlijk te verwerken.

while read p; do
  echo $p
  # Regel per regel verwerken
done < zpkglist.txt

Elk te installeren pakket moet uit een softwarebron opgehaald worden. Alle regels die beginnen met Ophalen: bevatten dus een te installeren pakket (grep "Ophalen:"). De naam van het te installeren pakket staat in de tweede kolom (awk '{print $2}'). Het zo gevonden pakket wordt opgeslagen in de variable package:

  package=$(echo $p | grep "Ophalen:" | awk '{print $2}')

Wie goed kijkt, ziet al snel dat de variabele $package niet de pakketnaam bevat, maar wel de naam van het bestand dat het pakket bevat. De bestandsnaam van een pakket begint steeds met de naam van het pakket gevolgd door een koppelteken, een versienummer, nog een koppelteken, nog een versienummer en een architectuur. Om de pakketnaam af te zonderen, nemen we enkel het gedeelte van de bestandsnaam voor het voorlaatste koppelteken (${package%-*-*}). En voegen dit toe aan de variabele packages met de te verwijderen pakketten.

  packages="$packages ${package%-*-*}"

Nu de variable $packages alle te verwijderen pakketten bevat, kunnen we deze doorgeven aan de zypper opdracht om het verwijderen effectief uit te voeren. Het hierboven vermelde script bewaard als unpkglist.sh voer je met de volgende opdracht uit:

dany@pindabook:~> bash unpkglist.sh 
[sudo] wachtwoord voor root: 
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Pakketafhankelijkheden oplossen...

De volgende 25 pakketten zullen worden VERWIJDERD:
  bsdtar python3-appdirs python3-Babel python3-babelfish python3-beautifulsoup4
  python3-chardet python3-click python3-colorlog python3-cssselect
  python3-dateutil python3-dbm python3-dogpile.cache python3-enzyme
  python3-Genshi python3-guessit python3-html5lib python3-lxml python3-pbr
  python3-pysrt python3-pytz python3-rarfile python3-rebulk python3-six
  python3-stevedore python3-subliminal

25 te verwijderen pakketten.
Na de bewerking zal 21,3 MiB worden vrijgemaakt.
Doorgaan? [j/n/...? alle opties tonen] (j): 
( 1/25) Verwijderen van python3-Genshi-0.7-4.1.x86_64 ..................[gereed]
( 2/25) Verwijderen van python3-colorlog-2.10.0-1.1.x86_64 .............[gereed]
( 3/25) Verwijderen van python3-subliminal-2.0.5-1.1.noarch ............[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: warning: alternative /usr/bin/subliminal-3.4 (part of link group subliminal) doesn't exist; removing from list of alternatives             


( 4/25) Verwijderen van python3-Babel-1.3-6.3.noarch ...................[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: warning: alternative /usr/bin/pybabel-3.4 (part of link group pybabel) doesn't exist; removing from list of alternatives                   


( 5/25) Verwijderen van python3-stevedore-1.20.0-1.1.noarch ............[gereed]
( 6/25) Verwijderen van python3-rarfile-3.0-1.4.noarch .................[gereed]
( 7/25) Verwijderen van python3-pysrt-1.1.1-1.1.noarch .................[gereed]
( 8/25) Verwijderen van python3-guessit-2.1.1-1.3.noarch ...............[gereed]
( 9/25) Verwijderen van python3-enzyme-0.4.1-1.1.noarch ................[gereed]
(10/25) Verwijderen van python3-dogpile.cache-0.6.2-4.1.noarch .........[gereed]
(11/25) Verwijderen van python3-dbm-3.4.6-12.3.1.x86_64 ................[gereed]
(12/25) Verwijderen van python3-click-6.6-3.1.noarch ...................[gereed]
(13/25) Verwijderen van python3-beautifulsoup4-4.4.0-4.1.noarch ........[gereed]
(14/25) Verwijderen van python3-appdirs-1.4.0-3.1.noarch ...............[gereed]
(15/25) Verwijderen van python3-pytz-2015.6-4.1.noarch .................[gereed]
(16/25) Verwijderen van python3-pbr-1.8.0-4.2.noarch ...................[gereed]
Aanvullende rpm-uitvoer:
warning: file /usr/bin/pbr: remove failed: No such file or directory


(17/25) Verwijderen van bsdtar-3.1.2-19.3.x86_64 .......................[gereed]
(18/25) Verwijderen van python3-chardet-2.3.0-6.1.noarch ...............[gereed]
Aanvullende rpm-uitvoer:
update-alternatives: warning: alternative /usr/bin/chardetect-3.4 (part of link group chardetect) doesn't exist; removing from list of alternatives


(19/25) Verwijderen van python3-rebulk-0.8.2-1.1.noarch ................[gereed]
(20/25) Verwijderen van python3-dateutil-2.4.2-5.1.noarch ..............[gereed]
(21/25) Verwijderen van python3-babelfish-0.5.5-1.1.noarch .............[gereed]
(22/25) Verwijderen van python3-lxml-3.4.4-5.4.x86_64 ..................[gereed]
(23/25) Verwijderen van python3-html5lib-0.999999-4.1.noarch ...........[gereed]
(24/25) Verwijderen van python3-cssselect-0.9.1-5.3.noarch .............[gereed]
(25/25) Verwijderen van python3-six-1.10.0-5.3.1.noarch ................[gereed]