 Izgleda tako, da vidimo, da se vedno so potenjali zelo. Zato sem tako... ...zapotrčim. Zvom, nekaj sem tez nečit, da je naprej, da je nečitez. Tako, da so imeli nekaj rpm počkaj, nekaj da se je zelo počkaj. Však je svoj, da so imeli nekaj rpm počkaj, nekaj da se je zelo počkaj. Kaj je to? Jel je to neko zelo, da se najbolj zelo, kaj tega seksu in tega v RPM, spetsu, nekaj je začne? Ok, to je začne. In jel nekaj da jem tudi kredit. Tudi se vse je zelo, da je zelo, da je zelo, da je zelo, da je zelo, da je začne. Vse bo stavili vse občar, zazvon je zelo, in je inan, je včak je zelo, ali bom bil neki rizki, tako zelo je zelo, če bo zelo, ta nekaj zelo, nekaj zelo je zelo, nekaj zelo je zelo, nekaj zelo, nekaj zelo je zelo, nekaj zelo je zelo, nekaj zelo je zelo, S tem, zbate, da smo občarili, nekaj, ne zbate. Sreči, da jim je več, zbate, da imaš grzav. Sreči, da mi nekaj več. Nekaj, da me nekaj. Spolj mi izgleda. Zelo malo o Čičku. Pneča UR2 je to kaj zahtaknil. Janosne, PNN, PNN-g Jennosti. So ne, ne bo. Ne so dneši. Pače bo tukaj začne dan. stavljate je izgleden, da boznaš vo demo, nekaj nešto nekaj neče. Srednji bozna ima se čudovito sega za vzglednje, da bozna rečno. in je jaznjela sozrej, da se vse bo spremasljajo, zato vse nekaj vse odvržajo. In nekaj nekaj nekaj vse odvržajo. Svoja je, da jaznil, da bo vse odvržajo, da se vse zelo vse odvržajo. In ima noga, da je zašličen, da se zelo vse odvržajo, da se zelo vse odvržajo. Vsi nekaj nekaj vse odvržajo, da se zelo vse odvržajo, If I would tell at least one part, why the RPM is still good in is the delivery of the software for me that would be auditing and security. I know that the RPM is signing and I can verify and the RPM does that for me because it will tell me, ljubičke z njemnega in tukaj ne gajem. I pa nekaj znač, ko ispravil, ko je pukaj. Ogranja pa je bila, ki je zestavila. To je to vzitk. Aha, Zipo, GEM, PIPOK, je prišljena v veliki, na razl race, in ne zelo vseb, in zelo vsebezstavlje vsebez, bo narediti. Mi prečeš, da vseh vsi povedam, da bi se povedali tega bolj pača. Aja, da so več vsez, je to zelo prekacija, prekacij, ili kaj je mojte zapečeno. If your exeption is the same. And you have reason why not do it as the whoever discrete, it's possible. While you can install your software in normal way, like make, make, install, your rpm is much easier. It's easy to install, easy to remove. je naredil in je vse prist. Zelo je to nekako ne. Kaj je zelo, da je vzelo, da možete vzelo v svoj svojo system. Tudi, da je vzelo, da se je vzelo, da se vzelo v svoj svoj svoj svoj, da se vzelo v svoj svoj svoj svoj rpm. Zelo, da se je početno prišlo, to je zelo zelo. Zelo je zelo. Svečo je vse tega delaj delaj, vse je zelo zelo. Zelo je zelo. Tukaj, jam in dnf, kaj je zelo. In izstav načine je za tega. To je super, super izveč. In ne musiš poštiti o to. Kajte, ki jste s rpmspekičnih, tudi jaz vse spakfajlje generatori, tudi tudi tudi vse spakfajlje generatori, tudi jaz jaz jaz jaz tudi. Vsači bilo početnje vseče v terasti začali, občanje, da se je početnje ne sem tudi jaz vzpostal. Zdaj o vsem, začala je bojo vseč, in prič sem bilo potrebno našel. Nisem sreč mi je tudi nekaj zelo. In ne bo tudi prišel v zelo prozirali. Ne bo tudi počkaj odbrali zelo. Tudi ne bo tudi počkaj. especially in v komersih zonu, ali v Open Source Wars prišli smo vse obojovali in je nekaj permit v Fedora. Kajte, kako se povedali, že RPN je nekaj čekov v zemljenju, možete vzvečati, In je zelo začeljena. Zato vse zelo začeljena. Zelo za... Zelo za dobro. OK. Vsreč nekaj kurs v RPM zelo. Vsreč nekaj kurs vse. kaj tako raz Hand, kaj zvokam? Z njenim je tento jevali in dobro. Zdaj si jevali, dobro, njenim. Zelo ga izglediti. Er, zelo, ne bo nam jin justo. Zato ti ne bo, napotr, ne bo. Selo, ne bo. Pekic.db je zelo pekic, not v vizal. In tudi in zapečnje je zelo pekic, vzelo pekic.db, kaj je je vzelo pekic, gdje je zelo pekic. Vse zelo všeč nicoj, nekaj je izgleda, je srpnje RPM, je vsega, ko je vsega, ki je vsega spek, je to, ko se njihovo zelo, in ta vsega, ki je tudi nekaj, nekaj nekaj nekaj pripunje, Zdaj smo postavljali rpm v file name. Rpm, rpm install in source name. While binary packages go directly on your disk and are recorded in packageDb, sourceRPM are not recorded in packageDb. They are just copied into therpm built directory. TAR files go into the sources, and the spec file goes into the spec territory. And they are treated like normal files, while you can remove them with this command, and not using neither file name nor package name, but spec file name, you can remove them as normal file using RM and file names, and you will not break anything. OK, if you get the source RPM, and you want to rebuild them, you can quickly execute this command, rpm build dash dash rebuild, and you will install those source RPM and build them. For building, just use the command rpm build dash ba, and the name of the spec file. It has various phases, and you can stop in some phase. For example, rpm build dash dp stop immediately after the patches are applied. There are other stages like C for compile, which say after the build phase, you will see that in a moment. While you can build for different architectures with rpm build using dash dash target, I don't recommend that, because it will not work with every command, and some software try to detect your environment and run according to that. So I don't recommend that. OK, now we are coming to the more interesting part, rpm macros. You will see in a moment that we will use a lot of macros in spec files. They are just like variables in the shell script. They can act as integers or string. It's much easier if you always treat them as strings. Many of the common macros are predefined. You can run the rpm show rc command. You can run it on your notebook right now, and you will see a long list of macros, which are already defined on your system. If you run rpm dash dash evl and macroname, rpm tell you how it evaluates that macro. So it's sometimes useful if you want to know what shared state dir is, if it is var or user or something like that. So you will run rpm dash dash evl, and it will tell you what's the value. Most of the system macro begins with the underscore, like the bin dir, which is spent as a user bin. It's good to remember some of those system macros, like bin dir, system config dir. Historically we have two ways how to define and how to use macros. One way is to use, treat them like shared variables with the Dolaris prefix, or you can use a person sign and name of the macro. It can work without those parentheses, but most developers use those parentheses around macroname. It really doesn't matter which format you will use, but stick to one, doesn't mix one's kind variables and second kind variables in the same spec file. It will confuse other developers. Comments. We do, where we often want to add command, in spec file we use the hash sign. This one, this symbol. Everything after this hash is treated as command. While this is true and is treated as command, be aware that macros are still expanded, even after the command. Sometime it doesn't matter, because if you use, for example, bin dir, macro in the shell, you can, it just expands to string, which will be treated as command anyway, but you will later note in this session, but later you may find that you can use even commands in those macros, which do something, which can make difference. So even if you comment out such macro, it will be still executed. If you really want to comment out macro, use double person side in front of this, over the macro. So instead person global, use person person global, and then the person is treated like one person. It's a literal character. OK. System macros are defined somewhere on the disk, where maybe somewhere, I don't know even, but you can create your personal macros. They are defined in RTM macros file, in your home dir. Create a directory right now, then that file, and you may put there some macros, I will tell you later, in next slide. Just be careful when you are creating spec files, and using your own macros, that those macros are not presented on somebody else system. So if they are rebuilding your source rpms, and you depend on that macro, it will fail on their system. It will fail on Koji, in Copper, et cetera. So it's good for redefining some system macros, or defining something like, you can define macro of my home system, and in check phase, when you are doing test, you can see, OK, if my home system macro is defining, that I will do some system check, because it calls some machine in my internal network, which is not otherwise available, or something like that. OK, another thing we will need is this structure. RPM build, rpms build root, rpms. You can either do that manually, or you can call rpms.setup3, which do that for you. So if you execute this right now, it will create this structure for you, you can check that. Before we proceed, one more warning. Do not ever build rpms as a root. Always do that as ordinary user. We will do the variety of stuff, and maybe even bootstrapping, and different stuff, and there can be something like rm-rf- remove everything in build root, it can be there. So if you run that as a root, you will lose your whole disk. If you do that as a user, you will hopefully only build root, if you use smoke or something like that. So never do that as a root. There are other reasons, but there should be slash. Now back to the rpm-macros file. There exist some distinct macros, like the underscore smp underscore mflex, which are passed to make files, and I highly recommend you to put there something same, which suits your workstation. You can put there dash j3, or l3, which is usually a number of CPU, or PAS1, that your compilation and build time will be much faster. j is how many concrete press should run, l is how it will spawn more press to make file until your road hits this number. So which is quite similar, but if there is more eo intensive task, l variable is much better, the option. And then you can specify some tests, which you can run, and you can define some, and you can use some tests, which are shipped together with rpm or rpm build. They are presented in rpm depth tools package, and there are more than these two tests. You can check them, what they are doing, and you can or don't need to use them. And now some real thing. Spec file is just a receipt. It's like cooking. You need to know what you need before you start, how to put those ingredients together, and what you will be serving to user. So similar to receipt, and we have some stages, preamble, which define name, what we will need, then set up where we unpack the files, build where we made binaries out of the source, install where we put those files into the correct location, clean where we clean after our build. It's mostly done automatically, so in modern spec file we don't need p-section at all. And then here we decide what we are serving to user, so we define what will go into the main package, what will go into the sub-packages, and what will be excluded at all. And last but not least, there is a changelok, where you always put your name and version of your package, and you will define what's new in that package, what changed from last time. Ok, so preamble, that's the real initial section. We'll go deeper into that now. There are name, version, license, which sources these packages, which patches, which are the requirement for the build phase and for the runtime phase, and some description for the humans. If you take some old RPM example, which I recommend you to, take some RPM, there are plenty of them, you may see some things which are not needed in those days. For example, build root is heavily used in old spec files, but it's not needed right now, it's automatically defined by RPM, so unless you have some reason to redefine it, you don't need to use that at all. With exception, if you are doomed to still develop for L5, you will need that. Since RL6 and federal 12, we don't need them, but RL5 still need the build root macro. That's only one year and one month, so it will be obsolete very soon. Ok, so we will start creating our spec file right now. Spec file is just normal text file. You can edit it with VIM or MS, whatever you use, and we usually put that file into the RPM build spec directory. So, go there and open, and create an arm spec there. Well, technically speaking, the spec file can be anywhere, because the RPM build doesn't check if it is present in the spec directory, but to not create a mess on your hard drive, just put it into the spec directory. Ok, if you use VIM and have some templates installed, which in federal by default is, and you will write VIM and arm.spec, you will get something like this. It will open the empty template, which you are supposed to fill in. If you don't have it and you use other editor, you should start with this template and we will start filling in the gaps. Ok, first is the name. We are creating package for the Anam software, so we will put there the Anam name. Again, for various software, there are guidelines on how to name it. For example, Python modules are in federal name, Python dash, and name of the module, similar for Ruby, parallel modules, et cetera. We will leave up to you to study that in Fedora guidelines. Version. We are packaging version 1.1, so we will put there 1.1. This is, hopefully, obviously. Release. That's a little bit tricky. We will start with the number one. And every time we will create or do change in the spec file, we will, we should bump it up by one version. Every change, so even if you didn't release that version to public, always make the habit to bump it up, because you never know when you say, ok, this will not go to the public, but sometimes it's somehow bad because your colleagues take it during some break and say, ok, this is ready. I will go with that to public. So every time you do some change, please bump up the release. It's not bad if you skip some numbers, but it's bad if you have two packages in the same numbers. But we didn't use just the number there. We used some weird macro there. So what's the dist macro? It's a macro. This macro exists in Fedora and Rale, even Rale 5, and it's another identifier to mark differences between various distributions. In Fedora it is FC and number of Fedora versions. In Rale it is EL and version of the Rale. It's useful if you have two packages, for example, Python URL lib. If you have the same package for the Fedora 23 and the same package for the Rale 5, same name, same version, and even the same release, we are not the same because on the Rale 5 we have Python 2.4 and Fedora has Python 2.7 or even Python 3. So those modules are installed into the different location. Because those packages are not the same, they differ for various distributions. So we added this thing, which is the identifier of the distribution. And what does it mean, the question mark in that macro? It means if defined, use it, if not defined, evaluate it to nothing. No, empty stream, but nothing. So it is sometimes similar, but not always. Summary. Summary is a single sentence describing what a package does. It should be 80 characters long, maximum, and it should not end with the period. And try to avoid the repeating package name, like enum is a package which do something. Just describe the part after the which do, say it's sequence enumerator. We will fill in more descriptive part in the description a few months later. License. License is a little bit tricky. We put there under which license this package, this software is released. We don't know yet. So we will put there to do, and we will return to this part later when we will have the tar file unpacked, extracted, and we will have time to investigate under which license it's really released. Group. Well, group is not... It was always useless, but it was for a long time required by RPM. It's not true in Fedora. I think it's still required in Apple, maybe even Apple 7. But if you want to fill it in, you can open the usershare.rpa Groups file, there is a list of all those groups which are in the system, and you can choose anything from that group. I think nobody use that anyway, so choose anything. Here you put the part where is the software homepage. Clear. Source 0. This tag tell us what source file to use. You can put there the address where you can download that source file and the RPM is smart enough to ignore the first part and will just take the base part, so it will take this file and check if it is located in RPM build slash sources and use that file. It's always good to use the URL because it's information for other developers and automated tools because they can automatically download this tar and check if the check some match or for somebody, some developer who comes after you and if he doesn't have tar file he can see where the previous developer get that source. So it's always useful to have the full URL there. OK. Why we use the macros here? It's because this part may change for example, the version always change. So when is the new release available and you are preparing RTF version 1.2 you want to edit on one place and not change in this string so you can use macro and you have macro version available which have this value because the tag, everything that is tagged is as about macro. If you are doing new release you will hopefully change only this part and upload new sources and that's done. In your spec file you should try to use macros as much as possible. If you will use them you will don't need to edit the macro so much. And last from the preamble section is the description. Here you can write some long description. It should be only 60 characters per one line as many lines as you want. So put there something and we are done with preamble. It should look like this. Hopefully. Other items we didn't need for enum. You can use patch there which is patches again the source and you put there patch 0, patch 1, patch 2 and put there the file names which include the patch. The patch should be present in the rpm build slash source directory. Is that the question? Yes. There is macro auto setup or something like that Even apply all those macro automatically but you you don't need to use them on all specals don't use them and in fact all the macro specals use patch dash and variable patch 0 So it's up to you in which order you apply it. You have the variable because this define the variable patch 0 So you can apply that in any order you want. It's up to you. Of course just to have the same spec you probably want to do that in the normal order. And another thing we didn't use is about build requires this say which packages we need during build time. We don't need them for runtime for example when we are building some binary package we need GCC but only during the build time we don't need it for runtime. When it's compiled we don't need GCC anymore. So here you specify which dependencies you need for building and here you can specify which version you need So this say I need package bar in version at least 2.0 Most then beside build requires we have requires which specify the runtime dependency So those packages need to be installed for running the package. They will not be installed in build phase So if you need them for your checks in the check phase you need to specify them in build requires as well for most system you don't need to specify those requires because RPM is quite smart and for binary packages it automatically finds that you are using SO files that would generate those requirements automatically the same for Perl but there are some languages which doesn't have these automatic requires like Perl, Python, sorry, and Ruby So for some project you need to specify it manually Another interesting part is if condition it handles differences between OS or some other stuff you can use condition for variety stuff but most developers or most some developers use one spec for all distribution for Fedora new, older and for RELs So you can see there something like this if REL is equal to 6 or Fedora is smaller then it requires Ruby 1.8 if it is newer then it requires Ruby release So question why we use the zero here? Yes, exactly because we have the question mark here and if the REL marker is not defined which is defined only on REL and vice versa Fedora doesn't define Fedora doesn't define REL and REL doesn't define Fedora macros So if it's not defined it's expanded to nothing so we will have if nothing is equal to 6 which will raise syntax error So do you want to scarf? You already have So first two requires are provides usually you don't need the provides because a lot of provides are generated automatically you always provide the path names which you are deploying you are providing the SO libraries you have in package but you can use so-called general virtual provides for example you can say that my package needs some web server and it can be app edge NGX, Lightning, HTTP it doesn't matter so you can say my package requires VVV 3EW server none such package exists but package HPG provides WWW server package engines provide WW server so you can install any of them to satisfy the dependency if you don't say explicitly which one young or DNF will choose for you which one will be installed but you can swap them and the dependency will be still satisfied so it provides semicolon and the name of the provides ok, we are moving to next section setup this section is called prep this in this section we should prepare our sources which mean provided tarbol and apply patches if any so in our case we don't have any patches so we use just the percent setup dash queue say expand it slightly because you don't need to be verbose and here is the case for you you ask how you apply the patches so percent patch 0 dash P1 apply the first the patch 0 that's the macro so you can switch the order and start with the patch 0 or patch 1 or patch 10 the first one is section is defined as macro as well so if you percent site prep is for you the site that here starting the section prep prepare section there is install section build section so anything beside is part of the section and I'm not sure how internally it is made if it is macro as well which take the arguments or something like that I'm not sure it's better to treat it like two different things like this is special macro which marks start of the section and this is real macro setup the macro is quite powerful you can here you have a lot of options you can specify how the builder should be name or how it's name in the tar file if it is name different than name inversion but in our case it's quite easy so just this will work question I have a slide special for you so if you have patch 0 in your spec we would apply patches here and save patch level p and number save patch level so how many slash g's we are taking away from the file names you can optionally specify means be backup and then original files will be backup if you are creating and you have some problems with your spec file and you are trying to figure what's happening there so you have backup files and you can so query just do the work that all those patches are in apply are applied with patch 0 so it's nothing like if patch normal patch apply with fuzziness 7 so if the patch is move 1 or 2 or free line differently you will find the context and apply them rpm needs to match the context exactly needs must be located on exactly lines in your spec file in patch so here is what our spec should look like now so we have preamble face and we have pref set up dash queue now the next section build that's the part when the binaries are creating from the sources for most so binary software you can do configure, make make install you will just configure here and make you can use personal configure which again expands to configure macro you can use rpm-eval and see how it is defined in your system and you can call make and don't forget because it's not just because in fedora it's not just j or l flag which speed up your building but there is minus o2 or some hardening options so this is the option which somebody in fedora decide we want to have there recently for the hardening if your package use something else then make file like cmake you will tune up your spec file accordingly so you will call scones or something like that in the build phase so after this phase you should have binary threading compile you can check it by calling rpm build-vc like build and stop after the compile phase so it will execute the spec file it will take preamble, prep step and the build section and stop immediately after build section so you can go into the rpm build slash build directory and investigate what is there and how to continue so here is our spec how it should be in our case you should pay pass to configure the disabled.rebuild so we are not rebuild documentation that is special for the enum so for example you can pass to configure with something for example if you are compiling employer you want to specify which codecs you want to build for example if you are building something for Fedora you want to exclude some codecs which are proprietary and you couldn't ship so you pass the parameters it's up to you next phase is install what's happening there you are not deploying directly into the pass you create you are in build root and you have the variable build root and you should place all those files into the build root location so it's some directory on your file system and in that directory you should create copy of the file system which will be in your package so in our case we are creating shipping some user bean enum file so we need to create in that build root user bean directory and put there the file and the binary so created by during the build file phase so in our case we have make file so we just call make install but we define the deser which is the prefix which should be put before every root so we will install into the build root user bean enum man pages into the build root user share man dot gz so in the end very simple if you have package which doesn't have make file you are just creating you just call makedir build root slash user bean enum binary into the build root slash user bean and that's all so you are basically copying the files into the correct places ok for some old spec file you will find that at the beginning of the section includes clean up of the build root it's not needed anymore rpm do that automatically so you can remove that part even in rl5 ok and we are coming to the end and what's remaining the file section this is the list of the package content what we are delivering we are the when you will be when you will have more experience you will creating yourself but right now we will ask rpm to tell us what should we go there because rpm is willing to tell it tell us if you run if you run rpm build dash b a build everything with that spec it will say we will have those files in build root but you didn't specify them in the files so we will just take them and put them in the files that's something I want ok anyway while some tools like setup py from python setup tools allows you to generate file list and you can pass person files dash and specify file which includes the list of the files which should go there please never do that because when new release come there is new files and you will never notice because then rpm will never warn you that there is something new in garbage in your rpm so always specify that manually please and other things def root it's always used in the old rpm it's not needed the default is dash root root and it will hardly use something else so it's a definition which the first part say which attributes that file will have if there is minus they will have the same attributes they have in build root so if you run in build root change mod for some file it will have the same attributes in final package and this is who will own that file so this is user root and group root so if you need for some reason that all packages in your spec file need to be used by user apache then you can use that it's usually only few files have special attributes or special owner and you specified and using percent ATTR macro so most probably don't need this macro at all this will return to that little bit later because right now rpm build will complain that change log is missing so it will create a change log so how it's not needed since rpm 4.2 which is included even in rel 5 so yeah if you are still doing rpm 4 rel 4 you might need it but I'm you probably don't need patch 4 rel so change log that's just you are telling basically to other users what change in that as I said every change in spec file you should bump release number so every change should be documented even in such minor way minor example changes something like that what you are basically documenting you are going to be changing in spec file you probably couldn't document everything the software itself you are releasing new version then user probably should check the release notes of that software so you are basically documenting the spec changes not the software itself so put there the change log entry using this format and you are done you can run the rpm build it should be always the newer edit top so with the higher number edit top it's always hysterics and this format and then dash and those dashes can be more so you can have more lines of these entries ok so our spec file should look like this so we still didn't have the license filled in and we didn't have the file filled in so let's fill in the license run rpm build dash dp and on dot spec you can go into the rpm build build and on dash one one and now it's time to look what's there and investigate the sources there are the unpacked sources so you should go into the files and check the headers if there is some license you can check for the license or copying file and check the license good part is if you can take copy whole text and put it into the google search and it will tell you what the license is sometimes there are subtle changes so just be careful about that it can be really really tricky I can tell you a lot of funny stories you will find that our software is licensed as BSD so on Fedora guidelines there are subsectional licenses if you click on that there are all licenses which are allowed in Fedora and which are free some which are forbidden and all those licenses have some abbreviation BSD is easy abbreviation for BSD is BSD but some are not so obvious so if you find some license which you don't know check that page and you will find the abbreviation and you will put it into this stack done with this slide can I move up? if the source file contain file copying or license we could specify that in file section we can use the person.doc macro it will copy the file into the build route in the user share doc name of the package and mark it as documentation file recently in Fedora there was introduced new macro license act as document but just mark it as license they have some special handling for that so license are now marked as license you don't need to copy the file anywhere in install section it can stay in the in the route of the build where it is in the build section and rpm copy that skip that so now it's time to run rpm build in sba so it will go through the build phase install phase and it will print you some warning it will print some files user bin user share man are presented in build route but not installed yeah this error so what rpm does give us the list of the packages we want to install copy and paste this into the file section you are basically done but we are smart I said that we should use macros so we will alter a little bit so we use man-dir macro and bin-dir macro which expound the user bin and user share doc we specified asteris at the end of the man page because you don't need to compress that I think in our case mac file already created gz extension so it's compressed by gz but you can put it as a non person one only and the rpm build it finds such file it will compress it but using the compression which is right now used right now it's probably gz still it will be moved sometime later to exact so if you will use the asteris you will not you don't need to alter your spec file when this change happens so let the rpm compress that file for you that's all if you run it now you should get binary package we are using macro you can use macro as possible so you can use macro name here as well but it's always a struggle where you should end up because there is macro for may, macro for ls so instead of cd cd you can put person cd so it's hard to read so use macro for everything but stop on some same level and it's up to you where the same level is so ok congratulation you have your first rpm created next step for you is probably to use rpm linked because there is two rpm linked some other links so if you run rpm linked on your binary package or the spec file it will tell you which problems in your spec is you can have tivo in description description can be longer than rpm you don't have man page for some binary you are installing etc there are a lot of warnings so while you can ignore them it's always good to learn what should be done properly I mean if you run rpm linked e it will tell you how to fix it usually so if you for some sources for visitors you can download and if there are package source rpm extract it and look how others do that so learn from the others and final warning rpm is not entrant so please never call inside of rpm spec rpm itself it goes faster what happens when they cross the streams never do that that's all here are some useful links for you if you want to study more some questions so next session will be we will start in 20 minutes we will ask some advancing packaging so some of you are more advanced I will present some more tips which are hard to miss in documentation so this is the question in this section we use to define many course we use at the moment we don't use that try to try to comment it out in your rpm markers part or rpm dash dash show rc the chapter I will tell you what it will be and there is some quite long macro which try to guess the value according number of your use maybe you can say something about mok that it's useful to try the package in mok because otherwise it uses the packages on your system do you know what I mean? you don't need to define building part section actually because you are using rpm build not mok build so this well even if you use it will be required and you will use the packages from your system so if you require some package which you don't have but it's actually present on your system rpm build will proceed because for example if you need to open as a cell it's on your system and it will proceed because it's present in your system but there is a tool called mok which build into inside root and it will install only those only very base packages and those which are installed in build requires so if you are missing something and you actually need it your build will fail but a little bit advanced topics so I didn't put it here but if you are doing building for production system we should use mok for building not rpm build this is some tool built on top of rpm build another question so thank you how do you configure macron? there you define building and so you define building and so you define building and so you define building and so you define parallel building because it needs to be connected so how do you configure the shell it's not in the configur there you have c flex that redefines the problem in cc so that's the question but we have some project in the system and this is it A zistiš, že tam potrebujte v tomu neki PLV modu, ali to izdetujemo, da bi smo to zaušiti tudi. PLV modu je tenokast na kompristeme, ki žal njih nekaj nejde technični pri... Existujou filtri, ki mužiš, kde fina je, ali, jak si smela prače, asi. Vzlej, če dvo marakama si malo predstava. Existujou, še se podivam, da se bi bilo... Tam sem barang glav. Existuju filtri, ali si mi smo to djali z kolegci, kdji se mi potrebao neče, vifiltrval, a komprist, da se daje, da je exkluut, tako dofalsek, kdeš daš exkluut. No, to ne chceš, jo. To, ki tam chca, ali jen v tih, kde pa neci. Zil, te... Vište, da sem tama hodila. Auto, kaj pa nalazel? Auto Provides. Dobrý, že, kot te sem? Auto Provides in Requires filtering. Jel, tadi, nakaj. Requires gobala exkluut, prom, ko še je nekaj makro, kde jih bomo cipak vejde, a sol tam, tadi, o, Requires exkluut, a može se tadi da tadi regularni výraz, tako, če se bude exkluidova. Še mu se dala vlastnji, ten depenis je hredniti, na to... No, je tam može bit sokoliv. To može bit, že, o, tako, ta faldependence, nebo to SO, nebo imeno toho baliku, no, tako, če pa nam zrovna vadil u tih software kolekciji, že tam bili te Requires na tih SO, njiha, ki mi se me potrebovali, kaj je filterovak, o, tako, še se tadi rešilo tadi te Provides exkluut, ali je tam dos, dos, to je hodnji internij zalič, dos, ktoraj im si nič ne propaguje, že ta je dos, no, diš na, jako v každej verzi, tak, že mi smo njeli problem, že v Fedorze Abrae uskotovalo u to, ne in in nas. Nešte, nešte profedurine. Auto Provides, Requires filtering, je to počilec, kaj mi se teh, tako, človek mi je, o, tako, tako, hodnji rosa, o, tako, se tam dava, tako, tako, mi se, že, se tam, tako, tako, se tam dava, tako, se tam dava, tako, se tako, si to tako, daje še, če jih ndoh te ne zajimo, je lozato, zazprom si, zazprom si, tako, ni, tako, že tam je tukaj, je zivak ta, tako, ki je, tako, ki jih ne možemo izvrišt, če bi se dovoljila v barji, za tem su, da tukaj si si možemo, tako, ki jih smo, To je zrovna baliček, kdaj ja nekaj nulanam o kontrolu, je vlastnik na konkuragusti. Neloma je tam komit praha. Dosice v udjelni njazih vapocišelji, tako ta ne opusti, tako imam komit praha, tako sem mogu zajistiti, že, kde bude vladej, se do direkcija to ne bolj mu da. A kdike to može po to, kako bitno tebe krepil, tak všet film strašnog gluja v istosti, tako na to, da je človek, ko je delil monstrankov, na to, da je javov, ojk se selka, taj je tehanski vjec, do tolku, tako je tolko nekaj tešnji. Sem si je delil polen monstrankov, šokom sem je tam, kako to vstel, tako je tam je proste, ten letbookovaj zdrojak, na istranku, ali bitnešnji to je zdroj, kukut vljub, že to ma, tako. Ještje, s tem, da sem jih jen, tako to, sem pravi, tako, priberkov, že, že te kontrolov, čistje, jelom tem paralelni bil, sem tam se stane, že deva je nekaj, priberkov je priberkov, prelip paralelni bil do nakudu, ako tam se spremese, že etan třeba vkaj v priberace probjehno, če hozili. Tati, že torensta je, raz šistih, kot jel, pa je bil vse do debaku, taj vjč jih oblevni, harda, ne vpela, jih se tešnji v vsek, tako, je pravina, definovanji, aksiji plegi, te kradiji plegi, če pa se tam vste všechno so človek, si dokaj biti stavit, že bi moh goviti na defenovanji kotov. Tak je. Časná chiva bejvaja, že vidi, uživajte ška omenu, da je to uživajte, da je to makro, ali pa idem tam, da uživajte, te sistemovih, potem, zelo zelo, da je tam, to špatne, makro se na pohvi odšte. Gliš nemaš binarni bariki, tak. No, jasnije, kako je učite, kako je učite, kako je makro, no jasnije, kako je, da je, tudi je vse, da jasnije, kako je vse, da jasnije, da vse, je, da jasnije, da vse, da jasnije, da vse, se vse, da jasnije. To špatne, to, zelo. To je šakolst. Je bjez kraj, vzrovna ta lek, kdaj se vsto vitske ne zvrižuje. Škide. Admini tih, ki se tako moruje, ki vso vedjet najdministih, da je tak informacija, ki se pogodila T.C., ki se naša priprima. No, pravi. Steniv. Steniv. Steniv. Ne bo neko tako vihoriš? No, ne. Znači. Znači. Znači. Znači. Znači. Znači. Gole boje. Dve. Gole boje. Je to všakno vzviku. Zcos. Naša te vizima jaznjak bomo z moglij. Taki vzmugli. To je šak, tako, v rentingi. Znači. Ha, tako, vzvega je vizima. Znači. Znači. Znači. Znači. Znači. Znači. Znači. ALL E TEM. Znači. Znači. Vzvega. Znači. Znači. Znači. a kliš imam količne slajde. 27, tak to so 3 minuty na slajde, dobro. Pro mne to bilo pridostne, če pa tih, že sem si nekta da te veče uvesnil, jak se to treba malo djela. Videl sem je korist, tak pa jel. Zdelam to vice mene, tak že upravim, upravim nekaj. O, to je evi, ja sem ti sem si stahlval i ten enum Sferpog Girls Master, vizim, že on je nehtilo psati, vizim, že to tam budu museli kopirati, no, a bilo tam skončil, tudi tako, ki tjek vjece, če tadi je řekal, vizim, že se nema djela, nebo nej ni třeba bil družijo, tam definovan je, vizim, že je historičke, kako videl sem ti če inželog, jenom maz, rebl, maz, rebl, njih, nekaj do Fedorii barac, sem na to nešahlo, proste vubec. Vizim, že sem napravim, proste nekaj zpeh pajl, vizim, že mi ne fungovala sij, tako, že sem se htila podivati, mi to tam teh, kdaj bom vlati, kdaj bom vlati, a potem sem na to nešahal, preto, že to ne mjelo vizna. Ja, jasne. Každjih deset leti je zhruba potreba, svoj sem ne htila tadi, tako, ki sem vlastne nestal, svoje balički, ki sem nestal, kako do vihetu, tako, tako, ki stav, tako, njih, nekaj tako, nekaj tako, nekaj tako, pripočaj, a še hat, tako, a še to pa vizmise, po deseti letih, tako, proste na to žane, jaz nekaj, nekaj, nekaj do nové, nače nekaj, nekaj. Tako, ki sem zakojnil, kdaj sem zati mocih navom, ja sem ještje praje, k tomu razsihmu zahvednjemu, v workshopu, mjeli jednu, v istilu zabodnih zatovalenji RPN-ka, sem proste ukazal, ja zabalim TAR za 34. Ja proste naprav sem ga poval tam, pa sem ukazal, jak poslup njih prihnapil, je proste, jo, je moratiho stav, všiš zatoval, vlastni budem vznik, je, že na dokumentarce po lovi se trešno je bováko drug vradi. Njerča če bila je vsi povstivice, da bi tam biti odkas, po dnewite se na tenhle vaniček, A je to, če pa bali če, kde je obsobali kvetečku, kvetečku se bali trošičku inak, neš... A to maš v tie gaj dlajenceh, tam so pravi tih spekhi prav jednodljivih kategorije. Pa vidim, Perla, mi se vziv, že tam bude i kvetej kategorije. Zelo, da. A tam so pravje, kako... Zelo, da malo nekaj, da sem tam mislim, ko že pri mojih zahnup, ten dobro je ček se poni vele. Je to vikina, pristne, tak? Tej, to je blbih, kdjiš, kdjiš, kako... Kvetej, kako, pomalu vodeš, rej, nebo vodpazi, ale... Ja, to maš tih, kdjiš... Ovidaš na to polku, ja se bo tvoj skoče po záflotan. Ja, jo. Ale, poslati, če pa, kdjiš je to nejaká sekce, kurist je. A, tak, tak, jako prosti řidi s tem lidem, če so, jako správci, če pa pajten, jo, tak, kako... A bih to tam neče dalem. Tudi v njih baliček, tudi zidal tako nezprestavki, jo. Počke, ja, ja, počke, ja. Tudi videl. A to bliká, to strašno nepřihne. Ja, dobra, tak, jo, tak, tam, da je tam zprestavki. Miš ti dala, čalej, tako, bih, koli jo řekl, njih ukáš, ja tam spočim. Ja. Biš to zavirane. Toli, kako sem dal tam prezenta? To... To sem dal prezenta? Ja. A, tako, tak, ne bimo zdi, jistim, da jistim, da jistim, da jistim, da jistim, da jistim, da jistim, da jistim, da jistim, da jistim, da jistim, da jistim, da jistim, da jistim, da jistim. Žele bo flavourm, combine, imaake no, pamizor, Če to mozlava traša? No. Pozvom, že taj nefunduje. Vlasim filmu. Če vam taj taj nefunduje? No, če vam taj taj nefunduje. No, če še še še še še še še še še olišno? No, če še še še še še še še še še še olišno? Ja sem tadi je poravčeva. Ja sem tadi je poravčeva. Ja sem tadi je poravčeva. Pozvom, če vam taj nefunduje? No, če vam taj nefunduje? Hovoj. Pozvom, če vam taj nefunduje? Nefunduje. No, če vam taj nefunduje? Nene. Pozvom, če vam taj nefunduje? Excellenje, je bom zelo. P... ... Raša, če vam taj nefunduje? Zelo. Zelo, če je zelo, če je zelo, če je zelo, če je zelo. Zelo, če je zelo. Zelo, če je zelo. Zelo, če je zelo. Zelo, če je zelo. Zelo, če je zelo, če je zelo.