■ SEARCH.EXE
    linux

    Pacman, APT and dpkg: Under the Hood

    Package managers are often reduced to a few commands: install, update, remove. But behind those commands sits a much larger system involving repository metadata, dependency graphs, local package databases, binary archives, source packages and build tooling. In this article, we will start from the user-facing commands of pacman, APT and dpkg, then progressively move underneath them: how packages are queried, downloaded and tracked, how dependencies are represented, how .deb and source packages are structured, and finally how packages are rebuilt and managed at a lower level. Fair warning: this one goes deep. But if you have the guts to read through it, you should come out with a much stronger understanding of package managers. And that kind of understanding transfers surprisingly well to programming in general: separation of responsibilities, metadata-driven…

    linux

    Installing Gentoo the Hard Way

    In this article, we'll proceed to install Gentoo. This article follows the story of manually installing Linux distros which begins here https://julienlargetpiet.tech/articles/manually-installing-arch-and-void-linux-on-the-same-disk-with-uefi-and-grub.html where non Gentoo relative commands are explained in depth. Indeed, we'll focus on Gentoo specific architecture here. Setup We'll download the ISO here: https://distfiles.gentoo.org/releases/amd64/autobuilds/current-install-amd64-minimal/. Choose the adequat architecture, for me it's amd64. Now, just copy the ISO onto an USB stick, or use Ventoy if you want. For me I just do: Copy sudo dd if=/path/to/iso of=/dev/sdb conv=fsync bs=4M status=progress Where /dev/sdb is of course my USB stick. Now I just plug the USB stick onto my PC and boot onto it. Hmm, you probably won't have this problem, but my screen cropped the tty and no way to fix this at this point, so I'll pipe the…

    linux

    Installing OpenBSD the Hard Way

    In this article, we'll go through the manual installation of OpenBSD and see the differences and similarities with Linux. The setup We'll directly download the latest image of OpenBSD, at the time the version 7.9 and copy it to a USB stick, you can also use Ventoy if you want. In Linux, we have the dd command to copy the entirety of an image to an external disk. Copy sudo dd if=install79.img of=/dev/sdX bs=4M status=progress conv=fsync Replace /dev/sdX by the name of your usb-stick, you can see it with lsblk or sudo fdisk -l. Booting After putting the usb stick to the PC you want to install OpenBSD to, choose to boot from this USB stick on its BIOS. Now, you'll be prompted the following: Copy Welcome to the OpenBSD/amd64…

    linux

    Manually Installing Arch and Void Linux on the Same Disk with UEFI and GRUB

    In this article, we'll deep dive into the manual installation of multi-distrributions in one disk. The Setup We'll install Arch And Void Linux on the same disk. In this case that's an external hard-drive that we'll plug into a computer through USB. So, we'll download the ISOs, wether each one on a separate USB stick or use Ventoy to install the 2 ISOs on the same USB stick. Targeting the hard-drive First, we boot into the Void live environment, here all is oaded into the RAM. So we first need to identify the hard-drive we'll install the 2 distribution into. We run: Copy lsblk -o NAME,SIZE,TYPE,MOUNTPOINTS,PARTUUID,PARTLABEL,LABEL,MODEL,VENDOR,SERIAL,TRAN Output: Copy NAME SIZE TYPE MOUNTPOINTS PARTUUID PARTLABEL LABEL MODEL VENDOR SERIAL TRAN sda 447.1G disk Samsung SSD 870 EVO 500GB ATA S6PXXXXXXXXX sata…

    linux

    I Just Wanted Wi-Fi to Work on Linux

    About a week ago, I needed to set up a laptop for my mum to use while working remotely. The initial plan sounded trivial: install Debian, GNOME, connect it to Wi-Fi, and call it a day. Of course, the Wi-Fi part turned out to be considerably more interesting. The connection provided by the laptop's internal Wi-Fi adapter was slow and unstable, so instead of simply opening Speedtest and accepting whatever number it gave me, I started investigating what was actually happening. That investigation progressively took me through several layers of the Linux networking stack. First, we'll measure the quality of the connection ourselves using curl, ping, Bash and AWK. We'll separate DNS resolution, TCP connection establishment, TLS negotiation, server response time and transfer time, then calculate averages and standard deviations…

    linux

    AWK: The Small Language That Quietly Became a Data Engine

    There is a moment every engineer hits. You're staring at a text file-logs, CSVs, metrics, something messy-and you think: "I just need to extract, filter, compute, group, maybe transform a few columns…" You reach for Python. Maybe Rust. Maybe even spin up a dataframe. And then someone types a one-liner with awk. It runs instantly. It's readable. It's correct. And you realize: AWK is not a tool. It's a streaming data engine disguised as a scripting language. This article is a deep dive—from first principles to advanced patterns—so you don't just use AWK, but start thinking in it. 1. The Core Idea: Pattern → Action At its heart, AWK is built around a deceptively simple idea: Copy pattern { action } Which translates to: "For each line, if the pattern…

    linux

    Sed, a powerfull mini-language from the 70s

    There's a moment when using sed stops feeling like typing weird incantations… and starts feeling like you're programming a living stream of text. At first, it looks like this: Copy sed '1,2p' file And you think: "ok… print lines 1 and 2… neat, but whatever" But if you stay with it — if you push just a bit further — you discover something unexpected: sed is not a command. It is a language. A small one. A strange one. But a real one --> with control flow, memory, and a model of execution. And that's how you end up writing things like: script.sed Copy /./H /^$/ { x /./ { s/\n/ /g s/^ // p } } $ { x s/\n/ /g s/^ // /./ { p } } Copy…

    linux

    Logrotate for Nginx: Understanding missingok, notifempty, sharedscripts, prerotate, postrotate (and switching to size-based rotation)

    If you run Nginx in production, your access and error logs can grow fast. On most Linux systems, log rotation is handled by logrotate. It periodically renames log files (e.g. access.log → access.log.1), optionally compresses old ones, and (critically) tells Nginx to reopen its log file descriptors so it starts writing to the new files. This article explains the most common directives you’ll see in /etc/logrotate.d/nginx (or similar), why they exist, and how to safely switch from time-based rotation (daily/weekly) to size-based rotation. Where log rotation comes from On Debian/Ubuntu systems, rotation typically runs via a systemd timer (or historically via cron). The timer triggers logrotate, which reads configuration files under /etc/logrotate.conf and /etc/logrotate.d/*. A typical Nginx logrotate config (daily rotation) Copy /var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress…