File: zypper.8.txt

package info (click to toggle)
zypper 1.14.42-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 44,308 kB
  • sloc: cpp: 29,152; sh: 685; perl: 133; xml: 109; python: 39; makefile: 25
file content (1979 lines) | stat: -rw-r--r-- 103,737 bytes parent folder | download | duplicates (2)
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
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
ZYPPER(8)
=========
:man manual: ZYPPER
:man source: SUSE Linux
:nop:
:openbr: {
:closebr: }
:asterisk: *
:incdir: zypper.8.d


NAME
----
zypper - Command-line interface to ZYpp system management library (libzypp)


SYNOPSIS
--------
*zypper* [_--global-opts_] _command_ [_--command-opts_] [_command-arguments_]

*zypper* _subcommand_ [_--command-opts_] [_command-arguments_]

*zypper* *help* _command_


DESCRIPTION
-----------
zypper is a command-line interface to ZYpp system management library (libzypp). It can be used to install, update, remove software, manage repositories, perform various queries, and more.


CONCEPTS
--------
Most of the following concepts are common for all applications based on the libzypp package management library, but there are some zypper specifics.


System Packages
~~~~~~~~~~~~~~~
The set of installed packages on a system is sometimes denoted as repository *@System* or *System Packages*. In contrast to available repositories providing packages which can be installed, *@System* provides packages which can only be deleted. Installed packages which are not also provided by at least one of the available repositories are often denoted as being _unwanted_, _orphaned_ or _dropped_.


Repositories
~~~~~~~~~~~~
Libzypp works with repository metadata, this is information about packages and their relations extracted from RPM packages and other data like patch information, pattern definitions, etc. These data are stored together with the RPM files in folders called _repositories_. Repositories can be placed on various media like an HTTP or FTP server, DVD, or a folder on a local disc.

There is a special set of commands in zypper intended to manipulate repositories. Also many commands and options take a repository as an argument. See section *COMMANDS*, subsection *Repository Management* for more details.


GPG checks
~~~~~~~~~~
*Disabling GPG checks is not recommended.* Signing data enables the recipient to verify that no modifications occurred after the data were signed. Accepting data with no, wrong or unknown signature can lead to a corrupted system and in extreme cases even to a system compromise.

Zypp verifies the authenticity of repository metadata by checking their GPG signature. If the repository metadata are signed with a trusted key and successfully verified, packages from this repository are accepted for installation if they match the checksum provided in the metadata. Using unsigned repositories needs to be confirmed.

If the repository metadata are not signed, the GPG signature of each downloaded rpm package is checked before accepting it for installation. Packages from unsigned repositories need a valid GPG signature. Using unsigned packages needs to be confirmed.

The above is the default behavior defined by settings in /etc/zypp/zypp.conf.

The *addrepo* and *modifyrepo* commands provide further options to tune the behavior per repository. It is for example possible to relax the need to confirm installing unsigned packages for a specific repository. But if you do so, you should be very certain that an attacker can hardly modify the package data within the repository or on the way to your machine. See section *COMMANDS* for details about the command options.


Resource Identifiers (URI)
~~~~~~~~~~~~~~~~~~~~~~~~~~
To specify locations of repositories or other resources (RPM files, .repo files) you can use any type of URI supported by libzypp. In addition Zypper accepts a special URI identifying openSUSE Build Service (OBS) repositories in the *addrepo* command. These URIs have the form of **obs://**__project__**/**[_platform_].

See section *COMMANDS*, subsection *Repository Management* for a complete list and examples of *supported URI formats*.


Refresh
~~~~~~~
Refreshing a repository means downloading metadata of packages from the medium (if needed), storing it in local cache (typically under **/var/cache/zypp/raw/**__alias__ directory) and preparsing the metadata into _.solv_ files (building the solv cache), typically under **/var/cache/zypp/solv/**__alias__.

The metadata get refreshed either automatically or on user request. An _automatic refresh_ takes place right before reading metadata from the database if the *auto-refresh is enabled* for the repository and the metadata is reported to be out of date. If the _auto-refresh is disabled_, the repository will only be refreshed on user request. You can request a refresh by calling *zypper refresh* (see the documentation of the *refresh* command for details).

The repository metadata are checked for changes before actually doing the refresh. A change is detected by downloading one or two metadata index files (small files) and comparing the checksums of the cached ones and the remote ones. If the files differ, the repository is out of date and will be refreshed.

To delay the up-to-date check (and thus the automatic refresh) for a certain number of minutes, edit the value of the *repo.refresh.delay* attribute of ZYpp config file (*/etc/zypp/zypp.conf*). This means, zypper will not even try to download and check the index files, and you will be able to use zypper for operations like search or info without internet access or root privileges.


Services
~~~~~~~~
Services are one level above repositories and serve to manage repositories or to do some special tasks. Libzypp currently supports _Repository Index Service_ (RIS) and _Plugin Service_.

Repository Index Service (RIS) is a special type of repository which contains a list of other repositories. This list can be generated dynamically by the server according to some URI parameters or user name, or can be static. Once such service is added to your system, zypper takes care of adding, modifying, or removing these repositories on your system to reflect the current list. See section *Service Management* and https://en.opensuse.org/openSUSE:Standards_Repository_Index_Service for more details.


Package Types
~~~~~~~~~~~~~
Zypper works with several types of resource objects, called _resolvables_. A resolvable might be a *package*, *patch*, *pattern*, *product*; basically any _kind of object_ with dependencies to other objects.

*package*::
	An ordinary RPM package.

*patch*::
	A released patch conflicts with the affected/vulnerable versions of a collection of packages. As long as any of these affected/vulnerable versions are installed, the conflict triggers and the patch is classified as *needed*, or as *unwanted* if the patch is locked.
+
Selecting the patch, the conflict is resolved by updating all installed and affected/vulnerable packages to a version providing the fix. When updating the packages zypper always aims for the latest available version. Resolved patches are classified as either *applied* or *not needed*, depending on whether they refer to actually installed packages.
+
So installation, update or removal of packages may change the classification of patches referring to these packages. Since libyzpp-17.23.0 the /var/log/zypp/history remembers if a committed transaction changes a patchs classification. If history data are available, patch tables show a column telling _since_ when the patch is in it's current state.
+
Depending on the kind of defect, patches are classified by _category_ and _severity_. Commonly used values for _category_ are *security*, *recommended*, *optional*, *feature*, *document* or *yast*. Commonly used values for _severity_ are *critical*, *important*, *moderate*, *low* or *unspecified*.
+
Note that the *patch* command does _not apply optional patches_ (category *optional* or *feature*) by default. If you actually want to consider all optional patches as being needed, say *patch --with-optional*. Specific patches can be applied using the *install* command (e.g. *zypper install patch:openSUSE-2014-7*).
+
If the issuer decides to retract a released patch, the patch status will be shown as *retracted*. The packages provided by the retracted patch are still visible but also tagged as having been retracted (*R*). The resolver will avoid selecting retracted packages automatically. If you are sure that a retracted package should be installed on your system, you must explicitly select it.

*pattern*::
	A group of packages required or recommended to install some functionality.

*product*::
	A group of packages which are necessary to install a product.

*srcpackage*::
	Source code package (.src.rpm). This type works in *search* and *install* commands.

*application*::
	Legacy: Since libzypp-17.7.0 this type is no longer available.

Throughout this manual we will often refer to resolvables simply as _packages_ and to resolvable types as _package type_ or _kind_. These type names can be used as arguments of *--type* option in several commands like *install*, *info*, or *search*. Commands should also allow one to specify resolvables as __KIND__**:**__NAME__ (e.g. *patch:openSUSE-2014-7*).


Package Dependencies
~~~~~~~~~~~~~~~~~~~~
Software packages depend on each other in various ways. Packages usually _require_ or _recommend_ other packages, but they can also _conflict_ with them. Packages may support specific hardware or language settings. Zypper uses a _dependency solver_ to find out which packages need to be installed to satisfy the user's request.

If you do not request a specific version of a package the solver will pick a reasonable one. The solvers general attitude when resolving a job is to focus on installing the best version of the requested package and to add or update dependencies as they are needed. Aside from this _Focus on Job_, which is the default, two other focus modes are available:

In _Focus on Installed_ mode the solver focuses on applying as little changes to the installed packages as needed. Choosing an older version of a requested package is valid if it's dependencies require less changes to the system. The solver will try to avoid updating already installed packages.

In _Focus on Update_ mode the solver focuses on updating the requested package and all its dependencies as much as possible. Beware, installing a single package in this mode may easily lead to a mini system update.

For a single command the focus mode can be set using the *--solver-focus MODE* switch. Valid modes are *Job*, *Installed* or *Update*. If you want to change the default mode for your system, set [/etc/zypp/zypp.conf:solver.focus] to the desired value.


Automatically installed packages
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packages added by the dependency solver in order to resolve a user's request are remembered as having been _automatically installed_. They may later be removed, if no more user installed packages depend on them (e.g. by *zypper remove --clean-deps*).

In the **S**tatus column the *search* command distinguishes between user installed packages (*i+*) and automatically installed packages (*i*).


Package File Conflicts
~~~~~~~~~~~~~~~~~~~~~~
File conflicts happen when two packages attempt to install files with the same name but different contents. This may happen if you are installing a newer version of a package without erasing the older version, of if two unrelated packages each install a file with the same name.

As checking for file conflicts requires access to the full filelist of each package being installed, zypper will be able to check for file conflicts only if all packages are downloaded in advance (see *--download-in-advance*). If you are doing a *--dry-run* no packages are downloaded, so the file conflict check will skip packages not available in the packages cache. To get a meaningful file conflict check use *--dry-run* together with *--download-only*.

As the reason for file conflicts usually is a poor package design or lack of coordination between the people building the packages, they are not easy to resolve. By using the *--replacefiles* option you can force zypper to replace the conflicting files. Nevertheless this may damage the package whose file gets replaced.


COMMANDS
--------
zypper provides a number of _commands_. Each command accepts the options listed in the *GLOBAL OPTIONS* section. These options must be specified _before_ the command name. In addition, many commands have specific options, which are listed in this section. These command-specific options must be specified _after_ the name of the command and _before_ any of the command arguments.

Zypper also provides limited support for writing extensions/subcommands in any language. See section *SUBCOMMANDS* for details.


General Commands
~~~~~~~~~~~~~~~~

*help* [_command_]::
	Shows help texts. If invoked without any argument (just *zypper* or *zypper help*), zypper displays global help text which lists all available global options and commands.
+
If invoked with a _command_ name argument, zypper displays help for the specified command, if such command exists. Long as well as short variants of the command names can be used.
+
For your convenience, *zypper help* can also be invoked in any of the following ways:

	{nop}::: $ *zypper -h*|*--help* [_command_]
	{nop}::: $ *zypper* [_command_] *-h*|*--help*


*shell* (*sh*)::
	Starts a shell for entering multiple commands in one session. Exit the shell using *exit*, *quit*, or _Ctrl-D_.
+
The shell support is not complete so expect bugs there. However, there's no urgent need to use the shell since libzypp became so fast thanks to the SAT solver and its tools (openSUSE 11.0), but still, you're welcome to experiment with it.


Package Management Commands
~~~~~~~~~~~~~~~~~~~~~~~~~~~

*info* (*if*) [_options_] _name_...::
	Displays detailed information about the specified packages.
+
For each specified package, zypper finds the best available version in defined repositories and shows information for this package.
+
--
	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Work only with the repository specified by the alias, name, number or URI. This option can be used multiple times.

	*-t*, *--type* _type_::
		Type of package (default: package). See section *Package Types* for list of available package types.
	*--provides*::
		Show symbols the package provides.

	*--requires*::
		Show symbols the package requires.

	*--conflicts*::
		Show symbols the package conflicts with.

	*--obsoletes*::
		Show symbols the package obsoletes.

	*--recommends*::
		Show symbols the package recommends.

	*--suggests*::
		Show symbols the package suggests.

	*--supplements*::
		Show symbols the package supplements.

	Examples: :: {nop}

		$ *zypper info workrave*:::
		Show information about _package workrave_

		$ *zypper info -t patch libzypp*:::
		Show information about _patch libzypp_

		$ *zypper info -t pattern lamp_server*:::
		Show information about _pattern lamp_server_
--

*install* (*in*) [_options_] _name_|_capability_|_rpm_file_uri_...::
	Install or update packages.
+
The packages can be selected by their _name_ or by a _capability_ they provide.
+
A _capability_ is formed by "_NAME_[**.**__ARCH__][ _OP EDITION_]", where _ARCH_ is an architecture code, _OP_ is one of *<*, *\<=*, *=*, *>=*, or *>* and _EDITION_ is "_VERSION_[**-**__RELEASE__]". For example: *zypper=0.8.8-2*.:::
+
The _NAME_ component of a capability is not only a package name but any symbol provided by packages: */bin/vi*, *libcurl.so.3*, *perl(Time::ParseDate)*. Just remember to quote to protect the special characters from the shell, for example: *zypper\>0.8.10* or *\'zypper>0.8.10'*.
+
If _EDITION_ is not specified, the newest installable version will be installed. This also means that if the package is already installed and newer versions are available, it will get upgraded to the newest installable version.
+
If _ARCH_ is not specified, or the last dot of the capability name string is not followed by known architecture, the solver will treat the whole string as a capability name. If the ARCH is known, the solver will select a package matching that architecture and complain if such package cannot be found.

Zypper is also able to install _plain RPM files_ while trying to satisfy their dependencies using packages from defined repositories. You can install a plain RPM file by specifying its location in the install command arguments either as a local path or an URI. E.g.: :::
+
$ *zypper install ~/rpms/foo.rpm \http://some.site/bar.rpm*
+
Zypper will report packages that it cannot find. Further, in interactive mode, zypper proceeds with installation of the rest of requested packages, and it will abort immediately in non-interactive mode. In both cases zypper returns *ZYPPER_EXIT_INF_CAP_NOT_FOUND* after finishing the operation.
+
Zypper will collect the files in a temporary *plaindir* repository and mark the respective packages for installation. If *--download-only* is used, the downloaded packages will be available in */var/cache/zypper/RPMS* until you actually install them or call *zypper clean* to clear the package caches. They will _not_ become part of the global package cache at */var/cache/zypp/packages* (see also the global *--pkg-cache-dir* option).

In the install command, you can also specify packages you wish to remove by prepending their names by a _-_ or _!_ character. For example: :::
+
$ *zypper install \!Firefox*{nbsp}
+
In contrast to *zypper remove Firefox* which removes Firefox and its dependent packages, the install command will try to keep dependent packages installed by looking for Firefox alternatives.
+
Note that if you choose to use *-* with the first package you specify, you need to write *--* before it to prevent its interpretation as a command option:
+
$ *zypper install --{nbsp} -boring-game great-game great-game-manual*{nbsp}

+
--
	-r, --repo alias|name|#|URI::
		Work only with the repository specified by the alias, name, number or URI. This option can be used multiple times.
+
Using --repo is _discouraged_ as it currently hides unmentioned repositories from the resolver, leading to inexpertly decisions. In the future --repo will become an alias for *--from*.

	*-t*, *--type* _type_::
		Type of package to install (default: package). See section *Package Types* for list of available package types. Use *zypper se -t* _type_ [_name_] to look for available items of this type and *zypper info -t* _type name_ to display more detailed information about the item.
+
If _patch_ is specified, zypper will install and/or remove packages to satisfy specified patch. This is a way to ensure that specific bug fix is installed. Use *zypper list-patches* to look for applicable patches.
+
If _product_ or _pattern_ are specified, zypper ensures that all required (and optionally recommended) packages are installed.

	*-n*, *--name*::
		Select packages by their name, don't try to select by capabilities.

	*-f*, *--force*::
		Install even if the item is already installed (reinstall), downgraded or changes vendor or architecture.

	*--oldpackage*::
		Allows one to replace a newer item with an older one. Handy if you are doing a rollback. Unlike --force it will not enforce a reinstall, if the item is already installed with the requested version.

	*--from* _alias_|_name_|_#_|_URI_::
		Select packages from specified repository. If strings specified as arguments to the install command match packages in repositories specified in this option, they will be marked for installation. This option currently implies *--name*, but allows using wildcards for specifying packages.

	*-C*, *--capability*::
		Select packages by capabilities.

	*-l*, *--auto-agree-with-licenses*::
		Automatically say _yes_ to third party license confirmation prompt. By using this option, you choose to agree with licenses of all third-party software this command will install. This option is particularly useful for administrators installing the same set of packages on multiple machines (by an automated process) and have the licenses confirmed before.

	*--auto-agree-with-product-licenses*::
		Automatically accept product licenses only. This is used by tools like SUSEconnect, which ask for confirmation before the product gets registered. So there's no need to confirm the product license again at install time.

	*--replacefiles*::
		Install the packages even if they replace files from other, already installed, packages. Default is to treat file conflicts as an error. *--download-as-needed* disables the file conflict check because access to all packages file lists is needed in advance in order to perform the check.

	*-D*, *--dry-run*::
		Test the installation, do not actually install any package. If used together with *--download-only* a meaningful file conflict check can be performed (see section *Package File Conflicts*).

	*--details*::
		Show the detailed installation summary.

include::{incdir}/option_legacy_no-confirm.txt[]

	*--allow-unsigned-rpm*::
		Silently install unsigned rpm packages given as commandline parameters.

	Solver related options: :: {nop}
include::{incdir}/option_Solver_Flags_Common.txt[]
include::{incdir}/option_Solver_Flags_Recommends.txt[]

	Download-and-install mode options: :: {nop}

	*-d*, *--download-only*::
		Only download the packages for later installation (see also the global *--pkg-cache-dir* option).
+
If used together with *--dry-run* a meaningful file conflict check can be performed (see section *Package File Conflicts*).

	*--download-in-advance*::
		First download all packages, then start installing. This is the default.

	*--download-in-heaps*::
		Download a minimal set of packages that can be installed without leaving
		the system in broken state, and install them. Then download and install another
		heap until all are installed. This helps to keep the system in consistent state
		without the need to download _all_ packages in advance, which combines the
		advantages of *--download-in-advance* and *--download-as-needed*.
		This is the default mode.
+
NOTE: While the resolver is not capable of building heaps, this behaves the same as *--download-in-advance*.

	*--download-as-needed*::
		Download one package, install it immediately, and continue with the rest
		until all are installed.

	*--download* _mode_::
		Use the specified download-and-install mode. Available modes are:
		*only*, *in-advance*, *in-heaps*, *as-needed*.
		See corresponding **--download-**__mode__ options for their description.

	Expert Options: :: Don't use them unless you know you need them.

include::{incdir}/option_Solver_Flags_Installs.txt[]

	Examples: :: {nop}

		$ *zypper install -t pattern lamp_server*:::
		Install lamp_server pattern.

		$ *zypper install --no-recommends gv*:::
		Install GhostScript viewer, but ignore recommended packages.

		$ *zypper install virtualbox-ose-2.0.6*::: {nop}
		$ *zypper install virtualbox-ose=2.0.6*::: {nop}
		$ *zypper install virtualbox-ose = 2.0.6*:::
		Install version 2.0.6 of virtualbox-ose package.
--

*source-install* (*si*) _name_...::
	Install specified source packages and their build dependencies. If the name of a binary package is given, the corresponding source package is looked up and installed instead.
+
This command will try to find the newest available versions of the source packages and uses *rpm -i* to install them, optionally together with all the packages that are required to build the source package. The default location where rpm installs source packages to is _/usr/src/packages/{SPECS,SOURCES}_, but the values can be changed in your local rpm configuration. In case of doubt try executing *rpm --eval "%\{_specdir\} and %\{_sourcedir\}"*.
+
Note that the source packages must be available in repositories you are using. You can check whether a repository contains any source packages using the following command:

		{nop}::: $ *zypper search -t srcpackage -r* _alias_|_name_|_#_|_URI_
		{nop}::: $ *zypper search -t srcpackage -r* _alias_|_name_|_#_|_URI_

+
--
	*-d*, *--build-deps-only*::
		Install only build dependencies of specified packages.

	*-D*, *--no-build-deps*::
		Don't install build dependencies.

	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.

	*--download-only*::
		Only download the packages, do not install.

	Examples: :: {nop}

		$ *zypper si -d dbus-1*:::
		Install build dependencies of dbus-1 source package.
--

*verify* (*ve*) [_options_]::
	Check whether dependencies of installed packages are satisfied.
+
In case that any dependency problems are found, zypper suggests packages to install or remove to fix them.
+
--
	*-D*, *--dry-run*::
		Test the repair, do not actually do anything to the system. If used together with *--download-only* a meaningful file conflict check can be performed (see section *Package File Conflicts*).

	*--details*::
		Show the detailed installation summary.

	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.

include::{incdir}/option_legacy_no-confirm.txt[]

	Solver related options: :: {nop}
include::{incdir}/option_Solver_Flags_Common.txt[]
include::{incdir}/option_Solver_Flags_Recommends.txt[]

	Expert Options: :: Don't use them unless you know you need them.

include::{incdir}/option_Solver_Flags_Installs.txt[]

	This command also accepts the *Download-and-install mode options* described in the *install* command.:: {nop}
--

*install-new-recommends* (*inr*) [_options_]::
	Install newly added packages recommended by already installed ones. This command basically re-evaluates the recommendations of all installed packages and fills up the system accordingly. _You don't want to call this unconditionally_ on small or minimal systems, as it may easily add a large number of packages.
+
Called as *zypper inr --no-recommends*, it restricts the command to just look for packages supporting available hardware, languages or filesystems. Useful after having added e.g. new hardware or driver repos. This is also the default behavior if you have set [zypp.conf:solver.onlyRequires].
+
--
	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.

	*-D*, *--dry-run*::
		Test the installation, do not actually install anything. If used together with *--download-only* a meaningful file conflict check can be performed (see section *Package File Conflicts*).

	*--details*::
		Show the detailed installation summary.

	Solver related options: :: {nop}
include::{incdir}/option_Solver_Flags_Common.txt[]
include::{incdir}/option_Solver_Flags_Recommends.txt[]

	Expert Options: :: Don't use them unless you know you need them.

include::{incdir}/option_Solver_Flags_Installs.txt[]

This command also accepts the *Download-and-install mode options* described in the *install* command.:: {nop}
--

*remove* (*rm*) [_options_] _name_...:: {nop}
*remove* (*rm*) [_options_] *--capability* _capability_...::
	Remove (uninstall) packages.
