Lỗi DBeaver không tìm thấy pg_dump – Debug thú vị với Flatpak trên Linux

Một lỗi tưởng vặt lại giúp mình hiểu rõ hơn:

  • Lần đầu biết pg_dump là gì và vì sao DBeaver cần nó khi backup

  • Biết vì sao Flatpak gây lỗi khi app cần truy cập trực tiếp file hệ thống

  • Tránh mất thời gian debug khi dùng tool dev với Flatpak

Mình mới chuyển sang dùng Fedora (linux) được 1 tháng. Hôm nay cần backup data, nên mở Dbeaver lên để backup nhưng gặp lỗi này: "Local client is not specified for connection.”

Local client là gì cơ? Search 1 lúc, mình hiểu Local client là chương trình dòng lệnh đi kèm với PostgreSQL, như pg_dump để backup hoặc psql để query.

Theo như Dbeaver, mình cần thêm dẫn path tới pg_dump.

Hóa ra trước giờ mình toàn connect tới database ở cloud chứ máy local không hề cài Postgres. Bây giờ từ cloud mà cần thao tác với local disk (backup/restore) thì cần cài Postgres là hiển nhiên rồi 😂.
Sau khi cài, mình kiểm tra path của pg_dump

Got it: /usr/bin/pg_dump .Giờ thêm path này vào Local client là xong. Khoan, trên page của Dbeaver có cho mình 1 tip, cài package libpq có thể giúp Dbeaver tìm được client tự động.

Nào thì thử cài:

Cái kết là không work. Đọc kỹ mới thấy hóa ra chỉ áp dụng cho macOS thôi. 😑 Cho chừa thói hấp tấp.

Giờ thì mình đoán thêm path của pg_dump là xong: .
Hmm, sao rõ ràng thêm đúng path rồi /usr/bin/pg_dump.
Mà Dbeaver hiển thị path lạ thế nhỉ: /run/user/1000/doc/3de82b55/bin - 1 path “ảo”.
Phải chăng do môi trường nào đó tạo ra?

Lúc đó mình nghĩ chắc lỗi hiển thị gì đó thôi. Cứ bấm Ok xem sao.

Nope. Không work.
Sau đó mình thử đi thử lại,từ paste thẳng tới bấm browse để chọn path → Vẫn ra như cũ.
Follow từng bước trên Dbeaver Wiki → cũng không chạy được!!
Hẳn là vấn đề ở đâu đó chứ ko phải tại Dbeaver. Vì trước đó chạy trên Window ko bị. Mình đã nghĩ tới dùng pg_dump ở cli. Vì đúng bản chất của nó mà.
Nhưng, thử cố tìm vấn đề xem. Chắc liên quan tới linux rồi 🤔


Cuối cùng, không ngờ tới là vấn đề lại nằm ở Flatpak. Đây là 1 kho ứng dụng trên Linux, giống như Microsoft Store hay CH Play vậy. Mình có tải Dbeaver từ đây, cứ nghĩ là Store bình thường giống như apt trên Ubuntu vậy thôi.

Flatpak lại chạy kiêu khác. Thông thường các file .exe, .deb, .rpm , để cài được thì phải đúng hệ điều hành (.dev với Ubuntu, Debian, .rpm với Fedora, Centos ).
Flatpak đóng gói app lại, chạy trong sandbox*, bị “bọc” trong môi trường riêng*. Nghe quen quen đúng không? Đúng, giống y như Docker vậy 😉. Tức là chả cần biết bạn chạy distribution nào: Ubuntu, Fedora, Centos,… chạy được hết.

Quay lại vấn đề, vì chạy trong sandbox, cơ bản thì app trên Flatpak ko thể đọc (đúng hơn là không có quyền đọc) path của hệ thống. Lý giải cho việc dù mình nhập /usr/bin/pg_dump , Dbeaver lại đọc thành /run/user/1000/doc/3de82b55/bin - 1 path ảo.

Vậy cách fix như nào? Linux cho phép quản lý phân quyền rất chi tiết cho từng folder. Cấp quyền cho Flatpak đọc folder đó là được.

Nhưng mình ko muốn mỗi khi có vấn đề lại phải cấp quyền, nên chọn giải pháp đơn giản hơn: “Tải file .rpm từ trang chủ Dbeaver” 😅 . Nhanh gọn, dễ dàng đọc path bên ngoài.

Qua trải nghiệm này, mình rút ra một số nguyên tắc nhỏ khi làm việc với GUI app trên Linux:

  • Nếu app cần tương tác trực tiếp với file hệ thống (như pg_dump), hãy tránh cài qua Flatpak vì sandbox sẽ gây lỗi khó đoán.

  • Với PostgreSQL, các thao tác như backup/restore cần công cụ CLI (pg_dump, psql...) — nên đảm bảo cài đầy đủ và biết nó nằm ở đâu.

  • Flatpak rất tiện, nhưng không phải lúc nào cũng hợp với tool dành cho dev.

Reference:
https://dbeaver.com/docs/dbeaver/Local-Client-Configuration/
https://flathub.org/

0
Subscribe to my newsletter

Read articles from Nguyễn Hữu Văn (Marc) directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Nguyễn Hữu Văn (Marc)
Nguyễn Hữu Văn (Marc)