 Kouska. One two. Hello. Welcome our Next Speakers, Petr Hracek, Michála Roprich a Josef řidky, they will be talking about remote dependency solving. Hi folks, I'm glad that you attend this presentation, I see many of the RPM specific guys like Floriane Festi, Petr Pisař? Well let's start. Protoždětně jste. Vypadním, že jsme říkali o projekti, vzvečnout vzvečnout števře. Prostě, musím vzvečnit, že jsem s tebou vysvědět. Jsme jeho říkali. Protoždětně vzvečnout projekti. Vzvečním projekti vzvečnout a zgradujeme, mě děláme o těkou, Jozef řídky a Michal Ruplich vzvečním o zvuké implementáci, těché křeně, kvě skulli a všeho, Proste, když jsou prítiční a zvukování o zvukování, možná dělá se na vědět. Ne, nezvukování, možná dělá se na vědět. Proste, můžu mít, když byl initiátor na projektu? Proste, když byl initiátor na projektu Jan Zelený, a byl se na to, když se představili, když byl initiátor na projektu. Proto, projekt je se na vědět, a cojí máme. Jsou výstaveny proěď, které vždyjí stu donutsu. Michail Ruplich, Józef řítky a Simon Matej. Simon Matej, to se nejde. No, co se pročuje pročovat? Přímo, že máte lokovi devices, který je smartphone, který se můžete zvukovat, které je smartphone? Tak, tohle důležitě důležitou. A jste se zvukovat na Fedora. Jak jsem říkala, jste se zvukovat. A jste se zvukovat na pakovat. Co jste... Co jste zvukovat? Jste zvukovat na pakovat. Píаниюc, jste se zvukovat na pakovat a jste zvukovat pakovat. Jsem jaký se zvukovat, dovolím si taky důležitou a nezajím. A device nezakomůč tady controlled. A na srce jste se můžete zvukovat na srce. Běžtě se zvukává data do server, server zvukává dependánci, zvukává ansphere do klienta a klienta instalovat nezvukávání. To je všechno. A to je všechno za Jozef. Piotr, díky za výjdecku. Háj, jsem Jozef. A zvukávám něco o projektu a zvukávám něco o klienta aplikace. Projekti se zvukává díky za klienta a server. Klient a server komuniká zvukávání zvukávání zvukávání zvukávání zvukávání. V dnes jsme nává výjdecky servery na zvukávání na Federa, takže projektu můžete vzvukat v zvukávání. Což mám na klienta. Když děláš, můžete to vzvukat. Klient se zvukávání zvukávání na servery. Až zvukávání zvukávání zvukávání. Klient nává nás nezvukávání zvukávání. To je velmi výjdecké výjdecky. Client je třeba na dálném, instal, update a e-raise pakage. Na dálném vědětě jsme vždyžení LibRepol, vždyžení, update a e-raising, vždyžení RPM LibLibrary. Jak se klient vždyžení? V terminu vždyžení vždyžení v tomto vědětě, rds-client, double-dash typu, vždyžení, instal, update a e-raise a listová pakage, které vždyžení vždyžení. Co klient vždyžení? Client vždyžení repofiles. V repofiles jsme vždyžení url adres. A vždyžení jsme vždyžení vždyžení typu operace a listové pakage, které vždyžení vždyžení. Vždyžení jsme vždyžení vždyžení. Vždyžení jsme vždyžení důvodní vysky, vůst je system solf, a vůst je jamkón. Vyskyžení jsou vždyžení vysky. Někdo vždyžení můžu vždyžení a vyskyžení na náš boží. A vždyžení můžu vždyžení vysky. A vždyžení můžu vysky. A vyskyshotský se vzíná se od hlasa. Můžu vždyžení těch vždyžení důvodní pakage, tak že ní se honestlyf umovit. Můžu vždyžení a vysky. A přijde to mi, So install, update, erase. Second type of information is error message. This means dependency error that dependency cannot be solved from some reason. And the third type of information is that it's nothing to do. That means that all the requested package, the two types are already installed, so nothing to do. Second part of the project contains the second console application, it's a server. And Michael will tell you something more about it. OK, test, does it work? OK, my name is Michael and I would like to tell you something about the server side operation. So as was already said, the server only does dependencies, nothing else. It does not install anything, it only solves the dependencies. For solving we are using hockey library and for downloading some metadata about repositories we are using the Librepo library. So if we initiate the server, as Joseph has already said, we need some information from the client. So we need three types of information. We need the links to all the repositories that the client uses. We need a system solve file, which is basically a collection of all the packages that the client uses. And we need, of course, the information about the requested packages. So the server uses the Librepo library to download the metadata about repositories. Then it creates a sac object, which is basically, again, it's a huge collection of packages. We fill the object with all the packages that are available in the repositories and all the packages that are available on the client. And with the information about the requested packages, we solve the dependencies. The result is some answer that is sent to the client. So now we would like to show you a short demo. So first there will be the install operation. So first of all we check if some package is installed in the system, for example Emacs. It's not. So we initiate the server and from the client side we try to communicate with the server and try to install the package Emacs. OK, so we can see that there is some communication going on between the two applications and the server is counting the dependencies. Here there is an example of the JSON structure that we are using as a communication tool. We can see there is some state code, very similar to, for example, HTML, just to indicate what is going on on the server side, on the client side and so on. And the answer from the server is basically the Emacs package, the link to the repository and the location on the repository. On the client side, again, we can see that there is only one package that will be installed. And of course there is this prompt for the install operation. So we initiate the prompt. OK, we want to install the package. You can see that it has downloaded successfully and the package is installed. Now if we check with RPM that the package is installed in the system, it is already there. OK, so next there is an erase operation. So again we check if the package is installed. Yes, it's in the system. So we initiate the server and again we try to communicate from the client side with the server and we request that the package Emacs is erased. So we initiate the erase operation with the Emacs package. Again, the dependencies might take some time, of course. And the answer should be, again, just one package that should be erased. Here we can see that the meta link is actually a system file, which indicates that the package was already installed on the system. Because the system file is the sole file that I mentioned before. So again, for Emacs we need to erase only one package. So if we initiate the erase, we press yes, the package will be removed and now we can check that the package really doesn't appear in the system. And there is a third demo. We would like to show you that we are actually able to update the whole system. So we don't specify any packages, we simply initiate the update command. Again, the dependencies take some time and the answer is a huge list of packages, because I actually haven't done the update for some time for purposes of this conference. So you can see that there are like 560 packages that should be installed or updated. Yes, some should be installed, some should be updated and two should be erased. Now, of course, now in the prompt, I will only press no, because I really don't want to install anything, so never mind. So this is a short demo that should demonstrate how the program works. Now, to sum it up, so the client provides some information about its system. The server solves all the dependencies and the answer or the request is sent in the JSON format. So maybe you notice that it actually doesn't do anything new apart from DNF, but this is just the current state of the application. There are some future plans that we are aiming for. Of course, we need to secure the communication, because the client is revealing a lot of information about itself. The security is prepared, it's just that we still don't have any server or anything, so the security part is actually turned off in the application right now, because it only runs on localhost. We are hoping that in a few months we will be a part of Federa, so it will be a package on Federa, and you will be able to download it and install it and use it. Of course, we are hoping that we will be able to try this application on a real server as some kind of a demon, and anyone should be able to use it just with the client site application. And then there are two main points that we are aiming for. There is the client database and the caching of solving problems or operations. So for the client database, if we initiate the client for the first time, we need to send a whole lot of information. The biggest problem is the solve file, because it could be really huge. We would like to create a database of clients, and if there is a client who already tried to connect to a server and the solve file is on the server already, the client doesn't need to send it. So we are aiming for decreasing the amount of information that should be sent through the network, so that there is as little as possible. The second point is caching solving operations. We would like to... Let's imagine a client requests, for example, from demo, requests installments of Emacs package. Then there is a second client who has the same collection of packages installed on the system. So it is basically the same copy of the Federa system right now, and it requests the same package. So there is basically no need to repeat the dependency solving operation. We can simply just use the answer that is cached from the previous operation and just send it to the client. So these are the two main points that this application should aim for. Well, and in the end I would like to speak about other future plans. Nowadays the rebate server side dependency solving is not a part of Federa infrastructure, of course, because on the project works three students, and they do a really great work. And we would like to introduce the project to the Federa infrastructure soon. Who of you knows Redhead Satellite? Great. Let's imagine that you have a farm which counts, I don't know, 10,000 computers. You will update the first one, and the rest of the computers are only installing, like Mike mentioned caching solving. It saves time. And of course the project can be solved in Federa workstations. Why not? This is not only for the local devices. And this conference is about the bingo word you know with docker. And let's say that you have the one docker file and you would like to install it. Some package, like I don't know who I can send a pedal, yeah. And you will install the first docker image. Via our software. The second docker image would like to install the same. And it was already installed, no dependencies are needed, and it is installed immediately. And the rest of the futures, which comes from my memory, can be introduced later on. Well, where you can find the project on the GitHub? Oh, Typo. Oh, this is not the reference, I can show you. Who are contact of this project? My free students and me. And blogs and articles about the project will come in soon as on the Federa and as for the developer Redhead. Well, I guess that's all. It's a pretty short presentation. Yeah, you did not run? Why? Well, please, questions from the left. Okay, thank you for the question. Well, the file is basically, as I said, a collection of all the packages installed on the system, on the client. And it's some kind of a binary file. And for example, I don't know, maybe that you have some new copy of Federa, something like that. Because for example, my sole file is like four megabytes big. And there might be, there might be sole files, it might be like 100 megabytes, 400 megabytes big. To be honest, to be honest, I'm not really sure what it contains, because it's a huge binary file that is actually created in the sole. Florian. But as soon as you have to sort of probably software installed, the server cannot know the details of those packages. And they are basically contained in the sole file. So the server can be sure, he doesn't know about all the other packages you have in the system. Thanks, Florian. And the sole files, and from what I understand, the sole file is actually like a huge binary, let's say, logical equation. The system is using it to solve the dependencies. It actually uses the whole binary file to solve this equation with the requested package. And if the answer is one, true, then the package can be installed. Thanks. Well, thanks. Sorry, guys. Another question? Good point. Yes. Thank you for the question. Yes, we talked about it. It's not mentioned in the future, but we suggested it some time ago that, like you said, for example, if I request a package that is not present in any repository that I'm using as a client, and the server, of course, the server has a lot of clients, so it knows basically every possible repository there can be, because it knows a few repositories from this client, a few from this client, and so on. So, yes, in the future, we would like to store all these repositories somewhere else, for example, away from the client database. And if the client requests a package that is not available through his own repositories, then the server will, as you said, assume that maybe he should tell the client to first allow this repository, and then try to request it again, then it will be solved. Another question? I guess that this is the correct... This is a really good point, because Microsoft solved it, let's say, one month ago. Did I? Like vji. Yes, the search should be there. Actually, we were trying to do it before the conference, but we had exams and so on, we were out of time. But the server should somehow do the same operation as DNF does. So, it should try to find the best possible form of the request, Vyžovat se, že vždyť to, že si tady necháme. Ať si to, že si to, že teď to lidí se vytvořilo, že se to budete vytvořilo, že si to, že se to děláte, že to, že se to dělat, že se to děláte. A takhle bychom byly vládný, že se to děláte. Ať se to děláte, že si to děláte. než si se dělat nejlepšinnou dělámi dělámi dělámi v dnešti, v po roles, kterou bych měl dělat, do některého dělámi dělámi dělámi dělámi dělámi dělámi dělámi dělámi dělámi dělámi dělámi dělámi dělámi dělámi dělámi dělámi dělámi dělámi Vždy, to je velmi dobré ideo. My nadážetem to neviggili, dějme. Teď myslím, že to [(vždy to bych bych bych měl děláosti. To potom bylo zvukat. Jsem vždyž jen, že se to nejlepší. A když někdo vždyž, potom bylo zvukat do snepsho. Někdo nespoň nejlepší a my než jsme nejlepší kapacitiv. Je to vždyž jen vždyž zvukat. Někdo nespoň nejlepší. Vypadáme na to, že je to velice zvukat. Vždyž jsem vždyž na půlící, které byli zvukat. V sejch pro vám neuhned nezafláme s ním, když malo poškodil než než celé hodiny. Skupaně, odpíště, bude se mět výabí hirat z problám, jen dnf, zrestovat bugzy a vzájemní srovna cvížky, že nesloužíme to doplikat dnf. Znovu nevím, jak bych vzáte další závod s testovům a tím je mět nal. Tady nejde to určit k ráda. Florian, když jsem však však mělo, ale... Málo všechno, že se o dependentě. Mám v tom, že s ním nevětká dátatou, když jsme zájtívali, když jsme zájtívali, když jsme v něm nevěděli. Ne, ne. Máme to, protože jsme se všechno vzájící na výšch výšch výšch a než jsme nám nejlepšit výšch devices, než jsme než než se výšch serveru. Takže, tak, tak, já vzhledam. Vypšel jen výšch výšch? Tak. Já vyskla jsem někdo výšch. Jak vždyš. Já vyskla jsem výšch výšch výšch 23, vyskla jsem výšch. Náš výšch, nechci dělal 1 mnoha. A na mějí svojí dělal 10 minut, 20 minut. A jsem vyskla jsem výšch výšch. Já vyskla jsem výšch výšch na výšch výšch a to vůž se nám závodnit výšch 5 minut. JsouDC. To víte. Em Islands. Svěděivá, že ma taka oba missile na zaten Rogers a už t revived. Kolice vytvořilo d tenha výšch 23 do jogou. Diae dropping to to nám závodnit výšch výšch výšch, ale s dnfem. Jsou. Já mám 10-13 repozitorů a vytvoříme na to, když vytvoříme. Jsou takhle dnes. Jsou takhle dnes. Ale... Jsou takhle... Jsou takhle... Jsou takhle... Jsou takhle... Jsou takhle... Jsou... MUCH obyžu... Jsou takhle. Jsou takhle. Jsou takhle. P Carry A taught image. Bychom dát výpat... P moisnit´s svet... Protožek je o tom, které je zvukování a dělá s tím, jak se zvukování zvukování na redhead-networku. My necháme říkali, co to je zvukování, které je os3 a zvukování. My necháme se, které je zvukování, které je zvukování, které je zvukování, které je zvukování, které je zvukování. Protožek je vstupaní na redhead-networku, které je o tom, které je zvukování, které je zvukování na redhead-networku. Protožek je vstupaní na redhead-networku, které je zvukování na redhead-networku. Jsme o nějaké přijetnost. Not really, not right now. Well, last question please. Give me a moment, guys. Yeah, But I have a good point. I see that, we never talk about Libhiv. Like Richard Hughes introduced, this is some co-position with Libra, with Jorge and stuff. I had a discussion with Richard Hughes když jste vysvědětávali výdět a Libhiv nebo vysvědětávali jste nevětávali, když jste vysvědětávali, když jste vysvědětávali. ale můžeme projít api. Děkáme, že to je projekt a to je nejvědět, které můžeme projít. Můžeme, že můžeme. Děkáme. Děkáme, že můžeme projít. Děkáme.