Pacman hook spam, how do you resolve it

Hey there,
I really like the tools that garuda provides, but some of it is just annoying.
A little context: Today I discovered that the pacman syncing is not a default hook in pacman, and since I only had trouble with it in the past, I would like to disable it. Trying to find the hook responsible for that, I stumbled upon /usr/share/libalpm/hooks/ which seems to house all the pacman hooks. Among those are firefox, thunderbird, together with the foreign notifications hook. I don't really need the firefox hooks, so I tried to uninstall that, but it turns out, that the firefox hooks are owned by garuda-browser-settings. Trying to uninstall that I noticed that a lot of actually useful configuration packages of garuda depend on it. I then proceeded to try to uninstall the annoying foreign notifications hook, but the problem here was that the package actually was useful and contained important files.
Since there is no way to disable hooks through the pacman config, how can I remove that hook? It's really annoying and doesn't really serve a purpose.
What about the config packages? Why do they depend on other completely unrelated packages?
What hook is responsible for the sync hook? Where is it located and how can I remove it? This is one of the worst packages that I have encountered for how many problems it has created for me.
Thanks!

ystem:
  Kernel: 5.18.8-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 12.1.0
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=6e6211b4-cfb4-44c0-8970-5e4a826e0c5e rw rootflags=subvol=@
    rd.udev.log_priority=3 vt.global_cursor_default=0
    systemd.unified_cgroup_hierarchy=1 loglevel=3 sysrq_always_enabled=1
    iommu=soft
  Desktop: wayfire v: 0.8.0-b8211e3b info: waybar vt: 1 dm: greetd
    Distro: Garuda Linux base: Arch Linux
Machine:
  Type: Desktop System: Gigabyte product: AX370-Gaming 3 v: N/A
    serial: <superuser required>
  Mobo: Gigabyte model: AX370-Gaming 3-CF v: x.x
    serial: <superuser required> UEFI: American Megatrends v: F50a
    date: 11/27/2019
CPU:
  Info: model: AMD Ryzen 5 2600X bits: 64 type: MT MCP arch: Zen+ gen: 2
    built: 2018-21 process: GF 12nm family: 0x17 (23) model-id: 8 stepping: 2
    microcode: 0x800820D
  Topology: cpus: 1x cores: 6 tpc: 2 threads: 12 smt: enabled cache:
    L1: 576 KiB desc: d-6x32 KiB; i-6x64 KiB L2: 3 MiB desc: 6x512 KiB
    L3: 16 MiB desc: 2x8 MiB
  Speed (MHz): avg: 4019 high: 4074 min/max: 2200/3600 boost: enabled
    scaling: driver: acpi-cpufreq governor: performance cores: 1: 3998 2: 4064
    3: 4051 4: 3890 5: 4040 6: 4046 7: 4036 8: 4003 9: 4074 10: 3957 11: 4050
    12: 4025 bogomips: 86225
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
  Vulnerabilities:
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: spec_store_bypass
    mitigation: Speculative Store Bypass disabled via prctl
  Type: spectre_v1
    mitigation: usercopy/swapgs barriers and __user pointer sanitization
  Type: spectre_v2
    mitigation: Retpolines, IBPB: conditional, STIBP: disabled, RSB filling
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: AMD Baffin [Radeon RX 550 640SP / 560/560X] vendor: ASUSTeK
    driver: amdgpu v: kernel arch: GCN 4 process: GF 14nm built: 2016-20 pcie:
    gen: 3 speed: 8 GT/s lanes: 8 ports: active: DVI-D-1,HDMI-A-1 empty: DP-1
    bus-ID: 08:00.0 chip-ID: 1002:67ff class-ID: 0300
  Device-2: Logitech Webcam C270 type: USB driver: snd-usb-audio,uvcvideo
    bus-ID: 1-2:3 chip-ID: 046d:0825 class-ID: 0102 serial: <filter>
  Display: wayland server: X.org v: 1.21.1.3 with: Xwayland v: 22.1.2
    compositor: wayfire v: 0.8.0-b8211e3b driver: X: loaded: amdgpu
    unloaded: modesetting alternate: fbdev,vesa gpu: amdgpu d-rect: 3600x1200
    display-ID: 1
  Monitor-1: DVI-D-1 pos: right res: 1920x1200 size: N/A modes: N/A
  Monitor-2: HDMI-A-1 pos: primary,left res: 1680x1050 size: N/A modes: N/A
  OpenGL: renderer: AMD Radeon RX 560 Series (polaris11 LLVM 13.0.1 DRM
    3.46 5.18.8-zen1-1-zen)
    v: 4.6 Mesa 22.1.2 direct render: Yes
Audio:
  Device-1: AMD Baffin HDMI/DP Audio [Radeon RX 550 640SP / 560/560X]
    vendor: ASUSTeK driver: snd_hda_intel bus-ID: 1-2:3 v: kernel pcie:
    chip-ID: 046d:0825 class-ID: 0102 gen: 3 speed: 8 GT/s serial: <filter>
    lanes: 8 bus-ID: 08:00.1 chip-ID: 1002:aae0 class-ID: 0403
  Device-2: AMD Family 17h HD Audio vendor: Gigabyte driver: snd_hda_intel
    v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16 bus-ID: 0a:00.3
    chip-ID: 1022:1457 class-ID: 0403
  Device-3: Logitech Webcam C270 type: USB driver: snd-usb-audio,uvcvideo
  Device-4: C-Media USB Microphone type: USB
    driver: hid-generic,snd-usb-audio,usbhid bus-ID: 3-4:4 chip-ID: 0d8c:9700
    class-ID: 0300 serial: <filter>
  Sound Server-1: ALSA v: k5.18.8-zen1-1-zen running: yes
  Sound Server-2: sndio v: N/A running: no
  Sound Server-3: PulseAudio v: 16.1 running: no
  Sound Server-4: PipeWire v: 0.3.53 running: yes
