#pacman — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #pacman, aggregated by home.social.
-
Pac-Man: History, Gameplay & Why This Classic Arcade Game Is Still Popular
Discover the history of Pac-Man, released in 1980 by Namco. Learn how the gameplay works, how the ghosts behave, and why this classic arcade game is still popular today.
Read more: https://www.mastanet.com/article/pac-man-history-gameplay-1980
#pac #man #pacman #1980 #arcade #game #namco #gameplay #ghosts #blinky #pinky #inky #clyde #classic #games #retro #gaming #history #level #256 #kill #screen
-
Pac-Man: History, Gameplay & Why This Classic Arcade Game Is Still Popular
Discover the history of Pac-Man, released in 1980 by Namco. Learn how the gameplay works, how the ghosts behave, and why this classic arcade game is still popular today.
Read more: https://www.mastanet.com/article/pac-man-history-gameplay-1980
#pac #man #pacman #1980 #arcade #game #namco #gameplay #ghosts #blinky #pinky #inky #clyde #classic #games #retro #gaming #history #level #256 #kill #screen
-
Pac-Man: History, Gameplay & Why This Classic Arcade Game Is Still Popular
Discover the history of Pac-Man, released in 1980 by Namco. Learn how the gameplay works, how the ghosts behave, and why this classic arcade game is still popular today.
Read more: https://www.mastanet.com/article/pac-man-history-gameplay-1980
#pac #man #pacman #1980 #arcade #game #namco #gameplay #ghosts #blinky #pinky #inky #clyde #classic #games #retro #gaming #history #level #256 #kill #screen
-
Pac-Man: History, Gameplay & Why This Classic Arcade Game Is Still Popular
Discover the history of Pac-Man, released in 1980 by Namco. Learn how the gameplay works, how the ghosts behave, and why this classic arcade game is still popular today.
Read more: https://www.mastanet.com/article/pac-man-history-gameplay-1980
#pac #man #pacman #1980 #arcade #game #namco #gameplay #ghosts #blinky #pinky #inky #clyde #classic #games #retro #gaming #history #level #256 #kill #screen
-
Pac-Man: History, Gameplay & Why This Classic Arcade Game Is Still Popular
Discover the history of Pac-Man, released in 1980 by Namco. Learn how the gameplay works, how the ghosts behave, and why this classic arcade game is still popular today.
Read more: https://www.mastanet.com/article/pac-man-history-gameplay-1980
#pac #man #pacman #1980 #arcade #game #namco #gameplay #ghosts #blinky #pinky #inky #clyde #classic #games #retro #gaming #history #level #256 #kill #screen
-
Sundry Sunday: Pac-Man Snack Breaks
Bandai Namco has yet another new Pac-Man cartoon series, I think this is the fourth? This one is a monthly series of short (not Short) Youtube videos called Snack Breaks.Namco's commissioned a bunch of sidelines based on their characters. Anyone else remember Shiftylook? None of them seem to last for long, and they seem to hav
https://setsideb.com/sundry-sunday-pac-man-snack-breaks/
#sundaysundry #animation #namco #pacman #SnackBreaks #sundrysunday -
Sundry Sunday: Pac-Man Snack Breaks
Bandai Namco has yet another new Pac-Man cartoon series, I think this is the fourth? This one is a monthly series of short (not Short) Youtube videos called Snack Breaks.Namco's commissioned a bunch of sidelines based on their characters. Anyone else remember Shiftylook? None of them seem to last for long, and they seem to hav
https://setsideb.com/sundry-sunday-pac-man-snack-breaks/
#sundaysundry #animation #namco #pacman #SnackBreaks #sundrysunday -
Sundry Sunday: Pac-Man Snack Breaks
Bandai Namco has yet another new Pac-Man cartoon series, I think this is the fourth? This one is a monthly series of short (not Short) Youtube videos called Snack Breaks.Namco's commissioned a bunch of sidelines based on their characters. Anyone else remember Shiftylook? None of them seem to last for long, and they seem to hav
https://setsideb.com/sundry-sunday-pac-man-snack-breaks/
#sundaysundry #animation #namco #pacman #SnackBreaks #sundrysunday -
Saturday Morning Cartoons: PAC-MAN: Snack Breaks | Ep 1: Welcome to New PAC-City
The PAC is BAC
https://www.sidequesting.com/2026/05/saturday-morning-cartoons-pac-man-snack-breaks-ep-1-welcome-to-new-pac-city/
#News #Television #TV #Videos #BandaiNamco #cartoon #Namco #pacman #SaturdayMorningCartoons #Television #TV -
Pac-man is getting set up in New Pac City. And like any city, it's got a few drawbacks. Noise sensative neighbors. Iffy mail system. And social delinquent ghosts.
Name a city that doesnt have that.
-
This is the start of a series of shorts officially produced by BandaiNamco. It is animated by #Cartuna. -
Pac-man is getting set up in New Pac City. And like any city, it's got a few drawbacks. Noise sensative neighbors. Iffy mail system. And social delinquent ghosts.
Name a city that doesnt have that.
-
This is the start of a series of shorts officially produced by BandaiNamco. It is animated by #Cartuna. -
Pac-man is getting set up in New Pac City. And like any city, it's got a few drawbacks. Noise sensative neighbors. Iffy mail system. And social delinquent ghosts.
Name a city that doesnt have that.
-
This is the start of a series of shorts officially produced by BandaiNamco. It is animated by #Cartuna. -
Pac-man is getting set up in New Pac City. And like any city, it's got a few drawbacks. Noise sensative neighbors. Iffy mail system. And social delinquent ghosts.
Name a city that doesnt have that.
-
This is the start of a series of shorts officially produced by BandaiNamco. It is animated by #Cartuna. -
Traditionally for you an example of Unreal Engine material. This time from my 11 year old son. I place some copies of his work in my secret place. Pac-Man always in our hearts!
https://www.youtube.com/@alienmax-repository
#gamedev #UnrealEngine #UE5 #indiedev #gamedevelopment #education #shader #pacman
-
Traditionally for you an example of Unreal Engine material. This time from my 11 year old son. I place some copies of his work in my secret place. Pac-Man always in our hearts!
https://www.youtube.com/@alienmax-repository
#gamedev #UnrealEngine #UE5 #indiedev #gamedevelopment #education #shader #pacman
-
Traditionally for you an example of Unreal Engine material. This time from my 11 year old son. I place some copies of his work in my secret place. Pac-Man always in our hearts!
https://www.youtube.com/@alienmax-repository
#gamedev #UnrealEngine #UE5 #indiedev #gamedevelopment #education #shader #pacman
-
Traditionally for you an example of Unreal Engine material. This time from my 11 year old son. I place some copies of his work in my secret place. Pac-Man always in our hearts!
https://www.youtube.com/@alienmax-repository
#gamedev #UnrealEngine #UE5 #indiedev #gamedevelopment #education #shader #pacman
-
Traditionally for you an example of Unreal Engine material. This time from my 11 year old son. I place some copies of his work in my secret place. Pac-Man always in our hearts!
https://www.youtube.com/@alienmax-repository
#gamedev #UnrealEngine #UE5 #indiedev #gamedevelopment #education #shader #pacman
-
Avui és el vintè aniversari de la publicació a casa nostra de "Namco Museum 50th Anniversary" per "Windows" 🕹🎮. #NamcoMuseum50thAnniversary #PacMan #Galaga #Windows #Shooter #Arcade #Videojocs #Gaming #VideoGames #RetroGaming #ClassicGaming #RetroGames
-
Avui és el vintè aniversari de la publicació a casa nostra de "Namco Museum 50th Anniversary" per "Windows" 🕹🎮. #NamcoMuseum50thAnniversary #PacMan #Galaga #Windows #Shooter #Arcade #Videojocs #Gaming #VideoGames #RetroGaming #ClassicGaming #RetroGames
-
Avui és el vintè aniversari de la publicació a casa nostra de "Namco Museum 50th Anniversary" per "Windows" 🕹🎮. #NamcoMuseum50thAnniversary #PacMan #Galaga #Windows #Shooter #Arcade #Videojocs #Gaming #VideoGames #RetroGaming #ClassicGaming #RetroGames
-
Avui és el vintè aniversari de la publicació a casa nostra de "Namco Museum 50th Anniversary" per "Windows" 🕹🎮. #NamcoMuseum50thAnniversary #PacMan #Galaga #Windows #Shooter #Arcade #Videojocs #Gaming #VideoGames #RetroGaming #ClassicGaming #RetroGames
-
Avui és el vintè aniversari de la publicació a casa nostra de "Namco Museum 50th Anniversary" per "Windows" 🕹🎮. #NamcoMuseum50thAnniversary #PacMan #Galaga #Windows #Shooter #Arcade #Videojocs #Gaming #VideoGames #RetroGaming #ClassicGaming #RetroGames
-
Packet – Dot Gobbler for NES by Joe Sherman
When a Pac-Man fan makes their own game.
Help Packet collect raisins, dodge sheet-covered ghosts, and solve riddles in a strange beach house to find his missing brother. Secret levels included.
https://www.kickstarter.com/projects/jd3/packet -
Packet – Dot Gobbler for NES by Joe Sherman
When a Pac-Man fan makes their own game.
Help Packet collect raisins, dodge sheet-covered ghosts, and solve riddles in a strange beach house to find his missing brother. Secret levels included.
https://www.kickstarter.com/projects/jd3/packet -
Packet – Dot Gobbler for NES by Joe Sherman
When a Pac-Man fan makes their own game.
Help Packet collect raisins, dodge sheet-covered ghosts, and solve riddles in a strange beach house to find his missing brother. Secret levels included.
https://www.kickstarter.com/projects/jd3/packet -
Packet – Dot Gobbler for NES by Joe Sherman
When a Pac-Man fan makes their own game.
Help Packet collect raisins, dodge sheet-covered ghosts, and solve riddles in a strange beach house to find his missing brother. Secret levels included.
https://www.kickstarter.com/projects/jd3/packet -
Packet – Dot Gobbler for NES by Joe Sherman
When a Pac-Man fan makes their own game.
Help Packet collect raisins, dodge sheet-covered ghosts, and solve riddles in a strange beach house to find his missing brother. Secret levels included.
https://www.kickstarter.com/projects/jd3/packet -
-
Shelly 2.3 aggiorna il package manager alternativo per Arch Linux con miglioramenti prestazionali, supporto traduzioni e gestione AUR più avanzata 🚀
#ArchLinux #Linux #OpenSource #Pacman #AUR #Flatpak #CachyOS -
Taric a pac-man inspired browergame by me
https://coa-100.itch.io/taric
#videogames #pcgaming #browsergames #pacman -
Taric a pac-man inspired browergame by me
https://coa-100.itch.io/taric
#videogames #pcgaming #browsergames #pacman -
اللعبة الأكثر مبيعاً من كل جيل من أجهزة الألعاب من الجيل الأول للجيل الرابع. #games #ألعاب # #Pacman #Supermario https://www.saudigamer.com/best-selling-game-from-each-console-generation/
-
With Hall Effect thumbsticks, impulse triggers, and two types of glow, bring the spirit of the arcade to your controller with the PAC-MAN Special Edition PowerA Wireless Controller. On sale now: amzn.to/4rxDWx0 #Games #RetroGaming #Xbox #Arcade #PacMan #BandaiNamco #GameDev #GamingSky #PromoSky
-
With Hall Effect thumbsticks, impulse triggers, and two types of glow, bring the spirit of the arcade to your controller with the PAC-MAN Special Edition PowerA Wireless Controller. On sale now: amzn.to/4rxDWx0 #Games #RetroGaming #Xbox #Arcade #PacMan #BandaiNamco #GameDev #GamingSky #PromoSky
-
With Hall Effect thumbsticks, impulse triggers, and two types of glow, bring the spirit of the arcade to your controller with the PAC-MAN Special Edition PowerA Wireless Controller. On sale now: amzn.to/4rxDWx0 #Games #RetroGaming #Xbox #Arcade #PacMan #BandaiNamco #GameDev #GamingSky #PromoSky
-
With Hall Effect thumbsticks, impulse triggers, and two types of glow, bring the spirit of the arcade to your controller with the PAC-MAN Special Edition PowerA Wireless Controller. On sale now: amzn.to/4rxDWx0 #Games #RetroGaming #Xbox #Arcade #PacMan #BandaiNamco #GameDev #GamingSky #PromoSky
-
With Hall Effect thumbsticks, impulse triggers, and two types of glow, bring the spirit of the arcade to your controller with the PAC-MAN Special Edition PowerA Wireless Controller. On sale now: amzn.to/4rxDWx0 #Games #RetroGaming #Xbox #Arcade #PacMan #BandaiNamco #GameDev #GamingSky #PromoSky
-
https://www.wacoca.com/games/1375515/ 「アーケードアーカイブス」シリーズ12周年記念セールがスタート。「パックマン」「ギャラガ」「源平討魔伝」「ドラスピ」などナムコ15作品が30%オフ – 4Gamer.net ##GAMING #Game #GameNews #games #GamingNews #NintendoSwitch:アーケードアーカイブスギャラガ #NintendoSwitch:アーケードアーカイブスパックマン #NintendoSwitch:アーケードアーカイブス源平討魔伝 #PacMan #pacman #PS4:アーケードアーカイブスギャラガ #PS4:アーケードアーカイブスパックマン #ゲーミング #ゲーム #ゲーム攻略 #ゲーム最新情報 #プラットフォーム:NintendoSwitch #プラットフォーム:PS4 #掲載日:2026/05/1320:09 #編集部:簗島 #記事種別:セール情報 #記事種別:ニュース
-
When two Hetzner servers died at the same time
On May 12, 2026, two of my Arch Linux + LUKS servers at Hetzner became unreachable at the same moment. Both had been running for 4+ months without issue. Both had received the same
pacman -Syyuthe day before, but had stayed on the old kernel until the morning the websites stopped responding. I rebooted — SSH never came back.nmap -Pn -p 22showedfilteredfrom anywhere. No ping. No banner. The Hetzner Robot panel insisted the hardware was fine.Several hours went into hypotheses that turned out to be wrong:
- The
encryptsshinitcpio hook referencing a/usr/lib/initcpio/udev/11-dm-initramfs.rulesfile that no longer exists. Real bug, no boot impact — the initramfs rebuilds anyway. PermitRootLogin noinsshd_config. Real misconfiguration, fixed it, didn’t help. A refusing sshd showsclosed, notfiltered.- Predictable interface-naming drift after the systemd 260 upgrade. Patched the
.networkconfig to match by MAC. Useful hardening; not the cause. - Stale GRUB stage1 +
core.imgin the MBR. Arch never re-runsgrub-installafter agrubpackage upgrade. Refreshed it. Still filtered. - Kernel 7.0.5 regression. Downgraded to 6.18.3, the kernel that had run for 4 months. Still filtered. So the kernel itself wasn’t it either.
The clue was in the persistent journal: a single recorded boot from December 31 to May 12 10:13 UTC, and absolutely nothing after. Every reboot since the upgrade was failing before
systemd-journaldcould flush to disk — so the failure had to be in the initramfs, before the root filesystem was even mounted.What it almost certainly was
Hetzner Dedicated servers configure the initramfs network with
ip=dhcpon the kernel command line. That depends on Hetzner’s DHCP server replying to whatever request format the current kernel sends. Somewhere between kernel 6.18 / iproute2 6.18 and kernel 7.0 / iproute2 7.0, the request format changed enough that Hetzner’s DHCP stopped responding. Effects:- Old kernel at runtime kept the interface already configured (Phase A — 32 hours of healthy operation after the package upgrade).
- New kernel cold-boots, hits DHCP, never gets an IP, dropbear cannot listen, port 22 stays
filtered.
Hetzner’s own documentation has been quietly moving away from
ip=dhcptoward static IPv4 in the kernel command line. The fix is exactly that:GRUB_CMDLINE_LINUX="cryptdevice=/dev/md1:cryptroot ip=A.B.C.D::GATEWAY:255.255.255.255:hostname:eth0:none"One line in
/etc/default/grub,grub-mkconfig, reboot. No more dependency on Hetzner’s DHCP responding to whatever your current kernel sends.Why it matters for anyone running this stack
If you run Arch on Hetzner Dedicated with full-disk encryption and remote unlock via dropbear, the
ip=dhcpshipped byinstallimageis a latent bug. It can keep working for years and then break overnight, on every machine you have, after a routinepacman -Syyu. The static-IP version is what Hetzner now recommends and removes the entire dependency.Tooling
While debugging, I turned the whole rescue / chroot / diagnose / fix workflow into a Python CLI (
hal) — includinghal fix static-ip, which derives the static cmdline directly from your existingsystemd-networkd.networkfile:→ github.com/kevinveenbirkenbach/hetzner-arch-luks
Single command, idempotent, reversible (the original
#ArchLinux #bootFailure #debugging #DevOps #DHCP #Dropbear #fullDiskEncryption #GRUB #Hetzner #initramfs #kernelUpgrade #Linux #LUKS #mkinitcpio #pacman #postmortem #PythonCLI #serverOutage #sysadmin #systemdNetworkd/etc/default/grubis backed up to.hal-backup). If you’re on this stack, switch to static IP before the next kernel upgrade catches you. - The
-
When two Hetzner servers died at the same time
On May 12, 2026, two of my Arch Linux + LUKS servers at Hetzner became unreachable at the same moment. Both had been running for 4+ months without issue. Both had received the same
pacman -Syyuthe day before, but had stayed on the old kernel until the morning the websites stopped responding. I rebooted — SSH never came back.nmap -Pn -p 22showedfilteredfrom anywhere. No ping. No banner. The Hetzner Robot panel insisted the hardware was fine.Several hours went into hypotheses that turned out to be wrong:
- The
encryptsshinitcpio hook referencing a/usr/lib/initcpio/udev/11-dm-initramfs.rulesfile that no longer exists. Real bug, no boot impact — the initramfs rebuilds anyway. PermitRootLogin noinsshd_config. Real misconfiguration, fixed it, didn’t help. A refusing sshd showsclosed, notfiltered.- Predictable interface-naming drift after the systemd 260 upgrade. Patched the
.networkconfig to match by MAC. Useful hardening; not the cause. - Stale GRUB stage1 +
core.imgin the MBR. Arch never re-runsgrub-installafter agrubpackage upgrade. Refreshed it. Still filtered. - Kernel 7.0.5 regression. Downgraded to 6.18.3, the kernel that had run for 4 months. Still filtered. So the kernel itself wasn’t it either.
The clue was in the persistent journal: a single recorded boot from December 31 to May 12 10:13 UTC, and absolutely nothing after. Every reboot since the upgrade was failing before
systemd-journaldcould flush to disk — so the failure had to be in the initramfs, before the root filesystem was even mounted.What it almost certainly was
Hetzner Dedicated servers configure the initramfs network with
ip=dhcpon the kernel command line. That depends on Hetzner’s DHCP server replying to whatever request format the current kernel sends. Somewhere between kernel 6.18 / iproute2 6.18 and kernel 7.0 / iproute2 7.0, the request format changed enough that Hetzner’s DHCP stopped responding. Effects:- Old kernel at runtime kept the interface already configured (Phase A — 32 hours of healthy operation after the package upgrade).
- New kernel cold-boots, hits DHCP, never gets an IP, dropbear cannot listen, port 22 stays
filtered.
Hetzner’s own documentation has been quietly moving away from
ip=dhcptoward static IPv4 in the kernel command line. The fix is exactly that:GRUB_CMDLINE_LINUX="cryptdevice=/dev/md1:cryptroot ip=A.B.C.D::GATEWAY:255.255.255.255:hostname:eth0:none"One line in
/etc/default/grub,grub-mkconfig, reboot. No more dependency on Hetzner’s DHCP responding to whatever your current kernel sends.Why it matters for anyone running this stack
If you run Arch on Hetzner Dedicated with full-disk encryption and remote unlock via dropbear, the
ip=dhcpshipped byinstallimageis a latent bug. It can keep working for years and then break overnight, on every machine you have, after a routinepacman -Syyu. The static-IP version is what Hetzner now recommends and removes the entire dependency.Tooling
While debugging, I turned the whole rescue / chroot / diagnose / fix workflow into a Python CLI (
hal) — includinghal fix static-ip, which derives the static cmdline directly from your existingsystemd-networkd.networkfile:→ github.com/kevinveenbirkenbach/hetzner-arch-luks
Single command, idempotent, reversible (the original
#ArchLinux #bootFailure #debugging #DevOps #DHCP #Dropbear #fullDiskEncryption #GRUB #Hetzner #initramfs #kernelUpgrade #Linux #LUKS #mkinitcpio #pacman #postmortem #PythonCLI #serverOutage #sysadmin #systemdNetworkd/etc/default/grubis backed up to.hal-backup). If you’re on this stack, switch to static IP before the next kernel upgrade catches you. - The
-
When two Hetzner servers died at the same time
On May 12, 2026, two of my Arch Linux + LUKS servers at Hetzner became unreachable at the same moment. Both had been running for 4+ months without issue. Both had received the same
pacman -Syyuthe day before, but had stayed on the old kernel until the morning the websites stopped responding. I rebooted — SSH never came back.nmap -Pn -p 22showedfilteredfrom anywhere. No ping. No banner. The Hetzner Robot panel insisted the hardware was fine.Several hours went into hypotheses that turned out to be wrong:
- The
encryptsshinitcpio hook referencing a/usr/lib/initcpio/udev/11-dm-initramfs.rulesfile that no longer exists. Real bug, no boot impact — the initramfs rebuilds anyway. PermitRootLogin noinsshd_config. Real misconfiguration, fixed it, didn’t help. A refusing sshd showsclosed, notfiltered.- Predictable interface-naming drift after the systemd 260 upgrade. Patched the
.networkconfig to match by MAC. Useful hardening; not the cause. - Stale GRUB stage1 +
core.imgin the MBR. Arch never re-runsgrub-installafter agrubpackage upgrade. Refreshed it. Still filtered. - Kernel 7.0.5 regression. Downgraded to 6.18.3, the kernel that had run for 4 months. Still filtered. So the kernel itself wasn’t it either.
The clue was in the persistent journal: a single recorded boot from December 31 to May 12 10:13 UTC, and absolutely nothing after. Every reboot since the upgrade was failing before
systemd-journaldcould flush to disk — so the failure had to be in the initramfs, before the root filesystem was even mounted.What it almost certainly was
Hetzner Dedicated servers configure the initramfs network with
ip=dhcpon the kernel command line. That depends on Hetzner’s DHCP server replying to whatever request format the current kernel sends. Somewhere between kernel 6.18 / iproute2 6.18 and kernel 7.0 / iproute2 7.0, the request format changed enough that Hetzner’s DHCP stopped responding. Effects:- Old kernel at runtime kept the interface already configured (Phase A — 32 hours of healthy operation after the package upgrade).
- New kernel cold-boots, hits DHCP, never gets an IP, dropbear cannot listen, port 22 stays
filtered.
Hetzner’s own documentation has been quietly moving away from
ip=dhcptoward static IPv4 in the kernel command line. The fix is exactly that:GRUB_CMDLINE_LINUX="cryptdevice=/dev/md1:cryptroot ip=A.B.C.D::GATEWAY:255.255.255.255:hostname:eth0:none"One line in
/etc/default/grub,grub-mkconfig, reboot. No more dependency on Hetzner’s DHCP responding to whatever your current kernel sends.Why it matters for anyone running this stack
If you run Arch on Hetzner Dedicated with full-disk encryption and remote unlock via dropbear, the
ip=dhcpshipped byinstallimageis a latent bug. It can keep working for years and then break overnight, on every machine you have, after a routinepacman -Syyu. The static-IP version is what Hetzner now recommends and removes the entire dependency.Tooling
While debugging, I turned the whole rescue / chroot / diagnose / fix workflow into a Python CLI (
hal) — includinghal fix static-ip, which derives the static cmdline directly from your existingsystemd-networkd.networkfile:→ github.com/kevinveenbirkenbach/hetzner-arch-luks
Single command, idempotent, reversible (the original
#ArchLinux #bootFailure #debugging #DevOps #DHCP #Dropbear #fullDiskEncryption #GRUB #Hetzner #initramfs #kernelUpgrade #Linux #LUKS #mkinitcpio #pacman #postmortem #PythonCLI #serverOutage #sysadmin #systemdNetworkd/etc/default/grubis backed up to.hal-backup). If you’re on this stack, switch to static IP before the next kernel upgrade catches you. - The
-
When two Hetzner servers died at the same time
On May 12, 2026, two of my Arch Linux + LUKS servers at Hetzner became unreachable at the same moment. Both had been running for 4+ months without issue. Both had received the same
pacman -Syyuthe day before, but had stayed on the old kernel until the morning the websites stopped responding. I rebooted — SSH never came back.nmap -Pn -p 22showedfilteredfrom anywhere. No ping. No banner. The Hetzner Robot panel insisted the hardware was fine.Several hours went into hypotheses that turned out to be wrong:
- The
encryptsshinitcpio hook referencing a/usr/lib/initcpio/udev/11-dm-initramfs.rulesfile that no longer exists. Real bug, no boot impact — the initramfs rebuilds anyway. PermitRootLogin noinsshd_config. Real misconfiguration, fixed it, didn’t help. A refusing sshd showsclosed, notfiltered.- Predictable interface-naming drift after the systemd 260 upgrade. Patched the
.networkconfig to match by MAC. Useful hardening; not the cause. - Stale GRUB stage1 +
core.imgin the MBR. Arch never re-runsgrub-installafter agrubpackage upgrade. Refreshed it. Still filtered. - Kernel 7.0.5 regression. Downgraded to 6.18.3, the kernel that had run for 4 months. Still filtered. So the kernel itself wasn’t it either.
The clue was in the persistent journal: a single recorded boot from December 31 to May 12 10:13 UTC, and absolutely nothing after. Every reboot since the upgrade was failing before
systemd-journaldcould flush to disk — so the failure had to be in the initramfs, before the root filesystem was even mounted.What it almost certainly was
Hetzner Dedicated servers configure the initramfs network with
ip=dhcpon the kernel command line. That depends on Hetzner’s DHCP server replying to whatever request format the current kernel sends. Somewhere between kernel 6.18 / iproute2 6.18 and kernel 7.0 / iproute2 7.0, the request format changed enough that Hetzner’s DHCP stopped responding. Effects:- Old kernel at runtime kept the interface already configured (Phase A — 32 hours of healthy operation after the package upgrade).
- New kernel cold-boots, hits DHCP, never gets an IP, dropbear cannot listen, port 22 stays
filtered.
Hetzner’s own documentation has been quietly moving away from
ip=dhcptoward static IPv4 in the kernel command line. The fix is exactly that:GRUB_CMDLINE_LINUX="cryptdevice=/dev/md1:cryptroot ip=A.B.C.D::GATEWAY:255.255.255.255:hostname:eth0:none"One line in
/etc/default/grub,grub-mkconfig, reboot. No more dependency on Hetzner’s DHCP responding to whatever your current kernel sends.Why it matters for anyone running this stack
If you run Arch on Hetzner Dedicated with full-disk encryption and remote unlock via dropbear, the
ip=dhcpshipped byinstallimageis a latent bug. It can keep working for years and then break overnight, on every machine you have, after a routinepacman -Syyu. The static-IP version is what Hetzner now recommends and removes the entire dependency.Tooling
While debugging, I turned the whole rescue / chroot / diagnose / fix workflow into a Python CLI (
hal) — includinghal fix static-ip, which derives the static cmdline directly from your existingsystemd-networkd.networkfile:→ github.com/kevinveenbirkenbach/hetzner-arch-luks
Single command, idempotent, reversible (the original
#ArchLinux #bootFailure #debugging #DevOps #DHCP #Dropbear #fullDiskEncryption #GRUB #Hetzner #initramfs #kernelUpgrade #Linux #LUKS #mkinitcpio #pacman #postmortem #PythonCLI #serverOutage #sysadmin #systemdNetworkd/etc/default/grubis backed up to.hal-backup). If you’re on this stack, switch to static IP before the next kernel upgrade catches you. - The
-
When two Hetzner servers died at the same time
On May 12, 2026, two of my Arch Linux + LUKS servers at Hetzner became unreachable at the same moment. Both had been running for 4+ months without issue. Both had received the same
pacman -Syyuthe day before, but had stayed on the old kernel until the morning the websites stopped responding. I rebooted — SSH never came back.nmap -Pn -p 22showedfilteredfrom anywhere. No ping. No banner. The Hetzner Robot panel insisted the hardware was fine.Several hours went into hypotheses that turned out to be wrong:
- The
encryptsshinitcpio hook referencing a/usr/lib/initcpio/udev/11-dm-initramfs.rulesfile that no longer exists. Real bug, no boot impact — the initramfs rebuilds anyway. PermitRootLogin noinsshd_config. Real misconfiguration, fixed it, didn’t help. A refusing sshd showsclosed, notfiltered.- Predictable interface-naming drift after the systemd 260 upgrade. Patched the
.networkconfig to match by MAC. Useful hardening; not the cause. - Stale GRUB stage1 +
core.imgin the MBR. Arch never re-runsgrub-installafter agrubpackage upgrade. Refreshed it. Still filtered. - Kernel 7.0.5 regression. Downgraded to 6.18.3, the kernel that had run for 4 months. Still filtered. So the kernel itself wasn’t it either.
The clue was in the persistent journal: a single recorded boot from December 31 to May 12 10:13 UTC, and absolutely nothing after. Every reboot since the upgrade was failing before
systemd-journaldcould flush to disk — so the failure had to be in the initramfs, before the root filesystem was even mounted.What it almost certainly was
Hetzner Dedicated servers configure the initramfs network with
ip=dhcpon the kernel command line. That depends on Hetzner’s DHCP server replying to whatever request format the current kernel sends. Somewhere between kernel 6.18 / iproute2 6.18 and kernel 7.0 / iproute2 7.0, the request format changed enough that Hetzner’s DHCP stopped responding. Effects:- Old kernel at runtime kept the interface already configured (Phase A — 32 hours of healthy operation after the package upgrade).
- New kernel cold-boots, hits DHCP, never gets an IP, dropbear cannot listen, port 22 stays
filtered.
Hetzner’s own documentation has been quietly moving away from
ip=dhcptoward static IPv4 in the kernel command line. The fix is exactly that:GRUB_CMDLINE_LINUX="cryptdevice=/dev/md1:cryptroot ip=A.B.C.D::GATEWAY:255.255.255.255:hostname:eth0:none"One line in
/etc/default/grub,grub-mkconfig, reboot. No more dependency on Hetzner’s DHCP responding to whatever your current kernel sends.Why it matters for anyone running this stack
If you run Arch on Hetzner Dedicated with full-disk encryption and remote unlock via dropbear, the
ip=dhcpshipped byinstallimageis a latent bug. It can keep working for years and then break overnight, on every machine you have, after a routinepacman -Syyu. The static-IP version is what Hetzner now recommends and removes the entire dependency.Tooling
While debugging, I turned the whole rescue / chroot / diagnose / fix workflow into a Python CLI (
hal) — includinghal fix static-ip, which derives the static cmdline directly from your existingsystemd-networkd.networkfile:→ github.com/kevinveenbirkenbach/hetzner-arch-luks
Single command, idempotent, reversible (the original
#ArchLinux #bootFailure #debugging #DevOps #DHCP #Dropbear #fullDiskEncryption #GRUB #Hetzner #initramfs #kernelUpgrade #Linux #LUKS #mkinitcpio #pacman #postmortem #PythonCLI #serverOutage #sysadmin #systemdNetworkd/etc/default/grubis backed up to.hal-backup). If you’re on this stack, switch to static IP before the next kernel upgrade catches you. - The
-
Arch Tip týdne: pacman jako profík
📦 pacman umí mnohem víc než jen instalovat balíčky.
Tady jsou dotazy, které ti pomůžou pochopit, co máš v systému.═══════════════════════════════════════════
🔍 ZÁKLADNÍ DOTAZY (-Q = QUERY)
═══════════════════════════════════════════výpis všech nainstalovaných balíčků
pacman -Q
kolik balíčků mám?
pacman -Q | wc -l
jen explicitně nainstalované (bez závislostí)
pacman -Qe
jen závislosti (instalované jako "side effect")
pacman -Qd
balíčky z AUR / mimo oficiální repo
pacman -Qm
balíčky JEN z oficiálních repo
pacman -Qn
osiřelé balíčky (závislosti, které už nikdo nepotřebuje)
pacman -Qtdq
odstranění osiřelých
sudo pacman -Rns $(pacman -Qtdq)
═══════════════════════════════════════════
📋 pacman -Qi → INFO O BALÍČKU
═══════════════════════════════════════════detailní info
pacman -Qi firefox
co uvidíš:
- verze, popis, URL
- licence
- závislosti (Depends On)
- co na něm závisí (Required By)
- volitelné závislosti (Optional Deps)
- velikost, datum instalace
- důvod instalace (Explicitly installed / Dependency)
rozšířené info (přidá Backup Files = konfiguráky chráněné při update)
pacman -Qii firefox
info z repa (i pro nenainstalované)
pacman -Si firefox
jen velikost balíčku
pacman -Qi firefox | grep "Installed Size"
řazení balíčků podle velikosti (potřebuje: pacman -S expac)
expac -H M "%m\t%n" | sort -h | tail -20
═══════════════════════════════════════════
📂 pacman -Ql → SEZNAM SOUBORŮ
═══════════════════════════════════════════co všechno balíček nainstaloval
pacman -Ql firefox
jen binárky
pacman -Ql firefox | grep '/bin/'
konfigurační soubory balíčku (vše v /etc)
pacman -Ql firefox | grep '^firefox /etc'
počet souborů v balíčku
pacman -Ql firefox | wc -l
soubory nenainstalovaného balíčku (z repa)
nejdřív aktualizuj file database:
sudo pacman -Fy
pacman -Fl firefox═══════════════════════════════════════════
🔎 pacman -Qo → KDO VLASTNÍ TENTO SOUBOR?
═══════════════════════════════════════════který balíček nainstaloval daný soubor?
pacman -Qo /usr/bin/firefox
výstup:
/usr/bin/firefox is owned by firefox 123.0-1
najdi balíček podle příkazu v PATH
pacman -Qo $(which nvim)
najdi balíček, kterému patří soubor – i když ho nemáš nainstalovaný
sudo pacman -Fy
pacman -F /usr/bin/htop═══════════════════════════════════════════
🛠️ pacnew / pacsave – CHRÁNĚNÉ KONFIGURÁKY
═══════════════════════════════════════════Backup Files = soubory označené v balíčku jako "neredisej moji verzi"
Když přijde update a soubor jsi upravil, pacman vytvoří .pacnew
(nová verze z balíčku) a tvoji verzi nechá být.
seznam backup files konkrétního balíčku
pacman -Qii pacman | awk '/^Backup Files/,/^$/'
najdi všechny .pacnew/.pacsave v systému (čekající na merge)
sudo find /etc ( -name ".pacnew" -o -name ".pacsave" )
interaktivní merge (z pacman-contrib)
sudo pacman -S pacman-contrib
sudo pacdiff═══════════════════════════════════════════
🌳 pactree → STROM ZÁVISLOSTÍ
═══════════════════════════════════════════instalace (pokud nemáš)
sudo pacman -S pacman-contrib
co všechno balíček potřebuje (závislosti)
pactree firefox
obrácený strom – kdo závisí NA tomto balíčku
pactree -r glibc
omezení hloubky
pactree -d 1 firefox
jen názvy, bez ozdob
pactree -u firefox
grafický výstup (potřebuje: pacman -S graphviz)
pactree --graph firefox | dot -Tpng > firefox-deps.png
═══════════════════════════════════════════
🔧 BONUS – DALŠÍ UŽITEČNÉ DOTAZY
═══════════════════════════════════════════hledání balíčku v repech
pacman -Ss firefox
hledání v nainstalovaných
pacman -Qs firefox
poslední full upgrade systému
grep "starting full system upgrade" /var/log/pacman.log | tail -5
co se naposled instalovalo/aktualizovalo
tail -50 /var/log/pacman.log
pretty výpis posledních akcí (expac)
expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort -r | head -20
změnit důvod instalace (z dependency na explicit)
sudo pacman -D --asexplicit firefox
označit jako závislost (půjde uklidit přes -Rns)
sudo pacman -D --asdeps nějaký-balíček
═══════════════════════════════════════════
💡 TYPICKÝ WORKFLOW
═══════════════════════════════════════════1. co mi žere místo?
expac -H M "%m\t%n" | sort -h | tail -20
2. co dělá tenhle balíček?
pacman -Qi <balíček>
3. můžu ho smazat? Co na něm závisí?
pactree -r <balíček>
4. odkud se vzal tenhle soubor?
pacman -Qo /cesta/k/souboru
5. úklid
sudo pacman -Rns $(pacman -Qtdq)
sudo paccache -rk2 -
Arch Tip týdne: pacman jako profík
📦 pacman umí mnohem víc než jen instalovat balíčky.
Tady jsou dotazy, které ti pomůžou pochopit, co máš v systému.═══════════════════════════════════════════
🔍 ZÁKLADNÍ DOTAZY (-Q = QUERY)
═══════════════════════════════════════════výpis všech nainstalovaných balíčků
pacman -Q
kolik balíčků mám?
pacman -Q | wc -l
jen explicitně nainstalované (bez závislostí)
pacman -Qe
jen závislosti (instalované jako "side effect")
pacman -Qd
balíčky z AUR / mimo oficiální repo
pacman -Qm
balíčky JEN z oficiálních repo
pacman -Qn
osiřelé balíčky (závislosti, které už nikdo nepotřebuje)
pacman -Qtdq
odstranění osiřelých
sudo pacman -Rns $(pacman -Qtdq)
═══════════════════════════════════════════
📋 pacman -Qi → INFO O BALÍČKU
═══════════════════════════════════════════detailní info
pacman -Qi firefox
co uvidíš:
- verze, popis, URL
- licence
- závislosti (Depends On)
- co na něm závisí (Required By)
- volitelné závislosti (Optional Deps)
- velikost, datum instalace
- důvod instalace (Explicitly installed / Dependency)
rozšířené info (přidá Backup Files = konfiguráky chráněné při update)
pacman -Qii firefox
info z repa (i pro nenainstalované)
pacman -Si firefox
jen velikost balíčku
pacman -Qi firefox | grep "Installed Size"
řazení balíčků podle velikosti (potřebuje: pacman -S expac)
expac -H M "%m\t%n" | sort -h | tail -20
═══════════════════════════════════════════
📂 pacman -Ql → SEZNAM SOUBORŮ
═══════════════════════════════════════════co všechno balíček nainstaloval
pacman -Ql firefox
jen binárky
pacman -Ql firefox | grep '/bin/'
konfigurační soubory balíčku (vše v /etc)
pacman -Ql firefox | grep '^firefox /etc'
počet souborů v balíčku
pacman -Ql firefox | wc -l
soubory nenainstalovaného balíčku (z repa)
nejdřív aktualizuj file database:
sudo pacman -Fy
pacman -Fl firefox═══════════════════════════════════════════
🔎 pacman -Qo → KDO VLASTNÍ TENTO SOUBOR?
═══════════════════════════════════════════který balíček nainstaloval daný soubor?
pacman -Qo /usr/bin/firefox
výstup:
/usr/bin/firefox is owned by firefox 123.0-1
najdi balíček podle příkazu v PATH
pacman -Qo $(which nvim)
najdi balíček, kterému patří soubor – i když ho nemáš nainstalovaný
sudo pacman -Fy
pacman -F /usr/bin/htop═══════════════════════════════════════════
🛠️ pacnew / pacsave – CHRÁNĚNÉ KONFIGURÁKY
═══════════════════════════════════════════Backup Files = soubory označené v balíčku jako "neredisej moji verzi"
Když přijde update a soubor jsi upravil, pacman vytvoří .pacnew
(nová verze z balíčku) a tvoji verzi nechá být.
seznam backup files konkrétního balíčku
pacman -Qii pacman | awk '/^Backup Files/,/^$/'
najdi všechny .pacnew/.pacsave v systému (čekající na merge)
sudo find /etc ( -name ".pacnew" -o -name ".pacsave" )
interaktivní merge (z pacman-contrib)
sudo pacman -S pacman-contrib
sudo pacdiff═══════════════════════════════════════════
🌳 pactree → STROM ZÁVISLOSTÍ
═══════════════════════════════════════════instalace (pokud nemáš)
sudo pacman -S pacman-contrib
co všechno balíček potřebuje (závislosti)
pactree firefox
obrácený strom – kdo závisí NA tomto balíčku
pactree -r glibc
omezení hloubky
pactree -d 1 firefox
jen názvy, bez ozdob
pactree -u firefox
grafický výstup (potřebuje: pacman -S graphviz)
pactree --graph firefox | dot -Tpng > firefox-deps.png
═══════════════════════════════════════════
🔧 BONUS – DALŠÍ UŽITEČNÉ DOTAZY
═══════════════════════════════════════════hledání balíčku v repech
pacman -Ss firefox
hledání v nainstalovaných
pacman -Qs firefox
poslední full upgrade systému
grep "starting full system upgrade" /var/log/pacman.log | tail -5
co se naposled instalovalo/aktualizovalo
tail -50 /var/log/pacman.log
pretty výpis posledních akcí (expac)
expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort -r | head -20
změnit důvod instalace (z dependency na explicit)
sudo pacman -D --asexplicit firefox
označit jako závislost (půjde uklidit přes -Rns)
sudo pacman -D --asdeps nějaký-balíček
═══════════════════════════════════════════
💡 TYPICKÝ WORKFLOW
═══════════════════════════════════════════1. co mi žere místo?
expac -H M "%m\t%n" | sort -h | tail -20
2. co dělá tenhle balíček?
pacman -Qi <balíček>
3. můžu ho smazat? Co na něm závisí?
pactree -r <balíček>
4. odkud se vzal tenhle soubor?
pacman -Qo /cesta/k/souboru
5. úklid
sudo pacman -Rns $(pacman -Qtdq)
sudo paccache -rk2 -
Arch Tip týdne: pacman jako profík
📦 pacman umí mnohem víc než jen instalovat balíčky.
Tady jsou dotazy, které ti pomůžou pochopit, co máš v systému.═══════════════════════════════════════════
🔍 ZÁKLADNÍ DOTAZY (-Q = QUERY)
═══════════════════════════════════════════výpis všech nainstalovaných balíčků
pacman -Q
kolik balíčků mám?
pacman -Q | wc -l
jen explicitně nainstalované (bez závislostí)
pacman -Qe
jen závislosti (instalované jako "side effect")
pacman -Qd
balíčky z AUR / mimo oficiální repo
pacman -Qm
balíčky JEN z oficiálních repo
pacman -Qn
osiřelé balíčky (závislosti, které už nikdo nepotřebuje)
pacman -Qtdq
odstranění osiřelých
sudo pacman -Rns $(pacman -Qtdq)
═══════════════════════════════════════════
📋 pacman -Qi → INFO O BALÍČKU
═══════════════════════════════════════════detailní info
pacman -Qi firefox
co uvidíš:
- verze, popis, URL
- licence
- závislosti (Depends On)
- co na něm závisí (Required By)
- volitelné závislosti (Optional Deps)
- velikost, datum instalace
- důvod instalace (Explicitly installed / Dependency)
rozšířené info (přidá Backup Files = konfiguráky chráněné při update)
pacman -Qii firefox
info z repa (i pro nenainstalované)
pacman -Si firefox
jen velikost balíčku
pacman -Qi firefox | grep "Installed Size"
řazení balíčků podle velikosti (potřebuje: pacman -S expac)
expac -H M "%m\t%n" | sort -h | tail -20
═══════════════════════════════════════════
📂 pacman -Ql → SEZNAM SOUBORŮ
═══════════════════════════════════════════co všechno balíček nainstaloval
pacman -Ql firefox
jen binárky
pacman -Ql firefox | grep '/bin/'
konfigurační soubory balíčku (vše v /etc)
pacman -Ql firefox | grep '^firefox /etc'
počet souborů v balíčku
pacman -Ql firefox | wc -l
soubory nenainstalovaného balíčku (z repa)
nejdřív aktualizuj file database:
sudo pacman -Fy
pacman -Fl firefox═══════════════════════════════════════════
🔎 pacman -Qo → KDO VLASTNÍ TENTO SOUBOR?
═══════════════════════════════════════════který balíček nainstaloval daný soubor?
pacman -Qo /usr/bin/firefox
výstup:
/usr/bin/firefox is owned by firefox 123.0-1
najdi balíček podle příkazu v PATH
pacman -Qo $(which nvim)
najdi balíček, kterému patří soubor – i když ho nemáš nainstalovaný
sudo pacman -Fy
pacman -F /usr/bin/htop═══════════════════════════════════════════
🛠️ pacnew / pacsave – CHRÁNĚNÉ KONFIGURÁKY
═══════════════════════════════════════════Backup Files = soubory označené v balíčku jako "neredisej moji verzi"
Když přijde update a soubor jsi upravil, pacman vytvoří .pacnew
(nová verze z balíčku) a tvoji verzi nechá být.
seznam backup files konkrétního balíčku
pacman -Qii pacman | awk '/^Backup Files/,/^$/'
najdi všechny .pacnew/.pacsave v systému (čekající na merge)
sudo find /etc ( -name ".pacnew" -o -name ".pacsave" )
interaktivní merge (z pacman-contrib)
sudo pacman -S pacman-contrib
sudo pacdiff═══════════════════════════════════════════
🌳 pactree → STROM ZÁVISLOSTÍ
═══════════════════════════════════════════instalace (pokud nemáš)
sudo pacman -S pacman-contrib
co všechno balíček potřebuje (závislosti)
pactree firefox
obrácený strom – kdo závisí NA tomto balíčku
pactree -r glibc
omezení hloubky
pactree -d 1 firefox
jen názvy, bez ozdob
pactree -u firefox
grafický výstup (potřebuje: pacman -S graphviz)
pactree --graph firefox | dot -Tpng > firefox-deps.png
═══════════════════════════════════════════
🔧 BONUS – DALŠÍ UŽITEČNÉ DOTAZY
═══════════════════════════════════════════hledání balíčku v repech
pacman -Ss firefox
hledání v nainstalovaných
pacman -Qs firefox
poslední full upgrade systému
grep "starting full system upgrade" /var/log/pacman.log | tail -5
co se naposled instalovalo/aktualizovalo
tail -50 /var/log/pacman.log
pretty výpis posledních akcí (expac)
expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort -r | head -20
změnit důvod instalace (z dependency na explicit)
sudo pacman -D --asexplicit firefox
označit jako závislost (půjde uklidit přes -Rns)
sudo pacman -D --asdeps nějaký-balíček
═══════════════════════════════════════════
💡 TYPICKÝ WORKFLOW
═══════════════════════════════════════════1. co mi žere místo?
expac -H M "%m\t%n" | sort -h | tail -20
2. co dělá tenhle balíček?
pacman -Qi <balíček>
3. můžu ho smazat? Co na něm závisí?
pactree -r <balíček>
4. odkud se vzal tenhle soubor?
pacman -Qo /cesta/k/souboru
5. úklid
sudo pacman -Rns $(pacman -Qtdq)
sudo paccache -rk2 -
Arch Tip týdne: pacman jako profík
📦 pacman umí mnohem víc než jen instalovat balíčky.
Tady jsou dotazy, které ti pomůžou pochopit, co máš v systému.═══════════════════════════════════════════
🔍 ZÁKLADNÍ DOTAZY (-Q = QUERY)
═══════════════════════════════════════════výpis všech nainstalovaných balíčků
pacman -Q
kolik balíčků mám?
pacman -Q | wc -l
jen explicitně nainstalované (bez závislostí)
pacman -Qe
jen závislosti (instalované jako "side effect")
pacman -Qd
balíčky z AUR / mimo oficiální repo
pacman -Qm
balíčky JEN z oficiálních repo
pacman -Qn
osiřelé balíčky (závislosti, které už nikdo nepotřebuje)
pacman -Qtdq
odstranění osiřelých
sudo pacman -Rns $(pacman -Qtdq)
═══════════════════════════════════════════
📋 pacman -Qi → INFO O BALÍČKU
═══════════════════════════════════════════detailní info
pacman -Qi firefox
co uvidíš:
- verze, popis, URL
- licence
- závislosti (Depends On)
- co na něm závisí (Required By)
- volitelné závislosti (Optional Deps)
- velikost, datum instalace
- důvod instalace (Explicitly installed / Dependency)
rozšířené info (přidá Backup Files = konfiguráky chráněné při update)
pacman -Qii firefox
info z repa (i pro nenainstalované)
pacman -Si firefox
jen velikost balíčku
pacman -Qi firefox | grep "Installed Size"
řazení balíčků podle velikosti (potřebuje: pacman -S expac)
expac -H M "%m\t%n" | sort -h | tail -20
═══════════════════════════════════════════
📂 pacman -Ql → SEZNAM SOUBORŮ
═══════════════════════════════════════════co všechno balíček nainstaloval
pacman -Ql firefox
jen binárky
pacman -Ql firefox | grep '/bin/'
konfigurační soubory balíčku (vše v /etc)
pacman -Ql firefox | grep '^firefox /etc'
počet souborů v balíčku
pacman -Ql firefox | wc -l
soubory nenainstalovaného balíčku (z repa)
nejdřív aktualizuj file database:
sudo pacman -Fy
pacman -Fl firefox═══════════════════════════════════════════
🔎 pacman -Qo → KDO VLASTNÍ TENTO SOUBOR?
═══════════════════════════════════════════který balíček nainstaloval daný soubor?
pacman -Qo /usr/bin/firefox
výstup:
/usr/bin/firefox is owned by firefox 123.0-1
najdi balíček podle příkazu v PATH
pacman -Qo $(which nvim)
najdi balíček, kterému patří soubor – i když ho nemáš nainstalovaný
sudo pacman -Fy
pacman -F /usr/bin/htop═══════════════════════════════════════════
🛠️ pacnew / pacsave – CHRÁNĚNÉ KONFIGURÁKY
═══════════════════════════════════════════Backup Files = soubory označené v balíčku jako "neredisej moji verzi"
Když přijde update a soubor jsi upravil, pacman vytvoří .pacnew
(nová verze z balíčku) a tvoji verzi nechá být.
seznam backup files konkrétního balíčku
pacman -Qii pacman | awk '/^Backup Files/,/^$/'
najdi všechny .pacnew/.pacsave v systému (čekající na merge)
sudo find /etc ( -name ".pacnew" -o -name ".pacsave" )
interaktivní merge (z pacman-contrib)
sudo pacman -S pacman-contrib
sudo pacdiff═══════════════════════════════════════════
🌳 pactree → STROM ZÁVISLOSTÍ
═══════════════════════════════════════════instalace (pokud nemáš)
sudo pacman -S pacman-contrib
co všechno balíček potřebuje (závislosti)
pactree firefox
obrácený strom – kdo závisí NA tomto balíčku
pactree -r glibc
omezení hloubky
pactree -d 1 firefox
jen názvy, bez ozdob
pactree -u firefox
grafický výstup (potřebuje: pacman -S graphviz)
pactree --graph firefox | dot -Tpng > firefox-deps.png
═══════════════════════════════════════════
🔧 BONUS – DALŠÍ UŽITEČNÉ DOTAZY
═══════════════════════════════════════════hledání balíčku v repech
pacman -Ss firefox
hledání v nainstalovaných
pacman -Qs firefox
poslední full upgrade systému
grep "starting full system upgrade" /var/log/pacman.log | tail -5
co se naposled instalovalo/aktualizovalo
tail -50 /var/log/pacman.log
pretty výpis posledních akcí (expac)
expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort -r | head -20
změnit důvod instalace (z dependency na explicit)
sudo pacman -D --asexplicit firefox
označit jako závislost (půjde uklidit přes -Rns)
sudo pacman -D --asdeps nějaký-balíček
═══════════════════════════════════════════
💡 TYPICKÝ WORKFLOW
═══════════════════════════════════════════1. co mi žere místo?
expac -H M "%m\t%n" | sort -h | tail -20
2. co dělá tenhle balíček?
pacman -Qi <balíček>
3. můžu ho smazat? Co na něm závisí?
pactree -r <balíček>
4. odkud se vzal tenhle soubor?
pacman -Qo /cesta/k/souboru
5. úklid
sudo pacman -Rns $(pacman -Qtdq)
sudo paccache -rk2 -
Arch Tip týdne: pacman jako profík
📦 pacman umí mnohem víc než jen instalovat balíčky.
Tady jsou dotazy, které ti pomůžou pochopit, co máš v systému.═══════════════════════════════════════════
🔍 ZÁKLADNÍ DOTAZY (-Q = QUERY)
═══════════════════════════════════════════výpis všech nainstalovaných balíčků
pacman -Q
kolik balíčků mám?
pacman -Q | wc -l
jen explicitně nainstalované (bez závislostí)
pacman -Qe
jen závislosti (instalované jako "side effect")
pacman -Qd
balíčky z AUR / mimo oficiální repo
pacman -Qm
balíčky JEN z oficiálních repo
pacman -Qn
osiřelé balíčky (závislosti, které už nikdo nepotřebuje)
pacman -Qtdq
odstranění osiřelých
sudo pacman -Rns $(pacman -Qtdq)
═══════════════════════════════════════════
📋 pacman -Qi → INFO O BALÍČKU
═══════════════════════════════════════════detailní info
pacman -Qi firefox
co uvidíš:
- verze, popis, URL
- licence
- závislosti (Depends On)
- co na něm závisí (Required By)
- volitelné závislosti (Optional Deps)
- velikost, datum instalace
- důvod instalace (Explicitly installed / Dependency)
rozšířené info (přidá Backup Files = konfiguráky chráněné při update)
pacman -Qii firefox
info z repa (i pro nenainstalované)
pacman -Si firefox
jen velikost balíčku
pacman -Qi firefox | grep "Installed Size"
řazení balíčků podle velikosti (potřebuje: pacman -S expac)
expac -H M "%m\t%n" | sort -h | tail -20
═══════════════════════════════════════════
📂 pacman -Ql → SEZNAM SOUBORŮ
═══════════════════════════════════════════co všechno balíček nainstaloval
pacman -Ql firefox
jen binárky
pacman -Ql firefox | grep '/bin/'
konfigurační soubory balíčku (vše v /etc)
pacman -Ql firefox | grep '^firefox /etc'
počet souborů v balíčku
pacman -Ql firefox | wc -l
soubory nenainstalovaného balíčku (z repa)
nejdřív aktualizuj file database:
sudo pacman -Fy
pacman -Fl firefox═══════════════════════════════════════════
🔎 pacman -Qo → KDO VLASTNÍ TENTO SOUBOR?
═══════════════════════════════════════════který balíček nainstaloval daný soubor?
pacman -Qo /usr/bin/firefox
výstup:
/usr/bin/firefox is owned by firefox 123.0-1
najdi balíček podle příkazu v PATH
pacman -Qo $(which nvim)
najdi balíček, kterému patří soubor – i když ho nemáš nainstalovaný
sudo pacman -Fy
pacman -F /usr/bin/htop═══════════════════════════════════════════
🛠️ pacnew / pacsave – CHRÁNĚNÉ KONFIGURÁKY
═══════════════════════════════════════════Backup Files = soubory označené v balíčku jako "neredisej moji verzi"
Když přijde update a soubor jsi upravil, pacman vytvoří .pacnew
(nová verze z balíčku) a tvoji verzi nechá být.
seznam backup files konkrétního balíčku
pacman -Qii pacman | awk '/^Backup Files/,/^$/'
najdi všechny .pacnew/.pacsave v systému (čekající na merge)
sudo find /etc ( -name ".pacnew" -o -name ".pacsave" )
interaktivní merge (z pacman-contrib)
sudo pacman -S pacman-contrib
sudo pacdiff═══════════════════════════════════════════
🌳 pactree → STROM ZÁVISLOSTÍ
═══════════════════════════════════════════instalace (pokud nemáš)
sudo pacman -S pacman-contrib
co všechno balíček potřebuje (závislosti)
pactree firefox
obrácený strom – kdo závisí NA tomto balíčku
pactree -r glibc
omezení hloubky
pactree -d 1 firefox
jen názvy, bez ozdob
pactree -u firefox
grafický výstup (potřebuje: pacman -S graphviz)
pactree --graph firefox | dot -Tpng > firefox-deps.png
═══════════════════════════════════════════
🔧 BONUS – DALŠÍ UŽITEČNÉ DOTAZY
═══════════════════════════════════════════hledání balíčku v repech
pacman -Ss firefox
hledání v nainstalovaných
pacman -Qs firefox
poslední full upgrade systému
grep "starting full system upgrade" /var/log/pacman.log | tail -5
co se naposled instalovalo/aktualizovalo
tail -50 /var/log/pacman.log
pretty výpis posledních akcí (expac)
expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort -r | head -20
změnit důvod instalace (z dependency na explicit)
sudo pacman -D --asexplicit firefox
označit jako závislost (půjde uklidit přes -Rns)
sudo pacman -D --asdeps nějaký-balíček
═══════════════════════════════════════════
💡 TYPICKÝ WORKFLOW
═══════════════════════════════════════════1. co mi žere místo?
expac -H M "%m\t%n" | sort -h | tail -20
2. co dělá tenhle balíček?
pacman -Qi <balíček>
3. můžu ho smazat? Co na něm závisí?
pactree -r <balíček>
4. odkud se vzal tenhle soubor?
pacman -Qo /cesta/k/souboru
5. úklid
sudo pacman -Rns $(pacman -Qtdq)
sudo paccache -rk2