 So yesterday, I was facing a major dilemma. I got up yesterday morning and I noticed I had a bunch of emails from the AUR, the Arch User Repository, notifying me that several of my packages in the AUR had been removed. They had been deleted and the person deleting them, he listed the reason they were being deleted is because they were for a single person, one user, me, and because they were my suckless builds. And he says, these don't belong in the AUR because they're just for you. And I tried to explain to the guy that it wasn't just for me. I don't actually need my builds of DWM and ST and Dmendu in the AUR for my personal use because I have the source code on my host machine. Why do I need them in the AUR for me? I have them in the AUR for other people to use and many, many people do use my suckless builds from the AUR and it's unfair that the AUR has removed those packages. It's unfair to you guys. It's not unfair to me because of course I've still got the source code on my machine. So I needed to find a solution to help you guys out that actually use those packages. So my solution was I decided I'm just going to create my own repository of Arch packages just to maintain those builds, those suckless builds, and maybe other packages that maybe the AUR deems unworthy to actually be in the AUR. So today I'm going to show you exactly what I did to set this up, how you guys can host your own Arch repository over on GitHub or GitLab. And the reason I'm going to do this on video and why I want to share it with you guys today is because I know not everybody will want to do this, but there's almost no documentation on how to do this. And it was frustrating for me to get this done yesterday. I started at 10 o'clock in the morning and I didn't finish till 8 p.m. last night because I just couldn't find any documentation at all on how to do this. I had to do a lot of trial and error and in many cases, just some guesswork to get this done. So I know other people will eventually want to do this and be scouring the internet for information like I was doing yesterday. And hopefully in the future, those people looking for this kind of information will find this video. So I had about four packages that were deleted from the AUR yesterday. One of them is DWM-distrotube.git. You can see that page is no longer here. ST-distrotube-git is also no longer here. That was my build of the ST terminal. I also had my builds of DWM blocks and my build of the menu. So I had four packages really that I needed to do something with. So what I did is I went to my GitLab and I created a new repository. I called it DT-arch-repo, a repository for my Arch Linux packages. And let me show you exactly what you need to do to set this up. So you guys, if you already have a GitLab account or a GitHub account, create a repository and name it whatever it is you want to name it. So let me switch over to my desktop and I'm going to open up a graphical file manager here to show you guys exactly what I'm doing here. So I created the DT-arch-repo repository on my GitLab. And then I cloned it here locally on my machine. Now in this empty repository, what I did is I created a folder called x8664. Now that is the architecture of the packages. So that could be x8664 or i686 or ARM or whatever it is. Any typically is another popular architecture in a Arch package build. And you can have multiple of these directories with multiple architectures. For me, I'm just doing four packages. All of them are going to be x8664. So that's the only directory I created. And in this directory, I threw the four packages that I needed. So these packages here, my builds of D-Menu, DWM Blocks, DWM and ST, and in the package.tar.zst format. So when you run make package on your package builds, you know, it creates this compressed archive typically by default now in Arch. It's ZST compression. So I put those four packages in here, but then I needed two other packages. These two packages here, which are the name of the repository dot DB and the name of the repository dot files. How do you get those? Well, this was one of the really tricky things that kind of tripped me up, actually, because looking at the documentation for how to do this, I was able to find the command that would create these files. Let me delete these files. That way you can see what happens when I create them. So initially you create your folder for your architecture. In my case, x8664. And then you throw all of these package.tar.zst or whatever compressed format that you've decided to export these things to. And then let me CD back into that directory. Let me CD into my GitLab dash repos directory. And this is DT dash Arch dash repo and doing LS. And yeah, let me CD into the x8664 directory. And there are those four ZST files. And then the command you need to run is repo add. And then let me make this full screen so you guys can see this repo add name of repository dot DB dot. And then whatever compression you want to use on the database. I use tar dot GZ, just a standard compression that a lot of people use for the database files. And then I did the asterisk sign, meaning what do I want to go in the database? I want all of my package builds that were package tar dot ZST. That's what the asterisk means. It means every file that ends in dot PKG tar dot ZST. So let me run that command and you can see it's adding packages to the database and it creates the database. So now I have four files it creates. So it creates these two files, which are the arch repo dot DB dot tar GZ and the DT dash Arch dash repo dot files dot tar GZ. And then it creates some links to both of them. And this is where things get a little weird. This tripped me up for hours yesterday because I thought that was all I needed to do from here on. All I needed to do was do a get push to my get lab. And then after that, I needed to add the URL to my get lab to my Pacman dot com. So let's do that. Let me get into sudo vim slash etsy, not make package dot com. That's something else. How about Pacman dot com and give it my root password here. And if I go to the very last line of my repositories here, you can see you have your standard arch repositories toward the top. The core extra for me is turned on. The community repositories also turned on multi lib. If you need a 32 bit applications to also run on your machine. And then because I run Arco Linux, Arco Linux has several repositories, their own custom repositories added. And then finally, I added my repository. DT dash arch dash repo is the name of the repository. And it has to be exactly the name of the repository, meaning that's this name right here in get lab. So that's what needs to be inside those square brackets. And then SIG level. So this is do the packages need to be signed? I made it optional. Optional is the default on arch because I didn't create any kind of a SIG files or anything. So I didn't want it to check for PGP keys or anything like that. So it's optional. And then, of course, the important line is this one right here server. It's like, hey, where is it going to find these packages? You know, where is this repository? In my case, it's this URL here, which is get lab dot com slash DWT one, which is my get lab slash dollar symbol repo dollar symbol repo is a variable for this year. And then in my case, I gave it the raw address to the arc variable, which is x 86 64. Actually, it could be a variety of things. But in my case, I just have x 86 64. And it needs to be the raw links from your GitHub or your get lab. What is raw, it means it's not a formatted text in any way. And basically, it's just the plain text. Now, the tricky part is getting the raw links from GitHub or get lab. And it's actually pretty easy once you know how to do it. So if I go over to my get lab, typically what you want to do is find a plain text file somewhere in the repository. This org document might read me as plain text. And if I want to, one of these links here will say raw. That one there, it says open raw. And that actually just opens it again as plain text as raw data. That's not formatted in any way. And that gives me the actual link, which is get lab.com slash DWT one slash DT dash arch dash repo slash dash slash raw slash master slash read me dot org. It's a very long URL, but that gives me an idea of the format that I needed to use here. And then I just replaced a DT dash arch dash repo with the variable dollar sign repo. And then, of course, dollar sign arch for x86 underscore 64. Now, I thought that's all I needed to do it at that point. I thought, you know, once I had all of this on get lab in that repository and then I had this, you know, pointing pacman to that repository, I should just be able to do a sudo pacman dash syu and everything would be just lovely. And then, but no, I was getting errors saying that it had a problem with this archived format. As a matter of fact, let me show you this in action. So what I'm going to do is I'm going to CD up a level and I'm going to get add dash you. So we're actually going to do it an update. I'll go ahead and add everything and I'm going to do a commit. And then let's do a get push. And this will actually break things, but this will show you the error that I was getting. Now that I've pushed all of this to my get lab. Now let me do a sudo pacman dash syu update the let's resync the repositories before we try to do the update. And of course, these are the errors I get. And I couldn't figure this out because it says it could not open slash var slash lib slash pacman slash sync slash DT dash arch dash repo dot DB. It's an unrecognized archive format. It's like, how is it an unrecognized archive format? It's tar GZ. I tar GZ has been supported in arch since the beginning. And then I decided, you know what? I would recreate these and I created them as tar dot XZ. Still, I was getting unrecognized format. I even tried them as tar ZSTs similar to the package files themselves. Again, unrecognized archive format. I couldn't figure out what was going on. And then it finally dawned on me that these sim links. Why do I have these sim links here? These sim links are actually what is getting placed here. So that sim link to DT dash arch dash repo dot DB is actually what is being put in that directory rather than the archive itself rather than the actual archive. So what solved this problem for me was I got rid of these files. These sim links, we don't need them. And really, this was just kind of a guess on my part, but it actually worked. I got rid of the sim links and then I renamed the tar dot GZs. I got rid of the extension. And let me rename the extension for both the DB file and the files file. And then once I did that, let's repush to my GitLab. So I'm going to do a git add dash u for update and get commit. Let's do a git checkout just to see, you know, OK, just making sure to get push. And now when I do sudo pacman dash capital S Y Y U. Hopefully everything works out. It's possible I still get an error. No, I didn't. And then I could take that update, but I will decline that update. So that fixes the problem. So you won't find that tip anywhere online about the sim links, deleting them and then renaming the tar dot GZs, you know, without the extension, you won't find that tip anywhere. And that really cost me hours yesterday. But now that I have done that, we're good to go. Now I have, again, my own repository over on GitLab. Right now, all I'm doing is I am just hosting my own package builds, because I've already, as soon as I've created the empty repository and started working on it, you see, I already have two issues. So people already started asking, Hey, man, can I put my package builds here? I don't know if I want to be responsible for a repository with other people's stuff in it right now. It's just for my stuff. Maybe at some point we may open it up to more packages other than just my personal package builds. But for right now, I just needed something up for those people. I know there's some people that out there that use, especially my D menu, my SD and a lot of people do use my build of DWM as well. And, you know, they're going to be wondering why now when they're trying to install it from the AUR with something like EA or Paru, hey, that package is no longer there. Well, now that we've got that settled, by the way, and just to wreak hash, how exactly you actually get this repository enabled, that slash etsy slash pac-man.com. Again, you need to add that line that's not just for me. That's for you guys that want to use this repository. You need to add these three lines here and then run sudo pac-man dash capital S Y Y U to re-sync all your repositories or your mirrors and then run an update. And then once you do that, you should find a D menu dash distro tube dash yet and DWM dash distro tube dot get and all of that in your repositories. Now you should be able to install those packages. I just to verify that I actually could do that on camera. Let me zoom in just to ensure that it's working since I did kind of play around a little bit. Let me do D menu dash distro tube dash get, which is no longer in the A U R. So but it is available to install with pac-man because I'm pointing it to that extra repository over on my get lab. So and to verify that the menu works, there is D menu right there. If I wanted to open a lacquerty from D menu. So crisis averted is probably something I needed to do anyway. I'm not I'm not upset that they removed those packages from the A U R. I'm upset that maybe it caused some of you guys some pain, hopefully not. I was able to get the new repository up and working within a about 24 hours or so from those packages being removed. So hopefully a little downtime shouldn't have bothered anybody. And now hosting my own arch repository is probably something I was eventually going to need to do for some stuff anyway. So it was a good learning experience. And hopefully you guys, if you guys want to do the same thing, host your own repository. It doesn't even have to be a public repository. It can just be stuff for you, right? If you got a GitHub account or a get lab account, it's really easy, or at least it's really easy to do this now that somebody's actually explained how to do it. Now, before I go, I need to thank a few special people. I need to thank the producers of the show, Ebsi, Dallas, Gabe, Lou, Mitchell, Alan, a Commie, Archfinger 30, Chuck David, the other David Dillon, Gregory, Lewis, Paul, Paulie, Tech, Scott, Steven, Sven, Wes, and Willie. They are the producers of this episode. Without these guys, you wouldn't know how to host your own arch repository on GitHub or get lab. You wouldn't know about it. The show is also brought to you by each and every one of these ladies and gentlemen as well. All these names you're seeing on the screen right now, these are all my supporters over on Patreon, because I'm sponsored by you guys, the community. If you'd like to help support my work, I'd appreciate it. Look for DistroTube over on Patreon. All right, guys, peace. At this point, I might as well start my own Distro.