+
The remove command will uninstall the selected and their dependent packages. It will not try to install alternatives in order to keep dependent packages installed. If you want this, use **zypper install !**__name__.
+
The packages can be selected by their name or by a capability they provide. For details on package selection see the *install* command description.
+
--
	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.

	*-t*, *--type* _type_::
		Type of package (default: package). See section *Package Types* for list of available package types.
+
Since *patches* are not installed in sense of copying files or recording a database entry, they cannot be uninstalled, even though zypper shows them as installed. The installed status is determined solely based on the installed status of its required dependencies. If these dependencies are satisfied, the patch is rendered installed.

	*-n*, *--name*::
		Select packages by their name (default).

	*-C*, *--capability*::
		Select packages by capabilities.

	*-D*, *--dry-run*::
		Test the removal of packages, do not actually remove anything.

	*--details*::
		Show the detailed installation summary.

include::{incdir}/option_legacy_no-confirm.txt[]

	Solver related options: :: {nop}
include::{incdir}/option_Solver_Flags_Common.txt[]
// not supported here! //include::{incdir}/option_Solver_Flags_Recommends.txt[]

	*-u*, *--clean-deps*::
		Automatically remove dependencies which become unneeded after removal of requested packages.

	*-U*, *--no-clean-deps*::
		No automatic removal of unneeded dependencies.
--

*purge-kernels* [_options_]::
	Autoremoves installed kernels.
+
Automatically cleans up installed kernels according to the rules defined in [zypp.conf:multiversion.kernels] which can be given as _<version>_, *latest*[**-**__N__], *running*, *oldest*[**+**__N__].
+
--
	*--details*::
		Show the detailed installation summary.

	*-D*, *--dry-run*::
		Test the removal of packages, do not actually remove anything.
--


Update Management Commands
~~~~~~~~~~~~~~~~~~~~~~~~~~

*list-updates* (*lu*) [_options_]::
	List available updates.
+
This command will list only installable updates, i.e. updates which have no dependency problems, or which do not change package vendor. This list is what the *update* command will propose to install. To list all packages for which newer version are available, use *--all* option.
+
--
	*-t*, *--type* _type_::
		Type of package (default: package). See section *Package Types* for list of available package types.
+
If *patch* is specified, zypper acts as if the *list-patches* command was executed.

	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.

	*-a*, *--all*::
		List all packages for which newer versions are available, regardless whether they are installable or not.

	*--best-effort*::
		See the *update* command for description.

	Expert Options: :: Don't use them unless you know you need them.

include::{incdir}/option_Solver_Flags_Installs.txt[]

--

*update* (*up*) [_options_] [_packagename_]...::
	Update installed packages with newer versions, where possible.
+
This command will not update packages which would require change of package vendor unless the vendor is specified in */etc/zypp/vendors.d*, or which would require manual resolution of problems with dependencies. Such non-installable updates will then be listed in separate section of the summary as "_The following package updates will NOT be installed:_".
+
To update individual packages, specify one or more package names. You can use the *** and *?* wildcard characters in the package names to specify multiple packages matching the pattern.
+
--
	*-t*, *--type* _type_::
		Type of package (default: package). See section *Package Types* for list of available package types.
+
If *patch* is specified, zypper acts as if the *patches* command was executed.

	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.

	*--skip-interactive*::
		This will skip interactive patches, that is, those that need reboot, contain a message, or update a package whose license needs to be confirmed.

	*--with-interactive*::
		Avoid skipping of interactive patches when in non-interactive mode.

	*-l*, *--auto-agree-with-licenses*::
		Automatically say _yes_ to third party license confirmation prompt. By using this option, you choose to agree with licenses of all third-party software this command will install. This option is particularly useful for administrators installing the same set of packages on multiple machines (by an automated process) and have the licenses confirmed before.

	*--auto-agree-with-product-licenses*::
		Automatically accept product licenses only. This is used by tools like SUSEconnect, which ask for confirmation before the product gets registered. So there's no need to confirm the product license again at install time.

	*--replacefiles*::
		Install the packages even if they replace files from other, already installed, packages. Default is to treat file conflicts as an error. *--download-as-needed* disables the fileconflict check because access to all packages filelists is needed in advance in order to perform the check.

	*-D*, *--dry-run*::
		Test the update, do not actually install or update any package. If used together with *--download-only* a meaningful file conflict check can be performed (see section *Package File Conflicts*).

	*--details*::
		Show the detailed installation summary.

	*--best-effort*::
		Do a _best effort_ approach to update. This method does not explicitly select packages with best version and architecture, but instead requests installation of a package with higher version than the installed one and leaves the rest on the dependency solver. This method is always used for packages, and is optional for products and patterns. It is not applicable to patches.

include::{incdir}/option_legacy_no-confirm.txt[]

	Solver related options: :: {nop}
include::{incdir}/option_Solver_Flags_Common.txt[]
include::{incdir}/option_Solver_Flags_Recommends.txt[]

	Expert Options: :: Don't use them unless you know you need them.

include::{incdir}/option_Solver_Flags_Installs.txt[]

	This command also accepts the *Download-and-install mode options* described in the *install* command description.:: {nop}
--

*list-patches* (*lp*) [_options_]::
	List all applicable patches.
