Zypper - openSUSE's command line software manager
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Alternative Title |
| |
Title of Series | ||
Number of Parts | 70 | |
Author | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/39546 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSDEM 200911 / 70
3
4
6
16
17
18
19
20
21
22
23
24
25
26
27
29
30
31
32
33
35
40
41
44
46
47
48
50
51
54
55
57
58
59
60
62
65
67
68
69
70
00:00
SoftwareGame theorySoftwareSoftware engineeringLibrary (computing)Digital rights managementData conversionComputer animationLecture/Conference
00:40
Multiplication signPlanningFrame problemElectronic mailing listLecture/Conference
01:31
SoftwareInterface (computing)CodeHill differential equationExecution unitSoftwareLatent heatRevision controlElectronic mailing listPatch (Unix)Installation artRepository (publishing)PlanningOrder (biology)INTEGRALCache (computing)Kernel (computing)Software engineeringMorley's categoricity theoremSoftware maintenanceStability theoryType theoryExterior algebraOcean currentPhysical systemMetadataDescriptive statisticsMathematicsService (economics)Interface (computing)Heegaard splittingCodeInformationLetterpress printingDirectory serviceProjective planeLibrary (computing)Digital rights managementConfiguration spaceDistribution (mathematics)AlgorithmComputer fileWeb pageWordLine (geometry)Flow separationRootOnline helpTask (computing)Query languageOpen setBootingGradientCategory of beingText editorMetropolitan area networkStaff (military)Pattern languageComputerStapeldateiSpacetimeObject (grammar)Lecture/Conference
07:45
Installation artBootingComputer iconGamma functionDigital rights managementHand fanPattern languageInheritance (object-oriented programming)Software repositoryRepository (publishing)CASE <Informatik>Bookmark (World Wide Web)Multiplication signStandard deviationInstallation artType theoryConnected spaceInternetworkingTraffic reportingUniform resource locatorBitOpen sourceGrand Unified TheoryComputerDistribution (mathematics)Remote procedure callLibrary (computing)Form (programming)Device driverNational Institute of Standards and TechnologyWebcamScripting languageFormal languageMetadataLatent heatDefault (computer science)SoftwareParameter (computer programming)Object (grammar)Computer filePhysical systemHypermediaPatch (Unix)File Transfer ProtocolComputer architectureStructural loadRevision controlDigital rights management1 (number)Product (business)Source codeSet (mathematics)SummierbarkeitSymbol tableBackupServer (computing)Web 2.0Software design patternGraphics processing unitInternet service providerAsynchronous Transfer ModeSoftware engineeringLocal ringCache (computing)Lecture/Conference
15:08
Scripting languageTerm (mathematics)Function (mathematics)Directory serviceRootInstallation artPhysical systemHypermediaDynamic random-access memoryExecution unitMIDIDefault (computer science)HypermediaPhysical systemBuildingRepository (publishing)Shape (magazine)Task (computing)Shared memoryElectronic mailing listKey (cryptography)Service (economics)Order (biology)Device driverDirectory serviceRootError messageDependent and independent variablesExterior algebraFile Transfer ProtocolHard disk driveComputer fileArithmetic meanIntegrated development environmentState of matteroutputSoftware repositoryStandard deviationCache (computing)Message passingMedical imagingType theoryInformationDebuggerEndliche ModelltheorieInstallation artSlide ruleDatabaseLevel (video gaming)Internet service providerProduct (business)Musical ensembleBitNormal (geometry)Semiconductor memoryRule of inferenceComputer architectureMathematicsSoftwareReal numberSoftware testingUniform resource locatorFunction (mathematics)Asynchronous Transfer ModeScripting languageLecture/Conference
22:28
InformationWeb pagePlanningWordInheritance (object-oriented programming)CuboidEmailLatent heatRevision controlConfiguration spaceMathematicsSoftware engineeringRepository (publishing)Projective planeLibrary (computing)Execution unitFunction (mathematics)Logic gateDataflowElectronic mailing listSoftwareLink (knot theory)View (database)Arithmetic progressionPatch (Unix)Computer fileLevel (video gaming)Query languageInformationOcean current1 (number)Inclusion mapNumberDatabaseHome pageOpen setMultiplication signDefault (computer science)WikiArc (geometry)Software repositoryVolumenvisualisierungBlogSoftware bugAbsolute valueLecture/Conference
Transcript: English(auto-generated)
00:17
So hi and welcome.
00:21
My name is Jan Kupets. I am a member of SUSE's YaaS team, and I mostly work on software management, on the software management library libzip, and the command line tool zipper. zipper is what I will be talking about now, and the talk will consist of a quick overview
00:46
of all zipper's commands. Well before that, I would like to ask you how many of you didn't use zipper at all so far? Okay, not many, okay thanks.
01:03
So, a quick overview at the start. Most of the talk I will dedicate to give you some tips and tricks that you may find useful, and maybe you don't know about them yet. And I will conclude with a list of some most interesting future plans that we plan
01:24
to do in the timeframe of 11.2 release of OpenSUSE. So let's start with the features. First what is zipper? For those who don't know it, it's a command line software manager.
01:41
I like taking screenshots of command line software, so I've made this beautiful one for you. It's showing zipper searching for keyword eclipse. It is an interface to libzips, the software management library, which does all the package
02:01
management and all the software management stuff, and zipper is just a command line interface to it, but nevertheless it is several thousands of lines long, so even the interface is quite a lot of work. A few words about history. Zipper is two and a half years old.
02:24
It started in August 2006 when Duncan McWickard started to write his own command line tool to test the libzip library. A few weeks later, Martin Wigner took the code and named the project Zipper.
02:42
A few months later, at the end of 2006, Zipper was first released in an OpenSUSE 10.2 distribution. Current stable release is in OpenSUSE 11.1, and it's version 1.0, and development releases
03:01
are version 1.1. So to the features. We can categorize Zipper's commands into several categories, most obviously when you are managing software on your system you want to manipulate software repositories,
03:21
you want to query for package information, you want to install obviously, you want to manage updates and several special tasks. So when managing repositories you want to be able to add them, of course you can edit the text configuration files in etc, zip, repository, but with the command line tool
03:46
it's just more convenient. You can add them, remove them, list them, modify them, refresh, which means downloading package metadata from the repositories and compiling them into internal cache for quick access.
04:05
This service stuff I will mention later, so I'll just keep it now. Querying, you can search for packages by their names, description summaries and so on. You can print detailed info about packages, patterns, patches and so on.
04:23
You can list all patterns, all packages, all patches that are available. You can query for dependency information, in fact this is the only command now but I'll tell about future plans.
04:40
The main thing you want to do is install, there is an install command about this install new recommends command I'll tell later. You want to manage updates, we have three approaches to update software on OpenSUSE. The first one, listing updates and updating is package-wise where you just take newer versions
05:07
of packages that are installed and if they are installable then you just install them, the new versions. Another approach is patch-wise.
05:23
This is a specialty, mostly OpenSUSE maintenance updates are delivered as patches. You have to have a special repository providing patches in order to use this feature.
05:40
Distribution upgrade is a special update algorithm that can handle split packages, obsolete packages and stuff like that. You usually use it to switch to newer stable release.
06:01
Then you can protect packages to avoid changes like don't install specific package, don't remove specific package, don't upgrade it and so on. For example, you can avoid updating kernel for example.
06:23
And then some special commands, most interesting of these is this verify command. This will check the integrity of dependencies of your installed packages and if there are some broken dependencies it proposes to install packages in order to satisfy them.
06:43
Zipper has quite a nice help system. If you just type zipper it will list all the global options and commands that are available to it. And if you type zipper help and specific command you will get specific command description
07:01
and all the command specific options that are available for the command. Also, the main page is quite extensive. To the general features, I will talk in detail later about them, just to name them now.
07:20
Zipper has non-interactive mode, XML output, it can work on an alternative root directory and this feature is actually shared with Yast as well because it's a libzip feature, not zip feature, but it's quite interesting so I wanted to mention it now.
07:40
Zipper can work with many medium types. I'll talk more details later. So now, to the fun. The basic things that you want to do with Zipper is install software. The easiest way is to type zipper install and the name of a package.
08:00
If you don't care about which version it will install from which repository and so on. But these are some special cases. One of my favorites is that you can install a plain RPM file with Zipper, either local or remote or on any media type that libzip supports later on that.
08:26
You can also install a specific version. Most software managers can do that. I just wanted to show you how you do it in Zipper. You can install specific architecture as well.
08:44
If you, for example, are compiling some source code and it is complaining about some missing library, you can try issuing a command like this. And if the package metadata contains provide symbols with, for example, libcurl shared object,
09:05
if you are lucky, you can get this library installed just with this command. One of the nice things are software patterns.
09:22
You can install, for example, a lamp server with just this command. First you can search for patterns. Just give the type option to the search command. It will list all the patterns available and then you can install it with the same type option
09:41
and the name of the pattern. The same for products and patches and packages as well, but package is the default here. This is one of my other favorite features of Zipper. You can install source packages and their build dependencies.
10:02
This is very handy for developers. Just search for source packages in your repository, like with the pattern case. If the repository contains source packages, it will list them and you use the package name in the source install command.
10:23
It will install the source package and all of its build dependencies, which are not installed yet. There is also an option to install only the build dependencies or only the source package. This install new recommends command is a special feature of Lipsat solver,
10:47
of the underlying solver, and it is handy for installing, for example, hardware drivers or language packages for already installed packages.
11:02
For example, if you plug in a web camera, there is a good chance that this command will install the needed driver for the camera. Or if you have a graphics card and you add a repository providing the driver for the graphics card,
11:24
it will propose to install this driver. For managing repositories, Zipper has quite a lot of options to make this convenient for you.
11:42
For example, you can modify several repos at once with these aggregate options all remote. You can modify repositories of specific media type and so on. For example, this command turns off automatic refresh for all repositories.
12:01
This command turns on caching of RPM packages for all remote repositories like HTTP, FTP, Samba and so on. You can backup and restore repositories.
12:22
You can export all your repos from the system with this command option onto the repos command. And then you can restore them with add-repo and giving the repo file as argument, or you can restore them on your new computer and so on. With each command, you can use a temporary additional repository
12:45
without having to add the repo permanently to your system. Just give the plus repo and repo URL. Then, for many commands, there is this repo option available,
13:05
which makes Zipper only load the specified repositories and work with them. For example, to do a distribution upgrade with only main OpenSUSE repository and, for example, Pacman repository. You can specify these two repositories just like this
13:23
and perform the distribution upgrade. This one is handy if you don't have internet connection and you have many repositories with auto-refresh turned off. In that case, Zipper would check the repository.
13:43
If it's up to date, it would need connection for that. You can use this command to avoid that, avoid Zipper connecting at all. It can be handy. I should mention repository priorities here.
14:00
Actually, I screwed that up a bit. libzip supports them, but Zipper ignores them now. I'll be fixing it for the next release. It's a very handy thing. You can assign priorities to repositories and, for example, the install command if you install a specific package
14:21
and even if there exists a better version in a repository which has lower priority, it will take the older version from the repository with the higher priority. This can be handy if you have several reports providing the same packages
14:42
and you trust one of the reports more, for example, for having more stable packages and so on. One of the nice things of Zipper is that you can use it from scripts and from Dents.
15:02
There are several things enabling this. For example, the non-interactive mode in which you can specify this global option to any command and in that mode Zipper won't ask for confirmation or for any user input on standard input and it will use default answers automatically.
15:28
This option can be useful if you are working, for example, with your own repositories and you want to avoid questions or prompts like whether you want to import new repository key to the database
15:43
and RPM file checks and so on. Then there are four verbosity levels. Quiet is obviously the one which you want to use when scripting. Normal is for common use out of scripts and from Dents
16:10
and verbose is for debugging, obviously. Then there is XML output for general output like normal messages, error messages, warnings and so on
16:21
and also for prompts and some special output. All of this you can use in various, for example, graphical from Dents. You can tell Zipper to use alternative root directory.
16:43
This can be handy for creating a change root environment or for building your own appliance. Actually, Kiwi at least was using it in order to do this. I'm not sure if it still does.
17:03
Just product creator as well. It can be handy, for example, also if you specify an empty root directory and tell Zipper to install some package.
17:22
First you have to add a repository there and then you tell Zipper to install some package. You will immediately see what other packages does that package depend on and how many megabytes it will add to that root directory when installed
17:41
and how many it will need to retrieve. Well, to the media types. Here are some examples. For example, you can use an ESO image of, for example, SUSE CD as a software repository.
18:05
The same for Samba share. Most obviously, HTTP, FTP repos. Also NFS shares and many others.
18:20
Here are more examples. For example, you can plug in your USB hard drive and tell Zipper to install an RPM package from it just like this. You have to specify the device under which it is known to the system.
18:47
All these URLs in this shape you can use also in Yast. It's a libzip feature. Okay, what do we have here? Similar thing, like I mentioned with the root directory you can do with this global option.
19:09
This will avoid loading the installed packages into the memory, so Zipper will act as if no packages were installed on the system.
19:25
If you tell it to install Zipper, you will immediately see what kind of packages does Zipper depend on. This can be useful for developers, for packages mostly. Okay, this is a workaround for a feature that isn't in libzip yet,
19:47
but we are working on it. Many people request that we should be able to first download all the packages and then install them at once. You can do it actually with this workaround.
20:01
You turn on caching of RPM files. Then you do a command, for example, install update or distupgrade or any other that installs packages with the dryrun options. This passes the test option to the RPM command.
20:24
By this all the needed packages get downloaded, but not installed, only tested, and then you do the actual install. So they first get downloaded, and then you get them installed for real.
20:45
It's just a workaround, and currently it is being worked on, the real support for this. Now for the services. This is actually a new thing, and it is not used widely yet,
21:04
but I just want to tell you what it is all about so that you can probably pick it up and provide services. The idea is to provide a list of repositories relevant for your architecture, for your target system under one URL.
21:29
You add this URL as a service, and you get a list of services as a response, which Zipper uses to add or remove repositories.
21:47
By doing this, you can leave the task of maintaining the relevant repositories on the service provider.
22:01
You just do refresh services, and it removes obsolete repositories. It will add new repositories. Then you just choose several of them, enable them with modify repo command, and then you just use it like usual repositories.
22:21
More information here. You don't need to write it down. The slides will be available on the FOSDEM site, I guess. So that's it for the tricks, and now a few words about future plans. First, we will be working to improve the current installation summary
22:44
to include things like version changes, arc changes, render changes to list recommended suggested packages apart from the others, from the hard required packages. We would like to include viewing of changelogs when updating packages
23:05
and maybe also dependence in three of the packages being installed. Then we will introduce a configuration file for Zipper. There are many things specific for Zipper that would be good if it were configurable.
23:28
Then this option will be available everywhere where currently repo option is used, and it will basically select packages from the repository you specified,
23:41
but it won't disable the others, so it can satisfy dependencies from the others. We will completely remake the info command to be more useful. I mentioned what provides query command.
24:05
The plan is to add more dependency querying commands. These are similar to those that are available in RPM command line tool, but what's different is that this command will query also repositories,
24:26
not only installed packages like RPM does. Well, then there will be some output polishing, most wanted feature, the overall installation progress with estimated time.
24:43
These are the most important ones. The number of ideas is quite huge, so we won't get angry if you take some of the ideas or bugs that are open and fix them
25:01
and send us a patch. You can get all the information needed, how to contact us, what are the mailing lists, what is our IRC channel and so on on this Wiki page on OpenSUSE.org, so we'll be glad if you join us.
25:26
And here are some links. SIPR's homepage, my blog where I post some interesting stuff about SIPR, and this is the Git repository where we host our project.
25:45
So that's it. If you have some questions, how do I turn it on? It is on. Hi.
26:00
Suppose I install fresh OpenSUSE and start using SIPR to manage my software. By the way, does it get installed by default?
26:20
Do they work together with Yast? Do they keep their information about installed packages in the same place? Yes, they actually both use the RPM database, so even if you install packages with RPM tool, they both will know about them.
26:41
Also, they share the libzip library. SIPR uses the same software management library that Yast does, so all the repositories known to SIPR are known to Yast, all the installed packages known to SIPR are known to Yast as well. So I can mix the usage of both? Yes, absolutely. Okay, well I have several more questions, but I don't know if I can occupy so much time.
27:06
Okay. Okay, I'll be around, I'll be available here or at the OpenSUSE booth, so if you have more questions, just contact me. Thank you for your attention.