home.social

#pacman — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #pacman, aggregated by home.social.

  1. 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: mastanet.com/article/pac-man-h

    #pac #man #pacman #1980 #arcade #game #namco #gameplay #ghosts #blinky #pinky #inky #clyde #classic #games #retro #gaming #history #level #256 #kill #screen

  2. 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: mastanet.com/article/pac-man-h

    #pac #man #pacman #1980 #arcade #game #namco #gameplay #ghosts #blinky #pinky #inky #clyde #classic #games #retro #gaming #history #level #256 #kill #screen

  3. 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: mastanet.com/article/pac-man-h

    #pac #man #pacman #1980 #arcade #game #namco #gameplay #ghosts #blinky #pinky #inky #clyde #classic #games #retro #gaming #history #level #256 #kill #screen

  4. 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: mastanet.com/article/pac-man-h

    #pac #man #pacman #1980 #arcade #game #namco #gameplay #ghosts #blinky #pinky #inky #clyde #classic #games #retro #gaming #history #level #256 #kill #screen

  5. 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: mastanet.com/article/pac-man-h

    #pac #man #pacman #1980 #arcade #game #namco #gameplay #ghosts #blinky #pinky #inky #clyde #classic #games #retro #gaming #history #level #256 #kill #screen

  6. 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
    setsideb.com/sundry-sunday-pac
    #sundaysundry #animation #namco #pacman #SnackBreaks #sundrysunday

  7. 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
    setsideb.com/sundry-sunday-pac
    #sundaysundry #animation #namco #pacman #SnackBreaks #sundrysunday

  8. 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
    setsideb.com/sundry-sunday-pac
    #sundaysundry #animation #namco #pacman #SnackBreaks #sundrysunday

  9. 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.

    m.youtube.com/watch?v=ul7VVZrc

    #Animation #PacMan #Cartoons #Comedy #2D #VideoGames

  10. 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.

    m.youtube.com/watch?v=ul7VVZrc

    #Animation #PacMan #Cartoons #Comedy #2D #VideoGames

  11. 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.

    m.youtube.com/watch?v=ul7VVZrc

    #Animation #PacMan #Cartoons #Comedy #2D #VideoGames

  12. 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.

    m.youtube.com/watch?v=ul7VVZrc

    #Animation #PacMan #Cartoons #Comedy #2D #VideoGames

  13. 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!

    youtube.com/@alienmax-reposito

    #gamedev #UnrealEngine #UE5 #indiedev #gamedevelopment #education #shader #pacman

  14. 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!

    youtube.com/@alienmax-reposito

    #gamedev #UnrealEngine #UE5 #indiedev #gamedevelopment #education #shader #pacman

  15. 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!

    youtube.com/@alienmax-reposito

    #gamedev #UnrealEngine #UE5 #indiedev #gamedevelopment #education #shader #pacman

  16. 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!

    youtube.com/@alienmax-reposito

    #gamedev #UnrealEngine #UE5 #indiedev #gamedevelopment #education #shader #pacman

  17. 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!

    youtube.com/@alienmax-reposito

    #gamedev #UnrealEngine #UE5 #indiedev #gamedevelopment #education #shader #pacman

  18. 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.
    kickstarter.com/projects/jd3/p

    #packetgame #dotgobbler #nes #homebrew #retrogaming #pacman

  19. 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.
    kickstarter.com/projects/jd3/p

    #packetgame #dotgobbler #nes #homebrew #retrogaming #pacman

  20. 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.
    kickstarter.com/projects/jd3/p

    #packetgame #dotgobbler #nes #homebrew #retrogaming #pacman

  21. 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.
    kickstarter.com/projects/jd3/p

    #packetgame #dotgobbler #nes #homebrew #retrogaming #pacman

  22. 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.
    kickstarter.com/projects/jd3/p

    #packetgame #dotgobbler #nes #homebrew #retrogaming #pacman

  23. اللعبة الأكثر مبيعاً من كل جيل من أجهزة الألعاب من الجيل الأول للجيل الرابع. #games #ألعاب # #Pacman #Supermario saudigamer.com/best-selling-ga

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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 #編集部:簗島 #記事種別:セール情報 #記事種別:ニュース

  30. 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 -Syyu the 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 22 showed filtered from 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 encryptssh initcpio hook referencing a /usr/lib/initcpio/udev/11-dm-initramfs.rules file that no longer exists. Real bug, no boot impact — the initramfs rebuilds anyway.
    • PermitRootLogin no in sshd_config. Real misconfiguration, fixed it, didn’t help. A refusing sshd shows closed, not filtered.
    • Predictable interface-naming drift after the systemd 260 upgrade. Patched the .network config to match by MAC. Useful hardening; not the cause.
    • Stale GRUB stage1 + core.img in the MBR. Arch never re-runs grub-install after a grub package 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-journald could 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=dhcp on 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=dhcp toward 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=dhcp shipped by installimage is a latent bug. It can keep working for years and then break overnight, on every machine you have, after a routine pacman -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) — including hal fix static-ip, which derives the static cmdline directly from your existing systemd-networkd .network file:

    github.com/kevinveenbirkenbach/hetzner-arch-luks

    Single command, idempotent, reversible (the original /etc/default/grub is backed up to .hal-backup). If you’re on this stack, switch to static IP before the next kernel upgrade catches you.

    #ArchLinux #bootFailure #debugging #DevOps #DHCP #Dropbear #fullDiskEncryption #GRUB #Hetzner #initramfs #kernelUpgrade #Linux #LUKS #mkinitcpio #pacman #postmortem #PythonCLI #serverOutage #sysadmin #systemdNetworkd
  31. 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 -Syyu the 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 22 showed filtered from 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 encryptssh initcpio hook referencing a /usr/lib/initcpio/udev/11-dm-initramfs.rules file that no longer exists. Real bug, no boot impact — the initramfs rebuilds anyway.
    • PermitRootLogin no in sshd_config. Real misconfiguration, fixed it, didn’t help. A refusing sshd shows closed, not filtered.
    • Predictable interface-naming drift after the systemd 260 upgrade. Patched the .network config to match by MAC. Useful hardening; not the cause.
    • Stale GRUB stage1 + core.img in the MBR. Arch never re-runs grub-install after a grub package 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-journald could 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=dhcp on 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=dhcp toward 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=dhcp shipped by installimage is a latent bug. It can keep working for years and then break overnight, on every machine you have, after a routine pacman -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) — including hal fix static-ip, which derives the static cmdline directly from your existing systemd-networkd .network file:

    github.com/kevinveenbirkenbach/hetzner-arch-luks

    Single command, idempotent, reversible (the original /etc/default/grub is backed up to .hal-backup). If you’re on this stack, switch to static IP before the next kernel upgrade catches you.

    #ArchLinux #bootFailure #debugging #DevOps #DHCP #Dropbear #fullDiskEncryption #GRUB #Hetzner #initramfs #kernelUpgrade #Linux #LUKS #mkinitcpio #pacman #postmortem #PythonCLI #serverOutage #sysadmin #systemdNetworkd
  32. 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 -Syyu the 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 22 showed filtered from 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 encryptssh initcpio hook referencing a /usr/lib/initcpio/udev/11-dm-initramfs.rules file that no longer exists. Real bug, no boot impact — the initramfs rebuilds anyway.
    • PermitRootLogin no in sshd_config. Real misconfiguration, fixed it, didn’t help. A refusing sshd shows closed, not filtered.
    • Predictable interface-naming drift after the systemd 260 upgrade. Patched the .network config to match by MAC. Useful hardening; not the cause.
    • Stale GRUB stage1 + core.img in the MBR. Arch never re-runs grub-install after a grub package 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-journald could 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=dhcp on 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=dhcp toward 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=dhcp shipped by installimage is a latent bug. It can keep working for years and then break overnight, on every machine you have, after a routine pacman -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) — including hal fix static-ip, which derives the static cmdline directly from your existing systemd-networkd .network file:

    github.com/kevinveenbirkenbach/hetzner-arch-luks

    Single command, idempotent, reversible (the original /etc/default/grub is backed up to .hal-backup). If you’re on this stack, switch to static IP before the next kernel upgrade catches you.

    #ArchLinux #bootFailure #debugging #DevOps #DHCP #Dropbear #fullDiskEncryption #GRUB #Hetzner #initramfs #kernelUpgrade #Linux #LUKS #mkinitcpio #pacman #postmortem #PythonCLI #serverOutage #sysadmin #systemdNetworkd
  33. 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 -Syyu the 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 22 showed filtered from 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 encryptssh initcpio hook referencing a /usr/lib/initcpio/udev/11-dm-initramfs.rules file that no longer exists. Real bug, no boot impact — the initramfs rebuilds anyway.
    • PermitRootLogin no in sshd_config. Real misconfiguration, fixed it, didn’t help. A refusing sshd shows closed, not filtered.
    • Predictable interface-naming drift after the systemd 260 upgrade. Patched the .network config to match by MAC. Useful hardening; not the cause.
    • Stale GRUB stage1 + core.img in the MBR. Arch never re-runs grub-install after a grub package 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-journald could 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=dhcp on 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=dhcp toward 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=dhcp shipped by installimage is a latent bug. It can keep working for years and then break overnight, on every machine you have, after a routine pacman -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) — including hal fix static-ip, which derives the static cmdline directly from your existing systemd-networkd .network file:

    github.com/kevinveenbirkenbach/hetzner-arch-luks

    Single command, idempotent, reversible (the original /etc/default/grub is backed up to .hal-backup). If you’re on this stack, switch to static IP before the next kernel upgrade catches you.

    #ArchLinux #bootFailure #debugging #DevOps #DHCP #Dropbear #fullDiskEncryption #GRUB #Hetzner #initramfs #kernelUpgrade #Linux #LUKS #mkinitcpio #pacman #postmortem #PythonCLI #serverOutage #sysadmin #systemdNetworkd
  34. 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 -Syyu the 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 22 showed filtered from 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 encryptssh initcpio hook referencing a /usr/lib/initcpio/udev/11-dm-initramfs.rules file that no longer exists. Real bug, no boot impact — the initramfs rebuilds anyway.
    • PermitRootLogin no in sshd_config. Real misconfiguration, fixed it, didn’t help. A refusing sshd shows closed, not filtered.
    • Predictable interface-naming drift after the systemd 260 upgrade. Patched the .network config to match by MAC. Useful hardening; not the cause.
    • Stale GRUB stage1 + core.img in the MBR. Arch never re-runs grub-install after a grub package 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-journald could 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=dhcp on 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=dhcp toward 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=dhcp shipped by installimage is a latent bug. It can keep working for years and then break overnight, on every machine you have, after a routine pacman -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) — including hal fix static-ip, which derives the static cmdline directly from your existing systemd-networkd .network file:

    github.com/kevinveenbirkenbach/hetzner-arch-luks

    Single command, idempotent, reversible (the original /etc/default/grub is backed up to .hal-backup). If you’re on this stack, switch to static IP before the next kernel upgrade catches you.

    #ArchLinux #bootFailure #debugging #DevOps #DHCP #Dropbear #fullDiskEncryption #GRUB #Hetzner #initramfs #kernelUpgrade #Linux #LUKS #mkinitcpio #pacman #postmortem #PythonCLI #serverOutage #sysadmin #systemdNetworkd
  35. 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

    #archlinux #pacman #linux #cli

  36. 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

    #archlinux #pacman #linux #cli

  37. 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

    #archlinux #pacman #linux #cli

  38. 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

    #archlinux #pacman #linux #cli

  39. 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

    #archlinux #pacman #linux #cli