+
This command is similar to *zypper list-updates -t patch*.
+
Note that _optional arguments_ of some of the following options must be specified using *=* instead of a space.
+
--
	*-b*, *--bugzilla*[**=**__#__[,_..._]]::
		List applicable patches for all Bugzilla issues, or issues whose number matches the given string.

	*--cve*[**=**__#__[,_..._]]::
		List applicable patches for all CVE issues, or issues whose number matches the given string.

	*--date* _YYYY-MM-DD_[,_..._]::
		List only patches issued up to, but not including, the specified date.

	*-g*, *--category* _category_[,_..._]::
		List only patches with this category. See section *Package Types* for a list of commonly used _category_ values.

	*--severity* _severity_[,_..._]::
		List only patches with this severity. See section *Package Types* for a list of commonly used _severity_ values.

	*--issue*[**=**__string__[,_..._]]::
		Look for issues whose number, summary, or description matches the specified _string_. Issues found by number are displayed separately from those found by descriptions. In the latter case, use *zypper patch-info* _patchname_ to get information about issues the patch fixes.

	*-a*, *--all::
		By default, only patches that are applicable on your system are listed. This option causes all available released patches to be listed. This option can be combined with all the rest of the *list-updates* command options.

	*--with-optional*::
	*--without-optional*::
		Whether applicable optional patches should be treated as needed or be excluded. The default is to exclude optional patches.

	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.
--

*patch-check* (*pchk*)::
	Check for patches. Displays a count of applicable patches and how many of them have the security category.
+
See also the *EXIT CODES* section for details on exit status of *0*, *100*, and *101* returned by this command.
+
--
	*--updatestack-only*::
		Check only for patches which affect the package management itself.

	*--with-optional*::
	*--without-optional*::
		Whether applicable optional patches should be treated as needed or be excluded. The default is to exclude optional patches.

	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Check for patches only in the repository specified by the alias, name, number, or URI. This option can be used multiple times.
--

*patch* [_options_]::
	Install all available needed patches.
+
If there are patches that affect the package management itself, those will be installed first and you will be asked to run the *patch* command again.
+
This command is similar to *zypper update -t patch*.
+
--
	*--updatestack-only*::
		Install only patches which affect the package management itself and exit.

	*--with-update*::
		Additionally try to update all packages not covered by patches. This is basically the same as running *zypper update* afterwards.
+
The option is ignored, if the patch command must update the update stack first, thus it can not be combined with the *--updatestack-only* option.

	*--with-optional*::
	*--without-optional*::
		Whether applicable optional patches should be treated as needed or be excluded. The default is to exclude optional patches.

	*-b*, *--bugzilla* _#_[,_..._]::
		Install patch fixing a Bugzilla issue specified by number. Use *list-patches --bugzilla* command to get a list of applicable patches for specific issues.

	*--cve* _#_[,_..._]::
		Install patch fixing a MITRE's CVE issue specified by number. Use *list-patches --cve* command to get a list of applicable patches for specific issues.

	*--date* _YYYY-MM-DD_[,_..._]::
		Install only patches issued up to, but not including, the specified date.

	*-g*, *--category* _category_[,_..._]::
		Install only patches with this category. Use *list-patches --category* command to get a list of available patches with a specific category. See section *Package Types* for a list of commonly used _category_ values.

	*--severity* _severity_[,_..._]::
		Install only patches with this severity. Use *list-patches --severity* command to get a list of available patches with a specific severity. See section *Package Types* for a list of commonly used _severity_ values.

	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.

	*--skip-interactive*::
		This will skip interactive patches, that is, those that need reboot, contain a message, or update a package whose license needs to be confirmed.

	*--with-interactive*::
		Avoid skipping of interactive patches when in non-interactive mode.

	*-l*, *--auto-agree-with-licenses*::
		Automatically say _yes_ to third party license confirmation prompt. By using this option, you choose to agree with licenses of all third-party software this command will install. This option is particularly useful for administrators installing the same set of packages on multiple machines (by an automated process) and have the licenses confirmed before.

	*--auto-agree-with-product-licenses*::
		Automatically accept product licenses only. This is used by tools like SUSEconnect, which ask for confirmation before the product gets registered. So there's no need to confirm the product license again at install time.

	*--replacefiles*::
		Install the packages even if they replace files from other, already installed, packages. Default is to treat file conflicts as an error. *--download-as-needed* disables the fileconflict check because access to all packages filelists is needed in advance in order to perform the check.

	*-D*, *--dry-run*::
		Test the update, do not actually update. If used together with *--download-only* a meaningful file conflict check can be performed (see section *Package File Conflicts*).

	*--details*::
		Show the detailed installation summary.

include::{incdir}/option_legacy_no-confirm.txt[]

	Solver related options: :: {nop}
include::{incdir}/option_Solver_Flags_Common.txt[]
include::{incdir}/option_Solver_Flags_Recommends.txt[]

	Expert Options: :: Don't use them unless you know you need them.

include::{incdir}/option_Solver_Flags_Installs.txt[]

	This command also accepts the *Download-and-install mode options* described in the *install* command description.:: {nop}
--

*dist-upgrade* (*dup*) [_options_]::
	Perform a distribution upgrade. This command applies the state of (specified) repositories onto the system; upgrades (or even downgrades) installed packages to versions found in repositories, removes packages that are no longer in the repositories and pose a dependency problem for the upgrade, handles package splits and renames, etc.
+
If no repositories are specified via the *--from* option, zypper will do a global upgrade with all defined repositories. This global form of dup will also consider unchanged installed packages and re-evaluate their dependencies. This can be a problem if the system contains conflicting repositories, like repositories for two different distribution releases. This often happens if one forgets to remove an older release repository after adding a new one, say openSUSE 13.1 and openSUSE 13.2.
+
For all repositories which have the distribution version within their URL (like \https://download.opensuse.org/distribution/_13.1_/repo/oss) using the *$releasever* variable instead may be helpful (\https://download.opensuse.org/distribution/*$releasever*/repo/oss). The variable is per default substituted by the current distributions version (_13.1_).
+
This value can be temporarily overwritten in the current zypper command by using the *--releasever* global option. Calling **zypper --releasever 13.2**__...__ will cause these repos to use the new location (\https://download.opensuse.org/distribution/_13.2_/repo/oss) without the need to add/remove anything. But you'll need to use *--releasever 13.2* with every zypper command until the distribution upgrade was actually performed. Once the *dup* is done, *$releasever* will default to the new distribution version _13.2_ and *--releasever* is no longer needed.
+
It might be less tedious to persistently set *$releasever* to the target distribution value, so --releasever is not needed at all. See section *Repository Management* for more info about variable substitution and the definition of custom variables.
+
'Note:' Performing a distribution upgrade will automatically create a solver test case at /var/log/updateTestcase-YYYY-MM-DD-hh-mm-ss (the date and time the command was executed).
+
'Note:' distribution upgrades in openSUSE are currently only supported between consecutive releases. To upgrade multiple releases, upgrade each consecutive release one at a time. For more details see *http://en.opensuse.org/SDB:System_upgrade* and the _openSUSE release notes_ at *http://doc.opensuse.org/release-notes/*.
+
--
	*--from* _alias_|_name_|_#_|_URI_::
		The option can be used multiple times and restricts the upgrade to the specified repositories only. Nevertheless all enabled repositories are visible to the resolver and will be considered to satisfy dependency problems.

	-r, --repo alias|name|#|URI::
		Work only with the repository specified by the alias, name, number, or URI.
+
Using --repo is _discouraged_ as it currently hides unmentioned repositories from the resolver, leading to inexpertly decisions. This is because packages originally installed from the hidden repos will now be treated as _orphaned_ or _dropped_. They can be silently removed if involved in a dependency conflict. In the future --repo will become an alias for *--from*.

	*-l*, *--auto-agree-with-licenses*::
		Automatically say _yes_ to third party license confirmation prompt. By using this option, you choose to agree with licenses of all third-party software this command will install. This option is particularly useful for administrators installing the same set of packages on multiple machines (by an automated process) and have the licenses confirmed before.

	*--auto-agree-with-product-licenses*::
		Automatically accept product licenses only. This is used by tools like SUSEconnect, which ask for confirmation before the product gets registered. So there's no need to confirm the product license again at install time.

	*--replacefiles*::
		Install the packages even if they replace files from other, already installed, packages. Default is to treat file conflicts as an error. *--download-as-needed* disables the fileconflict check because access to all packages filelists is needed in advance in order to perform the check.

	*-D*, *--dry-run*::
		Test the upgrade, do not actually install or update any package. If used together with *--download-only* a meaningful file conflict check can be performed (see section *Package File Conflicts*).

include::{incdir}/option_legacy_no-confirm.txt[]

	*--details*::
		Show the detailed installation summary.

	Solver related options: :: {nop}
include::{incdir}/option_Solver_Flags_Common.txt[]
include::{incdir}/option_Solver_Flags_Recommends.txt[]

	Expert Options: :: Don't use them unless you know you need them.

include::{incdir}/option_Solver_Flags_Installs.txt[]

	This command also accepts the *Download-and-install mode options* described in the *install* command description.:: {nop}

	Examples: :: {nop}

		$ *zypper dup --from factory --from packman*:::
		Upgrade the system to the latest versions provided by the _factory_ and _packman_ repositories.
--


Query Commands
~~~~~~~~~~~~~~
*search* (*se*) [_options_] [_querystring_|_capability_]...::
	Search for packages matching any of the given search strings. *** and *?* _wildcard_ characters can be used within search strings. If the search string is enclosed in */*  (e.g. */^k.*e$/*) it's interpreted as a _regular expression_. See the *install* command for details about how to specify a _capability_.
+
Results of the search are printed in a table with columns **S**tatus, *Name*, *Summary* and *Type* of package.
+
In the detailed view (*se -s*) all available instances of matching packages are shown; each version in each repository on a separate line, with columns **S**tatus, *Name*, *Type*, *Version*, **Arch**itecture and *Repository*. For installed packages *Repository* shows either a repository that provides exactly the installed version of the package, or, if the exact version is not provided by any known repo, *(System Packages)* (or *@System*). Those installed packages not provided by any repo are often denoted as being _unwanted_, _orphaned_ or _dropped_.
+
The **S**tatus column can contain the following values: :::
+
*i+*:::: 	installed by user request
*i*::::	installed automatically (by the resolver, see section *Automatically installed packages*)
*v*::::	a different version is installed
_empty_::::	neither of the above cases
*!*::::	a patch in *needed* state
{nop} ::::	 {nop}
.*l*::::	is shown in the 2nd column if the item is locked (see section *Package Locks Management*)
.*R*::::	is shown in the 2nd column if the item has been retracted (see *patch* in section *Package Types*)

{nop}::
	The *v* status is only shown if the version or the repository matters (see *--details* or *--repo*), and the installed instance differs from the one listed in version or repository.
+
This command accepts the following options:
+
--
	*--match-substrings*::
		Matches for search strings may be partial words (default).

	*--match-words*::
		Matches for search strings may only be whole words.

	*-x*, *--match-exact*::
		Searches for an exact name of the package.

	*--provides*::
		Search for packages which provide the search strings.

	*--requires*::
		Search for packages which require the search strings.

	*--recommends*::
		Search for packages which recommend the search strings.

	*--suggests*::
		Search for packages which suggest the search strings.

	*--conflicts*::
		Search for packages conflicting with the search strings.

	*--obsoletes*::
		Search for packages which obsolete the search strings.

	*--supplements*::
		Search for packages which supplement the search strings.

	*--provides-pkg*::
		Search for all packages that provide any of the provides of the package(s) matched by the input parameters.

	*--requires-pkg*::
		Search for all packages that require any of the provides of the package(s) matched by the input parameters.

	*--recommends-pkg*::
		Search for all packages that recommend any of the provides of the package(s) matched by the input parameters.

	*--supplements-pkg*::
		Search for all packages that supplement any of the provides of the package(s) matched by the input parameters.

	*--conflicts-pkg*::
		Search for all packages that conflict with any of the package(s) matched by the input parameters.

	*--obsoletes-pkg*::
		Search for all packages that obsolete any of the package(s) matched by the input parameters.

	*--suggests-pkg*::
		Search for all packages that suggest any of the provides of the package(s) matched by the input parameters.

	*-n*, *--name*::
		Useful together with dependency options, otherwise searching in package name is default.

	*-f*, *--file-list*::
		Search in the file list of packages. Note that the full file list is available for installed packages only. For remote packages only an abstract of their file list is available within the metadata (files containing /etc/, /bin/, or /sbin/).

	*-d*, *--search-descriptions*::
		Search also in summaries and descriptions.

	*-C*, *--case-sensitive*::
		Perform case-sensitive search.

	*-i*, *--installed-only*::
		Show only installed packages.

	*-u*, *--not-installed-only*::
		Show only packages which are not installed.
+
The old option name --uninstalled-only is still acceptable, but should be considered deprecated.

	*-t*, *--type* _type_::
		Search only for packages of specified type. See section *Package Types* for a list of available package types. Multiple *--type* options are allowed.
+
See also the type-specific query commands like *packages*, *patterns*, etc.

	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.

	*--sort-by-name*::
		Sort packages by name (default).

	*--sort-by-repo*::
		Sort packages by repository, not by name.

	*-s*, *--details*::
		Show all available versions of matching packages, each version in each repository on a separate line.

	*-v*, *--verbose*::
		Like *--details* with additional information where the search has matched (useful when searching for dependencies, e.g. *--provides*).

	Examples: :: {nop}

		$ *zypper se \'yast+++*+++'*:::
		Search for YaST packages (quote the string to prevent the shell from expanding the wildcard).

		$ *zypper se -s --match-exact kernel-default*:::
		Show all available versions of package kernel-default

		$ *zypper se -dC --match-words RSI*:::
		Look for RSI acronym (case-sensitively), also in summaries and descriptions.
--

*packages* (*pa*) [_options_] [_repository_]...::
	List all available packages or all packages from specified repositories. Similar to *zypper search -s -t package*.
+
--
	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Just another means to specify repositories.

	*-i*, *--installed-only*::
		Show only installed packages.

	*-u*, *--not-installed-only*::
		Show only packages which are not installed.
+
The old option name --uninstalled-only is still acceptable, but should be considered deprecated.

	*--orphaned*::
		Show packages which are orphaned (without repository).

	*--suggested*::
		Show packages which are suggested.

	*--recommended*::
		Show packages which are recommended.

	*--unneeded*::
		Show packages which are unneeded.
--

*patches* (*pch*) [_options_] [_repository_]...::
	List all available patches from specified repositories, including those not needed. Short for *zypper lp -a*.
+
--
	*-r*, *--repo* _alias_|name_|_#_|_URI_::
		Just another means to specify repositories.
--

*patterns* (*pt*) [_options_] [_repository_]...::
	List all available patterns or all patterns from specified repositories. Similar to *zypper search -s -t pattern*.
+
--
	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Just another means to specify repositories.

	*-i*, *--installed-only*::
		Show only installed patterns.

	*-u*, *--not-installed-only*::
		Show only patterns which are not installed.
+
The old option name --uninstalled-only is still acceptable, but should be considered deprecated.
--

*products* (*pd*) [_options_] [_repository_]...::
	List all available products or all products from specified repositories. Similar to *zypper search -s -t product*, but shows also the type of the product (*base*, *add-on*).
+
--
	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Just another means to specify repositories.

	*-i*, *--installed-only*::
		Show only installed products.

	*-u*, *--not-installed-only*::
		Show only products which are not installed.
+
The old option name --uninstalled-only is still acceptable, but should be considered deprecated.

	*--xmlfwd* _tag_::
		XML output only: Literally forward the XML _tag_, if it is found in an installed products .prod-file (in */etc/products.d*).
+
Using this option, for each installed product an *<xmlfwd>* node will be created inside the *<product>* output node of the product.
+
Tag defines the name (or _/_-separated path) of a xml-tag inside an installed products .prod-file. If the tag is present inside the products .prod-file, the tag and it's content is literally forwarded into the products *<xmlfwd>* output node.
+
The option may be specified multiple times.

	Examples: :: {nop}

		$ *zypper -x pd --xmlfwd name --xmlfwd register/target*::: {nop}
--

*what-provides* (*wp*) _capability_::
	List all packages providing the specified capability (case-insensitive search). See also the *install* command for info about specifying _capabilities_.
+
--
	The command line is automatically transformed into the corresponding *search* command: :: {nop}

		$ *zypper what-provides \'zypper>1.6'*::: $ *zypper search --provides --match-exact \'zypper>1.6'*

		For a case-sensitive search call::: $ *zypper search --provides --match-exact --case-sensitive \'zypper>1.6'*
--


Repository Management
~~~~~~~~~~~~~~~~~~~~~
Zypper is able to work with YaST, RPM-MD (yum) software repositories, and plain directories containing .rpm files (no symlinks).

Repositories are primarily identified using their _URI_ or _alias_. Alias serves as a shorthand for the long URI or name of the repository. The _name_ of the repository should briefly describe the repository and is shown to the user in tables and messages. The name is not required, and if not known, the alias is shown instead. The alias is required and uniquely identifies the repository on the system.

The _alias_, _name_, _URI_, or the _number_ from *zypper repos* list can be used to specify a repository as an argument of various zypper commands and options like *refresh*, *--repo*, or *--from*.

Apart from the above, repositories have several other properties which can be set using the commands described in this section below, or by manually editing the repository definition files (*.repo* files, see section *FILES*).


Variable substitution:
~~~~~~~~~~~~~~~~~~~~~~
You can use the following variables within a *.repo* or *.service* files _name_ and _URI_ values:

	*$arch*:::
		Use this variable to refer to the system's CPU architecture.

	*$basearch*:::
		Use this variable to refer to the base architecture of the system. For example, iX86 machines have a base architecture of *i386*, while AMD64 and Intel64 have *x86_64*.

	*$releasever*:::
	*$releasever_major*:::
	*$releasever_minor*:::
		Use this variable to refer to the version of your openSUSE or SUSE Linux. The value is obtained from the _/product/version_ XML-node in */etc/products.d/baseproduct*.
+
This is useful for related repositories like packman (*\http://ftp.gwdg.de/pub/linux/packman/suse/$releasever*), which shall always fit the installed distribution, even after a distribution upgrade.
+
To help performing a distribution upgrade, the value of *$releasever* can be persistently set to a user defined value by creating a custom variable with that name (see below). This way you can easily switch all repositories using *$releasever* to the new version (provided the server layouts did not change and new repos are already available).
+
For a single zypper command the value of *$releasever* can be temporarily overwritten by using the *--releasever* global option.
+
In addition *$releasever_major* will be set to the leading portion up to (but not including) the 1st dot; *$releasever_minor* to the trailing portion after the 1st dot. If there's no dot in *$releasever*, *$releasever_major* is the same as *$releasever* and *$releasever_minor* is empty.

	*Custom Variables*:::
		A custom repository variable is defined by creating a file in */etc/zypp/vars.d*. The variable name equals the file name. The files first line (up to but not including the newline character) defines the variables value.  Valid variable(file) names consist of alphanumeric chars and underscore only.

	This is how you can set a custom variable, e.g. *$releasever* to a value of *99.0*: :::
		*echo "99.0" >/etc/zypp/vars.d/releasever*

	To remove the custom variable, simply delete its file in */etc/zypp/vars.d*: :::
		*rm /etc/zypp/vars.d/releasever*

	To check where you already use *$releasever* call: :::
		*zypper --releasever @--HERE--@ lr -u*

	Remember to protect the *$* when using these variables on a shell command line: :::
		zypper ar -f \http://ftp.gwdg.de/pub/linux/packman/suse/**\$**releasever packman

	If a variable is followed by an alphanumeric character or underscore it needs to be enclosed in *{}*: :::
		zypper ar -f \http://ftp.gwdg.de/pub/linux/packman/suse/**\${**__releasever__**}**_packman

	Bash style definition of default **${**__variable__**:-**__word__**}** and alternate **${**__variable__**:+**__word__**}** values: :::
		SLE-**${**__releasever_major__**}${**__releasever_minor__**:+**-SP-__$releasever_minor__**}**

	NOTE: :::
		Variable substitution within an URIs authority is limited to *host* and *port*. Bash style definition of default and alternate values is not supported. No variables can be used in an URIs *scheme*, *user* and *password*.


Supported URI formats:
~~~~~~~~~~~~~~~~~~~~~~
__scheme__**:**[**//**__user__[**:**__password__]*@*]__host__[**:**__port__]]**/**__path__[**?**__query__][**#**__fragment__]::
	Special characters occurring in URI components (like a \'**@**' in a password) must be %-encoded (\'*%40*').

CD or DVD drive::
	Optionally with _devices_ list for probing.

		* *cd:///* +
		**dvd:/subdir**__?devices=/dev/sr0,/dev/sr1__

FTP/HTTP/HTTPS directory tree::
	The ftp URL scheme supports absolute and relative paths to the default ftp server directory (RFC1738, Section 3.2.2). To use an absolute path, you have to prepend the path with an additional slash, what results in a */%2f* combination (second */* encoded to *%2f*) at the begin of the URL path. This is important, especially in user authenticated ftp, where the users home is usually the default directory of the server (except when the server chroots into the users home directory).
+
Explicit proxy settings may be passed via optional parameters _proxy_, _proxyport_, _proxyuser_ and _proxypass_.
+
HTTP authentication methods to use can be defined as comma separated list via optional parameter _auth_. Valid methods are e.g. _basic_, _digest_, _ntlm_, _negotiate_. Note, that this list depends on the list of methods supported by the curl library.
+
SSL verification behavior can be changed using the _ssl_verify_ option (this should be used with care). Valid values are *yes* (the secure default), *host*, *peer* or *no*. _Host_ just checks that the "Common Name" field or a "Subject Alternate Name" field in the servers certificate matches the host name in the URL. _Peer_ just verifies whether the certificate provided by the server is authentic against the chain of digital signatures found in ssl_capath. _No_ performs no checks at all. _Yes_ is the secure default, performing host and peer check.
+
For SSL client certificate authentication use the options _ssl_clientcert_ to define the path to the ssl client certificate and _ssl_clientkey_ to define the path to the SSL client key. Use _ssl_capath_ to change the directory holding the CA certificates (default is */etc/ssl/certs*).

		* *\ftp://user:pass@server/path/to/media/dir* +
		*\ftp://user:pass@server/%2fhome/user/path/to/media/dir* +
		*\http://user:pass@server/path* +
		**\https://user:pass@server/path**__?proxy=foo{amp}proxyuser=me{amp}proxypass=pw__ +
		**\https://server/path**__?ssl_clientcert=/entitlement/1234.pem{amp}ssl_clientkey=/entitlement/1234-key.pem__

Disk volume (partition)::
	Mandatory *device* parameter specifying the name of the block device to mount. The name of the optional _filesystem_ defaults to "auto".

		* **hd:/subdir?device=/dev/sda1**__{amp}filesystem=reiserfs__

Local directory tree::

		* *dir:/directory/name*

Media in an ISO image (loopback mounted)::
	Mandatory *iso* parameter specifying the name of the iso file. Optional _url_ parameter specifying the URL to the directory containing the iso file. Optional _mnt_ parameter specifying the preferred attach point for the source media url. Optional _filesystem_ name of the filesystem used in the iso file. Defaults to "auto".

		* **iso:/?iso=CD1.iso**__{amp}url=nfs://server/path/to/media__ +
		**iso:/?iso=CD1.iso**__{amp}url=hd:/?device=/dev/hda__ +
		**iso:/subdir?iso=DVD1.iso**__{amp}url=nfs://nfs-server/directory{amp}mnt=/nfs/attach/point{amp}filesystem=udf__

NFS exported directory tree::
	To use NFSv4 either use schema _tnfsv4://_ or pass an optional parameter _type=nfs4_. Additional _mountoptions_ can be passed as comma separated list. Defaults to "ro".

		* *nfs://nfs-server/exported/path* +
		**nfs://nfs-server/exported/path**__?mountoptions=ro{amp}type=nfs4__ +
		**nfs4://nfs-server/exported/path**__?mountoptions=ro__

CIFS/SMB directory tree::
	There is no difference between cifs and smb scheme (any more). In both cases the _cifs_ filesystem is used. Additional _mountoptions_ can be passed as comma separated list. Defaults to "ro,guest". Specify "noguest" to turn off "guest". This is necessary if Samba is configured to reject guest connections.
+
Optional _workgroup_ or _domain_ parameter set the name of the workgroup. As alternative to passing _username:password_ in the URI authority the parameters _user_ and _pass_ can be used.

		* *smb://servername/share/path/on/the/share* +
		**cifs://usern:passw@servername/share/path/on/the/share**__?mountoptions=ro,noguest__ +
		**cifs://usern:passw@servername/share/path/on/the/share**__?workgroup=mygroup__ +
		**cifs://servername/share/path/on/the/share**__?user=usern{amp}pass=passw__

OpenSUSE Build Build Service (OBS) repositories::
	Zypper also accepts special URIs identifying openSUSE Build Service (OBS) repositories in the *addrepo* command. These URIs have the form of **obs://**__project__**/**[_platform_], where _project_ is the name of the OBS project and _platform_ is the target platform (OS) for which the repository is intended.
+
If _platform_ is omitted, *openSUSE_$releasever* is used unless a value for *obs.platform* is defined in zypper.conf. If you are following *openSUSE_Factory* or *openSUSE_Tumbleweed* you may need to set these as your default platform. But we can only guess, how the directory containing the repository that fits your distribution is named on the server. In case of doubt you need to look up the right URL in a browser.

		* *obs://zypp:Head/* +
		*obs://zypp:Head/openSUSE_Factory* +
		*obs://zypp:Head/openSUSE_Factory_Staging_Gcc49_standard*


Commands:
~~~~~~~~~

*addrepo* (*ar*) [_options_] _URI_ _alias_:: {nop}
*addrepo* (*ar*) [_options_] _FILE_*.repo*::
	Add a new repository specified by URI and assign specified alias to it or specify URI to a .repo file.
+
Newly added repositories have auto-refresh disabled by default (except for repositories imported from a .repo, having the auto-refresh enabled). To enable auto-refresh use *addrepo -f*, or the *--refresh* option of the *modifyrepo* command.
+
Also, this command does not automatically refresh the newly added repositories. The repositories will get refreshed when used for the first time, or you can use the *refresh* command after finishing your modifications with **repo* commands.
+
--
	*-r*, *--repo* __file__**.repo**::
		Read URI and alias from specified .repo file

	*-c*, *--check*::
		Probe given URI.

	*-C*, *--no-check*::
		Don't probe URI, probe later during refresh.

	*-n*, *--name* _name_::
		Specify descriptive name for the repository.

	*-e*, *--enable*::
		Enable the repository (the default).

	*-d*, *--disable*::
		Add the repository as disabled. Repositories are added as enabled by default.

	*-f*, *--refresh*::
		Enable autorefresh of the repository. The autorefresh is disabled by default when adding new repositories.

	*-F*, *--no-refresh*::
		Disable auto-refresh for the repository.

	*-p*, *--priority* _positive-integer_::
		Set the priority of the repository. Priority of *1* is the highest, the higher the number the lower the priority. *-p 0* will set the priority back to the default (*99*). Packages from repositories with higher priority will be preferred even in case there is a higher installable version available in the repository with a lower priority.

	*-k*, *--keep-packages*::
		Enable RPM files caching for the repository.

	*-K*, *--no-keep-packages*::
		Disable RPM files caching.

include::{incdir}/option_GPG_Check.txt[]

	Examples: :: {nop}

		$ *zypper ar -c -n \'Packman 11.1 repo' \http://packman.iu-bremen.de/suse/11.1 packman*:::
		Add a HTTP repository, probe it, name it _Packman 11.1 repo_, and use _packman_ as alias.

		$ *zypper ar \https://download.opensuse.org/repositories/zypp:/svn/openSUSE_Factory/zypp:svn.repo*::: {nop}
		$ *zypper ar myreposbackup.repo*:::
		Add repositories from a .repo file.
--

*removerepo* (*rr*) [_options_] _alias_|_name_|_#_|_URI_...::
	Delete repositories specified by aliases, names, numbers, URIs or one of the aggregate options.
+
--
	*--loose-auth*::
		Ignore user authentication data in the URI

	*--loose-query*::
		Ignore query string in the URI

include::{incdir}/option_Repo_Aggregates.txt[]
--

*repos* (*lr*) [_options_] [_repo_]...::
	List all defined repositories or show detailed information about those specified as arguments
+
The following data can be printed for each repository found on the system: _#_ (repository number), _Alias_ (unique identifier), _Name_, _Enabled_ (whether the repository is enabled), _GPG Check_ (whether GPG check for repository metadata (*r*) and/or downloaded rpm packages (*p*) is enabled), _Refresh_ (whether auto-refresh is enabled for the repository), _Priority_, _Type_ (repository meta-data type: rpm-md, yast2, plaindir). Which of the data is shown is determined by command line options listed below and the main.repoListColumns setting from zypper.conf. By default, #, Alias, Name, Enabled, GPG Check and Refresh is shown.
+
Repository number is a unique identifier of the repository in current set of repositories. If you add, remove or change a repository, the numbers may change. Keep that in mind when using the numbers with the repository handling commands. On the other hand, using the alias instead of the number is always safe.
+
To show detailed information about specific repositories, specify them as arguments, either by alias, name, number from simple *zypper lr*, or by URI; e.g. fB *zypper lr factory*, or *zypper lr 2*.
+
--
	*-e*, *--export* __FILE__**.repo**|_-_::
		This option causes zypper to write repository definition of all defined repositories into a single file in repo file format. If *-* is specified instead of a file name, the repositories will be written to the standard output.

	*-a*, *--alias*::
		Add alias column to the output.

	*-n*, *--name*::
		Add name column to the output.

	*-u*, *--uri*::
		Add base URI column to the output.

	*-p*, *--priority*::
		Add repository priority column to the output.

	*-r*, *--refresh*::
		Add the autorefresh column to the output.

	*-d*, *--details*::
		Show more information like URI, priority, type, etc.

	*-E*, *--show-enabled-only*::
		Show enabled repositories only.

	*-U*, *--sort-by-uri*::
		Add base URI column and sort the list it.

	*-P*, *--sort-by-priority*::
		Add repository priority column and sort the list by it.

	*-A*, *--sort-by-alias*::
		Sort the list by alias.

	*-N*, *--sort-by-name*::
		Sort the list by name.

	Examples: :: {nop}

		$ *zypper repos -e myreposbackup.repo*:::
		Backup your repository setup:

		$ *zypper lr -pu*:::
		List repositories with their URIs and priorities:
--

*renamerepo* (*nr*) _alias_|_name_|_#_|_URI_ _new-alias_::
	Assign new alias to the repository specified by alias, name, number, or URI.
+
--
	Examples: :: {nop}

		$ *zypper nr 8 myrepo*:::
		Rename repository _number 8_ to *myrepo* (useful if the repo has some
		dreadful alias which is not usable on the command line).
--

*modifyrepo* (*mr*) _options_ _alias_|_name_|_#_|_URI_...:: {nop}
*modifyrepo* (*mr*) _options_ *--all*|*--remote*|*--local*|*--medium-type*::
	Modify properties of repositories specified by alias, name, number, or URI or one of the aggregate options.
+
--
	*-n*, *--name* _name_::
		Set a descriptive name for the repository.

	*-e*, *--enable*::
		Enable the repository.

	*-d*, *--disable*::
		Disable the repository.

	*-f*, *--refresh* (legacy: -r)::
		Enable auto-refresh for the repository.

	*-F*, *--no-refresh* (legacy: -R)::
		Disable auto-refresh for the repository.

	*-p*, *--priority* _positive-integer_::
		Set the priority of the repository. Priority of *1* is the highest, the higher the number the lower the priority. *-p 0* will set the priority back to the default (*99*). Packages from repositories with higher priority will be preferred even in case there is a higher installable version available in the repository with a lower priority.

	*-k*, *--keep-packages*::
		Enable RPM files caching.

	*-K*, *--no-keep-packages*::
		Disable RPM files caching.

include::{incdir}/option_GPG_Check.txt[]

include::{incdir}/option_Repo_Aggregates.txt[]

	Examples: :: {nop}

		$ *zypper mr -kt*:::
		Enable keeping of packages for all remote repositories.

		$ *zypper mr -er updates*:::
		Enable repository _updates_ and switch on autorefresh for the repo.

		$ *zypper mr -da*:::
		Disable all repositories.
--

*refresh* (*ref*) [_alias_|_name_|_#_|_URI_]...::
	Refresh repositories specified by their alias, name, number, or URI. If no repositories are specified, all enabled repositories will be refreshed.
+
--
	*-f*, *--force*::
		Force a complete refresh of specified repositories. This option will cause both the download of raw metadata and parsing of the metadata to be forced even if everything indicates a refresh is not needed.

	*-b*, *--force-build*::
		Force only reparsing of cached metadata and rebuilding of the database. Raw metadata download will not be forced.

	*-d*, *--force-download*::
		Force only download of current copy of repository metadata. Parsing and rebuild of the database will not be forced.

	*-B*, *--build-only*::
		Only parse the metadata and build the database, don't download raw metadata into the cache. This will enable you to repair damaged database from cached data without accessing network at all.

	*-D*, *--download-only*::
		Only download the raw metadata, don't parse it or build the database.

	*-s*, *--services*::
		Refresh also services before refreshing repositories.
--

*clean* (*cc*) [_options_] [_alias_|_name_|_#_|_URI_]...::
	Clean the local caches for all known or specified repositories. By default, only caches of downloaded packages are cleaned.
+
--
	*-m*, *--metadata*::
		Clean repository metadata cache instead of package cache.

	*-M*, *--raw-metadata*::
		Clean repository raw metadata cache instead of package cache.

	*-a*, *--all*::
		Clean both repository metadata and package caches.
--


Service Management
~~~~~~~~~~~~~~~~~~
The *services*, *addservice*, *removeservice*, *modifyservice*, and *refresh-services* commands serve for manipulating services. A service is specified by its URI and needs to have a unique alias defined (among both services and repositories).

Standalone repositories (not belonging to any service) are treated like services, too. The *ls* command will list them, *ms* command will modify them, etc. Repository specific options, like *--keep-packages* are not available here, though. You can use repository handling commands to manipulate them.

*addservice* (*as*) [_options_] _URI_ _alias_::
	Adds a service specified by *URI* to the system. The _alias_ must be unique and serves to identify the service.
+
Newly added services are not refreshed automatically. Use the *refresh-services* command to refresh them. Zypper does not access the service URI when adding the service, so the type of the services is unknown until it is refreshed.
+
--
	*-n*, *--name* _name_::
		Specify descriptive name for the service.

	*-e*, *--enable*::
		Enable the service (this is the default).

	*-d*, *--disable*::
		Add the service as disabled.

	*-f*, *--refresh*::
		Enable auto-refresh of the service.

	*-F*, *--no-refresh*::
		Disable auto-refresh of the service.

--

*removeservice* (*rs*) [_options_] _alias_|_name_|_#_|_URI_...::
	Remove specified service from the system. Removing a service will also remove of all of its repositories.
+
--
	*--loose-auth*::
		Ignore user authentication data in the URI.

	*--loose-query*::
		Ignore query string in the URI.
--

*modifyservice* (*ms*) _options_ _alias_|_name_|_#_|_URI_:: {nop}
*modifyservice* (*ms*) _options_ *--all*|*--remote*|*--local*|*--medium-type*::
	Modify properties of specified services.
+
--
	Common Options::
		These options are common to all types of services and repositories.

	*-n*, *--name* _name_::
		Set a descriptive name for the service.

	*-e*, *--enable*::
		Enable a disabled service.

	*-d*, *--disable*::
		Disable the service (but don't remove it).

	*-f*, *--refresh*  (legacy: -r)::
		Enable auto-refresh of the service.

	*-F*, *--no-refresh*  (legacy: -R)::
		Disable auto-refresh of the service.

	*-a*, *--all*::
		Apply changes to all services.

	*-l*, *--local*::
		Apply changes to all local services.

	*-t*, *--remote*::
		Apply changes to all remote services.

	*-m*, *--medium-type* _type_::
		Apply changes to services of specified type.

	RIS Service Specific Options::
		These options are ignored by services other than Repository Index Services.

	*-i*, *--ar-to-enable* _alias_::
		Schedule an RIS service repository to be enabled at next service refresh.

	*-I*, *--ar-to-disable* _alias_::
		Schedule an RIS service repository to be disabled at next service refresh.

	*-j*, *--rr-to-enable* _alias_::
		Remove a RIS service repository to enable.

	*-J*, *--rr-to-disable* _alias_::
		Remove a RIS service repository to disable.

	*-k*, *--cl-to-enable*::
		Clear the list of RIS repositories to enable.

	*-K*, *--cl-to-disable*::
		Clear the list of RIS repositories to disable.
--

*services* (*ls*) [_options_]::
	List services defined on the system.
+
--
	*-u*, *--uri*::
		Show also base URI of repositories.

	*-p*, *--priority*::
		Show also repository priority.

	*-d*, *--details*::
		Show more information like URI, priority, type.

	*-r*, *--with-repos*::
		Show also repositories belonging to the services.

	*-P*, *--sort-by-priority*::
		Sort the list by repository priority.

	*-E*, *--show-enabled-only*::
		Show enabled services only. If used together with *--with-repos* a disabled services owning (manually) enabled repositories are shown as well.

	*-U*, *--sort-by-uri*::
		Sort the list by URI.

	*-N*, *--sort-by-name*::
		Sort the list by name.
--

*refresh-services* (*refs*) [_options_] _alias_|_name_|_#_|_URI_...::
	Refreshing a service means executing the service's special task.
+
RIS services add, remove, or modify repositories on your system based on current content of the repository index. A differing enabled/disabled state caused by manually calling *modify-repo* on a service repository however will not be reverted unless the *--restore-status* option is used, or the repository index explicitly requests the change.
+
Services only manage defined repositories, they do not refresh them. To refresh also repositories, use *--with-repos* option or the *refresh* command.
+
--
	*-f*, *--force*::
		Force a complete refresh of specified services. This option will cause both the download of raw metadata and parsing of the metadata to be forced even if everything indicates a refresh is not needed.

	*-r*, *--with-repos*::
		Refresh also the service repositories.

	*-R*, *--restore-status*::
		Also restore service repositories enabled/disabled state to the repository index default. Useful after you manually changed some service repositories enabled state.
--


Package Locks Management
~~~~~~~~~~~~~~~~~~~~~~~~
Package locks serve the purpose of preventing changes to the set of installed packages on the system. The locks are stored in form of a _query_ in /etc/zypp/locks file (see also locks(5)). Packages matching this query are then forbidden to change their installed status; an installed package can't be removed or upgraded, not installed package can't be installed. When requesting to install, upgrade or remove such locked package, you will get a dependency problem dialog.

*locks* (*ll*)::
	List currently active package locks.
+
--
	*-m*, *--matches*::
		Show the number of resolvables matched by each lock. This option requires loading the repositories.

	*-s*, *--solvables*::
		 List the resolvables matched by each lock. This option requires loading the repositories.
--

*addlock* (*al*) [_options_] _package-name_...::
	Add a package lock. Specify packages to lock by exact name or by a glob pattern using *** and *?* wildcard characters.
+
--
	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Restrict the lock to the specified repository.

	*-t*, *--type* _type_::
		Lock only packages of specified type (default: package). See section *Package Types* for list of available package types.
--

*removelock* (*rl*) [_options_] _lock-number_|_package-name_...::
	Remove specified package lock. Specify the lock to remove by its number obtained with *zypper locks* or by the package name.
+
--
	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Restrict the lock to the specified repository.

	*-t*, *--type* _type_::
		Restrict the lock to packages of specified type (default: package). See section *Package Types* for list of available package types.
--

*cleanlocks* (*cl*)::
	Remove unused locks.
+
This command looks for locks that do not currently (with regard to repositories used) lock any package and for each such lock it asks user whether to remove it.


Locale Management
~~~~~~~~~~~~~~~~~
These commands give information about requested locales and the possibility to manage those. A locale is defined by a language code. For many packages there are locale dependent packages available which provide translations or dictionaries. To get these installed, the locale for the desired language must be marked as requested by the package manager library.

*locales* (*lloc*) [OPTIONS] [LOCALE] ...::
 List requested locales. Called without argument, lists the locales which are already marked as requested. Specifying certain locale(s) prints information only for this(these).
+
--
 *-a*, *--all*::
 List all available locales.

 *-p*, *--packages*::
 Show corresponding packages.
--

*addlocale* (*aloc*) [OPTIONS] <LOCALE> ...::
 Add specified locale(s) to the list of requested locales..
+
--
 *-n*, *--no-packages*::
 Do not install corresponding packages.
--

*removelocale* (*rloc*) [OPTIONS] <LOCALE> ...::
 Remove specified locale(s) from the list of requested locales..
+
--
 *-n*, *--no-packages*::
 Do not remove corresponding packages.
--

Examples: :: {nop}

	$ *zypper locales*:::
	List requested locales.

	$ *zypper locales --packages de en*:::
	Get the lists of packages which are available for _de_ and _en_ (exact match).

	$ *zypper locales en_*:::
	Get all locales with lang code _en_ that have their own country code, excluding the fallback _en_.

	$ *zypper locales en**:::
	Get all locales with lang code _en_ with or without country code.
	
	$ *zypper aloc --packages de_CH*:::
	Request *de_CH* and install language dependent packages.


Other Commands
~~~~~~~~~~~~~~
*versioncmp* (*vcmp*) _version1_ _version2_::
	Compare the versions supplied as arguments and tell whether version1 is older or newer than version2 or the two version strings match.
+
The default output is in human-friendly form. If *--terse* global option is used, the result is an integer number, negative/positive if version1 is older/newer than version2, zero if they match.
+
--
	*-m*, *--match*::
		Takes missing release number as any release.
+
For example:

			$ *zypper vcmp -m 0.15.3 0.15.3-2*:::
			0.15.3 _matches_ 0.15.3-2

			$ *zypper vcmp 0.15.3 0.15.3-2*:::
			0.15.3 _is older than_ 0.15.3-2
--

*targetos* (*tos*)::
	Shows the ID string of the target operating system. The string has a form of _distroname-architecture_. The string is determined by libzypp, the _distroname_ is read from (_current-rootdir_)*/etc/products.d/baseproduct* and the _architecture_ is determined from *uname* and _CPU flags_.

*licenses*::
	Prints a report about _licenses_ and __EULA__'s of installed packages to standard output.
+
First, a list of all packages and their licenses and/or EULAs is shown. This is followed by a summary, including the total number of installed packages, the number of installed packages with EULAs that required a confirmation from the user. Since the EULAs are not stored on the system and can only be read from repository metadata, the summary includes also the number of installed packages that have their counterpart in repositories. The report ends with a list of all licenses uses by the installed packages.
+
This command can be useful for companies redistributing a custom distribution (like appliances) to figure out what licenses they are bound by.

*download* [OPTIONS]::
	Download rpms specified on the commandline to a local directory.
+
Per default packages are downloaded to the libzypp package cache (*/var/cache/zypp/packages*; for non-root users *$XDG_CACHE_HOME/zypp/packages*), but this can be changed by using the global *--pkg-cache-dir* option.
+
Parsable XML-output produced by *zypper --xmlout* will include a *<download-result>* node for each package zypper tried to download. Upon success the location of the downloaded package is found in the *path* attribute of the *<localfile>* subnode (xpath: *download-result/localpath@path*):
+
.....
	<download-result>
	  <solvable>
	    <kind>package</kind>
	    <name>zypper</name>
	    <edition epoch="0" version="1.9.17" release="26.1"/>
	    <arch>x86_64</arch>
	    <repository name="repo-oss-update (13.1)" alias="openSUSE:repo-oss-update"/>
	  </solvable>
	  <localfile path="/var/cache/zypp/pac.../zypper-1.9.17-26.1.x86_64.rpm"/>
	</download-result>
.....
+
--
	*--all-matches*::
		Download all versions matching the commandline arguments. Otherwise only the best version of
	each matching package is downloaded.

	*--dry-run*::
		Don't download any package, just report what would be done.

	*-r*, *--repo* _alias_|_name_|_#_|_URI_::
		Work only with the repository specified by the alias, name, number or URI. This option can be used multiple times.

	*--from* _alias_|_name_|_#_|_URI_::
		Select packages from the specified repository only. This option can be used multiple times.
--

*source-download* [OPTIONS]::
	Download source rpms for all installed packages to a local directory.
+
--
	*-d*, *--directory* _dir_::
		Download all source rpms to this directory. Default is */var/cache/zypper/source-download*.

	*--delete*::
		Delete extraneous source rpms in the local directory. This is the default.

	*--no-delete*::
		Do not delete extraneous source rpms.

	*--status*::
		Don't download any source rpms, but show which source rpms are missing or extraneous.
--

*ps* [OPTIONS]::
	After each upgrade or removal of packages, there may be running processes on the system which continue to use meanwhile deleted files. *zypper ps* lists all processes using deleted files, together with the corresponding files, and a service name hint, in case it's a known service. This gives a hint which services may need to be restarted after an update. Usually programs which continue to use deleted shared libraries. The list contains the following information:
+
--
	*PID*:::		ID of the process
	*PPID*:::	ID of the parent process
	*UID*:::		ID of the user running the process
	*Login*:::	Login name of the user running the process
	*Command*:::	Command used to execute the process
	*Service*:::	Service name, if command is associated with a system service
	*Files*:::	The list of the deleted files
--
+
--
	*-s*, *--short*::
		Create a short table not showing the deleted files. Given twice, show only processes which are associated with a system service. Given three times, list the associated system service names only.

	*--print* _format_::
		For each associated system service print _format_ on the standard output, followed by a newline. Any *%s* directive in _format_ is replaced by the system service name.

	*-d*, *--debugFile* _filename_::
		Output a file with all proc entries that make it into the final set of used open files. This can be submitted as additional information in a bug report.

	Examples: :: {nop}

		$ *zypper ps -ss*:::
		Show only processes associated with a system service.

		$ *zypper ps -sss*:::
		Short for *zypper ps --print "%s"*; list services which might need a restart.

		$ *zypper ps --print "systemctl status %s"*:::
		Let zypper print the commands to retrieve status information for services which might need a restart.
--

*needs-rebooting* ::
	Checks if the reboot-needed flag was set by a previous update or install of a core library or service.
+
The reboot-needed flag is set if a package that provides *installhint(reboot-needed)* is updated or installed. Additionally there is a predefined list (/etc/zypp/needreboot) of well-known packages which cause the reboot-needed flag being set unconditionally. Exit code ZYPPER_EXIT_INF_REBOOT_NEEDED indicates that a reboot is needed, otherwise the exit code is set to ZYPPER_EXIT_OK.

Subcommands
~~~~~~~~~~~
*subcommand*::
	Lists available subcommands in */usr/lib/zypper/commands* and from elsewhere on your *$PATH*. See section *SUBCOMMANDS* for details.


GLOBAL OPTIONS
--------------

*-h*, *--help*::
	Help. If a _command_ is specified together with *--help* option, command specific help is displayed.

*-V*, *--version*::
	Print zypper version number and exit.

*-c*, *--config* _file_::
	Use the specified zypper config file instead of the default *zypper.conf*. Other command line options specified together with *--config* and having their counterpart in the zypper config file are still preferred.
+
The order of preference with *--config* is as follows:
+
--
	. Command line options
	. *--config* _file_
	. [*/etc/zypp/zypp.conf*] (system-wide defaults for all libzypp based applications)
--
+
NOTE: Use and location of the system-wide */etc/zypp/zypp.conf* can not be changed this way. It's mentioned here just because some zypper command line options allow one to overwrite system-wide defaults defined in *zypp.conf*.
+
See also *FILES* section for more information.

*-v*, *--verbose*::
	Increase verbosity. For debugging output specify this option twice.

*-q*, *--quiet*::
	Suppress normal output. Brief (esp. result notification) messages and error messages will still be printed, though. If used together with conflicting *--verbose* option, the *--verbose* option takes preference.

*--color*::
*--no-color*::
	Whether to use colors in output if tty supports it. For details see the *[color]* section in *zypper.conf*.

*-A*, *--no-abbrev*::
	Do not abbreviate text in tables. By default zypper will try to abbreviate texts in some columns so that the table fits the width of the screen. If you need to see the whole text, use this option.

*-t*, *--terse*::
	Terse output for machine consumption. Implies *--no-abbrev* and *--no-color*.

*-s*, *--table-style* _integer_::
	Choose among different predefined line drawing character sets to use when drawing a table. The table style is identified by an integer number. Style *0* is the default, styles *1*-*9* use combinations of different box drawing characters whose shape may depend on the font the terminal is using. Style *10* separates columns by a colon and style *11* draws no lines at all.

*-n*, *--non-interactive*::
	Switches to non-interactive mode. In this mode zypper doesn't ask user to type answers to various prompts, but uses default answers automatically. Those default answers also depend on other options like *--no-gpg-checks* or *--ignore-unknown*.

*--non-interactive-include-reboot-patches*::
	In non-interactive mode do not skip patches which have the rebootSuggested-flag set. Otherwise these patches are considered to be interactive, like patches including a licenses or some message to confirm. NOTE: This option does not turn on non-interactive mode.

*-x*, *--xmlout*::
	Switches to XML output. This option is useful for scripts or graphical frontends using zypper.

*-i*, *--ignore-unknown*::
	Ignore unknown packages. This option is useful for scripts, because when installing in *--non-interactive* mode zypper expects each command line argument to match at least one known package. Unknown names or globbing expressions with no match are treated as an error unless this option is used.

*-D*, *--reposd-dir* _dir_::
	Use the specified directory to look for the repository definition (*.repo*) files. The default value is */etc/zypp/repos.d*.

*-C*, *--cache-dir* _dir_::
	Use an alternative root directory for all caches. The default value is */var/cache/zypp*.

*--raw-cache-dir* _dir_::
	Use the specified directory for storing raw copies of repository metadata files. The default value is */var/cache/zypp/raw*.

*--solv-cache-dir* _dir_::
	Use the specified directory to store the repository metadata cache database files (solv files). The default value is */var/cache/zypp/solv*.

*--pkg-cache-dir* _dir_::
	Use the specified directory for storing rpm packages downloaded from repositories (see *addrepo --keep-packages*). The default value is */var/cache/zypp/packages*.
+ Packages are stored in subdirectories named after the repositories alias and using the same path as on the repositories medium.

*--userdata* _string_::
	User data is expected to be a simple string without special chars or embedded newlines and may serve as transaction id. It will be written to all install history log entries created throughout this specific zypper call. It will also be passed on to zypp plugins executed during commit. This will enable e.g. a btrfs plugin to tag created snapshots with this string. For zypper itself this string has no special meaning.

Repository Options: :: {nop}

*--no-gpg-checks*::
	Ignore GPG check failures and continue. If a GPG issue occurs when using this option zypper prints and logs a warning and automatically continues without interrupting the operation. Use this option with caution, as you can easily overlook security problems by using it. (see section *GPG checks*)

*--gpg-auto-import-keys*::
	If new repository signing key is found, do not ask what to do; trust and import it automatically. This option causes that the new key is imported also in non-interactive mode, where it would otherwise got rejected.

*-p*, *--plus-repo* _URI_::
	Use an additional repository for this operation. The repository aliased tmp# and named by the specified URI will be added for this operation and removed at the end. You can specify this option multiple times.

*--plus-content* _tag_::
	Additionally use disabled repositories denoted by _tag_ for this operation. If _tag_ matches a repositories _alias_, _name_ or _URL_, or is a _keyword_ defined in the repositories metadata, the repository will be temporarily enabled for this operation. The repository will then be refreshed and used according to the commands rules. You can specify this option multiple times.
+
If a disabled repositories metadata are not available in the local cache, they will be downloaded to scan for matching keywords. Otherwise the keyword scan will use the metadata available in the local cache. Only if used together with the *refresh* command, a keyword scan will refresh _all_ disabled repositories.

	To refresh all disabled repositories metadata: :::
		*zypper --plus-content '' ref*
	To include a disabled repository _repo-debug_ in a search: :::
		*zypper --plus-content repo-debug search* _..._
	To search only in a disabled repository _repo-debug_: :::
		*zypper --plus-content repo-debug search -r repo-debug* _..._
	To enable all repos providing the _debug_ keyword: :::
		*zypper in --plus-content debug* _some -debuginfo or -debugsource package_

*--disable-repositories*::
	Do not read metadata from repositories. This option will prevent loading of packages from repositories, thus making zypper work only with the installed packages (if *--disable-system-resolvables* was not specified).

*--no-refresh*::
	Do not auto-refresh repositories (ignore the auto-refresh setting). Useful to save time when doing operations like search, if there is not a need to have a completely up to date metadata.

*--no-cd*::
	Ignore CD/DVD repositories. When this option is specified, zypper acts as if the CD/DVD repositories were not defined at all.

*--no-remote*::
	Ignore remote repositories like http, ftp, smb and similar. This makes using zypper easier when being offline. When this option is specified, zypper acts as if the remote repositories were not defined at all.

*--releasever* _version_::
	For the current command set the value of the *$releasever* repository variable to _version_. This can be used to switch to new distribution repositories when performing a distribution upgrade. See the *dist-upgrade* (*dup*) command and section *Repository Management* for more details about using the *$releasever* repository variable.

	To check where you already use *$releasever* call: :::
		*zypper --releasever @--HERE--@ lr -u*

Target Options: :: {nop}

*-R*, *--root* _dir_::
	Operates on a different root directory. This option influences the location of the repos.d directory and the metadata cache directory and also causes rpm to be run with the *--root* option to do the actual installation or removal of packages. See also the *FILES* section.
	
*--installroot* _dir_::
	Behaves like *--root* but shares the repositories with the host system.

*--disable-system-resolvables*::
	This option serves mainly for testing purposes. It will cause zypper to act as if there were no packages installed in the system. Use with caution as you can damage your system using this option.


SUBCOMMANDS
-----------
Zypper subcommands are inspired by *git*(1). Subcommands are standalone executables that live in the zypper_execdir (*/usr/lib/zypper/commands*). For subcommands zypper provides a wrapper that knows where the subcommands live, and runs them by passing command options and arguments to them.  If a subcommand is not found in the zypper_execdir, the wrapper will look in the rest of your *$PATH* for it. Thus, it’s possible to write local zypper extensions that don’t live in system space.

This is how to add your own subcommand *zypper* _mytask_:

- The executable must be named **zypper-**__mytask__.

- The executable must be located your *$PATH*.

- A manpage for **zypper-**__mytask__ should be provided and explaining the commands options and return values. It will be shown when calling *zypper help* _mytask_.

- Zypper built-in commands take precedence over subcommands with the same name.

- It's fine to call zypper or use libzypp from within your subcommand.

You can use the built-in *zypper subcommand* command to get a list of all subcommands in zypper_execdir and from elsewhere on your $PATH.

Using zypper _global-options_ together with subcommands, as well as executing subcommands in *zypper shell* is currently not supported.


FILES
-----
*/etc/zypp/zypper.conf*, *$HOME/.zypper.conf*::
	Global (system-wide) and user's configuration file for _zypper_. These files are read when zypper starts up and *--config* option is not used.
+
User's settings are preferred over global settings. Similarly, command line options override the settings in either of these files. To sum it up, the order of preference is as follows (from highest to lowest):
+
--
	. _Command line options_
	. *$HOME/.zypper.conf*
	. */etc/zypp/zypper.conf*
	. [*/etc/zypp/zypp.conf*] (system-wide defaults for all libzypp based applications)
--
+
See the comments in */etc/zypp/zypper.conf* for a list and description of available options.
+
NOTE: The system-wide */etc/zypp/zypp.conf* is mentioned here just because some zypper command line options allow one to overwrite system-wide defaults defined there. *zypp.conf* and *zypper.conf* have different content and serve different purpose.

*/etc/zypp/zypp.conf*::
	ZYpp configuration file affecting all libzypp based applications. See the comments in the file for description of configurable properties. Many locations of files and directories listed in this section are configurable via zypp.conf. The location for this file itself can be redefined only by setting *$ZYPP_CONF* in the environment.

*/etc/zypp/locks*::
	File with package lock definitions, see _locks(5)_ manual page for details. The package lock commands (*addlock*, *removelock*, etc.) can be used to manipulate this file.
+
This file is used by all ZYpp-based applications.

*/etc/zypp/repos.d*::
	Directory containing repository definition (_\*.repo_) files. You can use the Repository Management commands to manipulate these files, or you can edit them yourself. In either case, after doing the modifications, executing *zypper refresh* is strongly recommended.
+
You can use the *--reposd-dir* global option to use an alternative directory for this purpose or the *--root* option to make this directory relative to the specified root directory.
+
This directory is used by all ZYpp-based applications.

*/etc/zypp/services.d*::
	Directory containing service definition (_\*.service_) files. You can use the Service Management Commands to manipulate these files, or you can edit them yourself. Running *zypper refs* is recommended after modifications have been done.
+
This directory is used by all ZYpp-based applications.

*/usr/lib/zypper/commands*::
	System directory containing zypper extensions (see section *SUBCOMMANDS*)

*/var/cache/zypp/raw*::
	Directory for storing raw metadata contained in repositories. Use the *--raw-cache-dir* global option to use an alternative directory for this purpose or the *--root* option to make this directory relative to the specified root directory.
+
This directory is used by all ZYpp-based applications.

*/var/cache/zypp/solv*::
	Directory containing preparsed metadata in form of _solv_ files.
+
This directory is used by all ZYpp-based applications.

*/var/cache/zypp/packages*::
	If *keeppackages* property is set for a repository (see the *modifyrepo* command), all the RPM file downloaded during installation will be kept here. See also the *clean* command for cleaning these cache directories.
+
This directory is used by all ZYpp-based applications.

*/var/log/zypper.log*::
	Zypper log file. It should be attached to all bugreports. (see also zypper-log(8)).

*/var/log/zypper.solverTestCase*::
	Solver testcase created by using the *--debug-solver* option.

*/var/log/updateTestcase-YYYY-MM-DD-hh-mm-ss*::
	Solver testcase auto created when performing a *zypper dup*.

*/var/log/zypp/history*::
	Installation history log.

*~/.zypper_history*::
	Command history for the zypper shell (see the *shell* command).

*/etc/zypp/needreboot*::
	File with a list of packages that will set the reboot-needed flag when installed or upgraded.

*/etc/zypp/needreboot.d*::
	Directory that can be used to define packages that trigger the reboot-needed flag by adding additional files containing the required package names.

EXIT CODES
----------
There are several exit codes defined for zypper built-in commands for use e.g. within scripts. These codes are defined in header file src/zypper-main.h found in zypper source package. Codes below 100 denote an error, codes above 100 provide a specific information, 0 represents a normal successful run. Following is a list of these codes with descriptions:

*0* - *ZYPPER_EXIT_OK*::
	Successful run of zypper with no special info.
*1* - *ZYPPER_EXIT_ERR_BUG*::
	Unexpected situation occurred, probably caused by a bug.
*2* - *ZYPPER_EXIT_ERR_SYNTAX*::
	zypper was invoked with an invalid command or option, or a bad syntax.
*3* - *ZYPPER_EXIT_ERR_INVALID_ARGS*::
	Some of provided arguments were invalid. E.g. an invalid URI was provided to the *addrepo* command.
*4* - *ZYPPER_EXIT_ERR_ZYPP*::
	A problem is reported by ZYPP library.
*5* - *ZYPPER_EXIT_ERR_PRIVILEGES*::
	User invoking zypper has insufficient privileges for specified operation.
*6* - *ZYPPER_EXIT_NO_REPOS*::
	No repositories are defined.
*7* - *ZYPPER_EXIT_ZYPP_LOCKED*::
	The ZYPP library is locked, e.g. packagekit is running.
*8* - *ZYPPER_EXIT_ERR_COMMIT*::
	An error occurred during installation or removal of packages. You may run *zypper verify* to repair any dependency problems.
*100* - *ZYPPER_EXIT_INF_UPDATE_NEEDED*::
	Returned by the patch-check command if there are patches available for installation.
*101* - *ZYPPER_EXIT_INF_SEC_UPDATE_NEEDED*::
	Returned by the patch-check command if there are security patches available for installation.
*102* - *ZYPPER_EXIT_INF_REBOOT_NEEDED*::
	Returned after a successful installation of a patch which requires reboot of computer.
*103* - *ZYPPER_EXIT_INF_RESTART_NEEDED*::
	Returned after a successful installation of a patch which requires restart of the package manager itself. This means that one of patches to be installed affects the package manager itself and the command used (e.g. *zypper update*) needs to be executed once again to install any remaining patches.
*104* - *ZYPPER_EXIT_INF_CAP_NOT_FOUND*::
	Returned by the *install* and the *remove* command in case any of the arguments does not match any of the available (or installed) package names or other capabilities.
*105* - *ZYPPER_EXIT_ON_SIGNAL*::
	Returned upon exiting after receiving a SIGINT or SIGTERM.
*106* - *ZYPPER_EXIT_INF_REPOS_SKIPPED*::
	Some repository had to be disabled temporarily because it failed to refresh. You should check your repository configuration (e.g. *zypper ref -f*).
*107* - *ZYPPER_EXIT_INF_RPM_SCRIPT_FAILED*::
	Installation basically succeeded, but some of the packages %post install scripts returned an error. These packages were successfully unpacked to disk and are registered in the rpm database, but due to the failed install script they may not work as expected. The failed scripts output might reveal what actually went wrong. Any scripts output is also logged to */var/log/zypp/history*.


Zypper subcommands (see section *SUBCOMMANDS*) may return *different codes* which should be described in the commands man page. Call *zypper help* _subcommand_ to see the subcommands man page if one is provided.


HOMEPAGE
--------
https://github.com/openSUSE/zypper


AUTHORS
-------
The zypper project was started by Martin Vidner, Jan Kupec, Michael Andres, Duncan Mac-Vicar Prett, Josef Reidinger and Stanislav Visnovsky. Many people have later contributed to it.


SEE ALSO
--------
locks(5), zypper-log(8), YaST2(8)