Network:
  Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
    vendor: Gigabyte driver: r8169 v: kernel pcie: gen: 1 speed: 2.5 GT/s
    lanes: 1 port: f000 bus-ID: 03:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: eno1 state: up speed: 1000 Mbps duplex: full mac: <filter>
Bluetooth:
  Device-1: Broadcom BCM20702A0 Bluetooth 4.0 type: USB driver: btusb v: 0.8
    bus-ID: 1-3:4 chip-ID: 0a5c:21e8 class-ID: fe01 serial: <filter>
  Report: bt-adapter ID: hci0 rfk-id: 2 state: up address: <filter>
Drives:
  Local Storage: total: 2.96 TiB used: 1.72 TiB (58.2%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 860 EVO 1TB
    size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
    type: SSD serial: <filter> rev: 4B6Q scheme: GPT
  ID-2: /dev/sdb maj-min: 8:16 vendor: Samsung model: SSD 860 EVO 250GB
    size: 232.89 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
    type: SSD serial: <filter> rev: 1B6Q scheme: GPT
  ID-3: /dev/sdc maj-min: 8:32 vendor: Western Digital
    model: WD20EFRX-68EUZN0 size: 1.82 TiB block-size: physical: 4096 B
    logical: 512 B speed: 6.0 Gb/s type: HDD rpm: 5400 serial: <filter>
    rev: 0A82 scheme: GPT
Partition:
  ID-1: / raw-size: 195.03 GiB size: 195.03 GiB (100.00%)
    used: 155.79 GiB (79.9%) fs: btrfs dev: /dev/sda1 maj-min: 8:1
  ID-2: /boot/efi raw-size: 301 MiB size: 300.4 MiB (99.79%)
    used: 576 KiB (0.2%) fs: vfat dev: /dev/sda2 maj-min: 8:2
  ID-3: /home raw-size: 736.18 GiB size: 736.18 GiB (100.00%)
    used: 198.91 GiB (27.0%) fs: btrfs dev: /dev/sda3 maj-min: 8:3
  ID-4: /var/log raw-size: 195.03 GiB size: 195.03 GiB (100.00%)
    used: 155.79 GiB (79.9%) fs: btrfs dev: /dev/sda1 maj-min: 8:1
  ID-5: /var/tmp raw-size: 195.03 GiB size: 195.03 GiB (100.00%)
    used: 155.79 GiB (79.9%) fs: btrfs dev: /dev/sda1 maj-min: 8:1
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
  ID-1: swap-1 type: zram size: 31.3 GiB used: 8 KiB (0.0%) priority: 100
    dev: /dev/zram0
Sensors:
  System Temperatures: cpu: N/A mobo: N/A gpu: amdgpu temp: 54.0 C
  Fan Speeds (RPM): N/A gpu: amdgpu fan: 1520
Info:
  Processes: 348 Uptime: 6h 24m wakeups: 14 Memory: 31.3 GiB
  used: 7.5 GiB (24.0%) Init: systemd v: 251 default: graphical
  tool: systemctl Compilers: gcc: 12.1.0 clang: 13.0.1 Packages: apt: 0
  pacman: 2020 lib: 497 flatpak: 0 Shell: Zsh v: 5.9 running-in: alacritty
  inxi: 3.3.19
Garuda (2.6.4-2):
  System install date:     2021-12-28
  Last full system update: 2022-07-03
  Is partially upgraded:   No
  Relevant software:       NetworkManager
  Windows dual boot:       No/Undetected
  Snapshots:               Snapper
  Failed units:

You know how hooks work, right? These only get triggered if the condition, in this case a particular package being installed or upgraded, is triggered. So it wouldn’t affect things if the particular package isn’t installed.
About the foreign notifications hook: we made the choice to include it.

Why do you want to remove the sync hook?

Care to name some of those problems? All I read so far are problems caused by not agreeing with particular choices we made when creating this package.

5 Likes

You know how hooks work, right?

Yeah I do, but most of them are literal bloat since I never use them. I use waterfox and not something else.

Why do you want to remove the sync hook?
Care to name some of those problems?

The problem that made me hate this so extremely hard is the fact that 9/10 pacman actions it just desides to sync forever. Just today this even ended up lagging my system out to hard that I had to reboot. It seems to have use 100% cpu.
I hope you understand me now. This has been my one and only most hated ever problem with Garuda.

You are literally talking about a few kb of files sitting around doing nothing.

This literally just writes buffered data to disk.

To solve all these issues you could write your own hook deleting all of these files. However, we are not responsible for eventual issues arising because of that.

3 Likes

This literally just writes buffered data to disk.

Why is this not in default pacman if this just runs sync?
While I do understand that a few kbs are not much, I am always trying to keep my system clean. Not only that, but some hooks are just straight up annoying, like the foreign package notification. I know that I am using the aur, and I have done that for quite a while, so why tell me that?

This still doesn’t explain, why the garuda-browser-settings package is required by the garuda-bash-settings and btrf related packages.

I do understand that this all sounds very toxic, but that’s not supposed to be the case. This is not a garuda-ranting-session. I would just like to address my issues with pacman.

Take a look at this file for a template for disabling specific pacman hooks: PKGBUILD · main · Garuda Linux / Packages / Stable PKGBUILDs / garuda-reduce-verbosity · GitLab
Basically, you just need to create those links to /dev/null with the same name as the hook you want to disable but in the /etc/ directory instead of /usr/lib. You don't need to do this in a package.

Just be aware that you are entering uncharted territory and that any future support requests MUST include that you did this in the support request.

5 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.