星期六, 11月 22, 2025

archlinux清理pacman package cache

官方文件:https://wiki.archlinux.org/title/Pacman#Cleaning_the_package_cache

蠻簡單的,若要保留最後一個版本的套件,執行

sudo paccache -rk1

或是移除所有已經解除安裝套件的所有版本

sudo paccache -ruk0

要定期進行清理的話,就啟用 paccache.timer

sudo systemctl enable paccache.timer

然後修改 /etc/conf.d/pacman-contrib 裡的 PACCACHE_ARGS

PACCACHE_ARGS=-rk1

這樣就完成了。

Archlinux上的postgresql升級

 官方有說明,依照說明進行就可以:https://wiki.archlinux.org/title/PostgreSQL#Upgrading_PostgreSQL

但,我太久沒去注意,所以依照程序進行時,發現我舊的資料庫是 16,目前版本是 18。升級程序需要舊的 16 的檔案才可以,所以這邊紀錄過程:

取得資料庫檔案所使用的版本

cat /var/lib/postgres/data/PG_VERSION

    停止服務

    因為是服務無法啟動才發現 postgresql 需要升級,所以就不需要停止服務。

    安裝新版的檔案

    這步驟也跳過了,因為每次都是全機升級,所以已經安裝好了。

    搬移檔案

    主要是把原來的 /var/lib/postgres/data 更名,並建立新的資料目錄。

    sudo mv /var/lib/postgres/data /var/lib/postgres/olddata
    sudo mkdir /var/lib/postgres/data /var/lib/postgres/tmp
    sudo chown postgres:postgres /var/lib/postgres/data /var/lib/postgres/tmp

    改用 postgres 使用者身份建立資料庫

    sudo -u postgres -H /bin/bash
    cd /var/lib/postgres/tmp
    initdb -D /var/lib/postgres/data --locale=C.UTF-8 --encoding=UTF8 --data-checksums

    升級

    一樣是 postgres 使用者身份,執行 pg_upgrade 來升級

    pg_upgrade -b /opt/pgsql-16/bin -B /usr/bin -d /var/lib/postgres/olddata -D /var/lib/postgres/data

    我是在這步驟出錯的,因為我已經升級到 18。 /opt/pgsql-16/bin 這個目錄是安裝 postgresql-old-upgrade 套件才會有的,通常安裝了 postgresql 18,postgresql-old-upgrade 裡面的檔案就是 /opt/pgsql-17/bin

    參考了 Grok 的回答,對 postgresql-old-upgrade 進行降級了,先到 https://archive.archlinux.org/packages/p/postgresql-old-upgrade/ 下載舊版的檔案 postgresql-old-upgrade-16.10-1-x86_64.pkg.tar.zst ,然後安裝

    sudo pacman -U postgresql-old-upgrade-16.10-1-x86_64.pkg.tar.zst

    再次執行 pg_upgrade,會發現有以下錯誤

    error while loading shared libraries: libicui18n.so.76
    error while loading shared libraries: libicuuc.so.76

    只能再次安裝 icu76,Grok 說可以用 yay 安裝,此時要離開 postgres 身份來安裝。

    yay -Ss icu76

    安裝後,再次切換為 postgres 使用者帳號執行 pg_upgrade,這時候是說少了 libLLVM.so.20.1。又再離開 postgres 身份,用以下指令安裝 llvm 20

    yay -Syu llvm20

    再切換為 postgres 身份,執行 pg_upgrade,就順利完成了。

    啟動服務

    執行 exit 離開 postgres 身份,檢查以下檔案,主要是跟之前 /var/lib/postgres/olddata 目錄下的做比對。

    /var/lib/postgres/data/postgresql.conf
    /var/lib/postgres/data/pg_hba.conf

    設定改好以後,啟動 postgresql 服務。

    sudo systemctl start postgresql

    清理

    切換為 postgres 身份,執行清理

    /usr/bin/vacuumdb --all --analyze-in-stages --missing-stats-only
    /usr/bin/vacuumdb --all --analyze-only
    

    依照升級後的指令,執行

    ./delete_old_cluster.sh

    刪除 olddata 跟 tmp

    sudo rm -rf /var/lib/postgres/olddata
    sudo rm -rf /var/lib/postgres/tmp

    至此,大功告成。

    星期五, 5月 30, 2025

    電影流水帳(2024/06/01~2024/07/31)

     

    Seven

    即將退休的警察 Somerset 跟一個剛到任、熱血的警察 David 一起辦詭異案件的故事。案件的凶手採用的手法挺殘忍的,經過精心設計,Somerset 發覺這可能跟宗教有關係,往這方面去追查。這邊讓我難忘的一段是 Somerset 拿了一筆錢去餐廳找了一個線人,之後才跟 David 解釋說,CIA 有在監控去圖書館借書的人,透過借閱紀錄去找到可能的凶手。乍聽之下很扯,因為在那個時間點,資訊科技並沒有像現在這麼進步,要進行這樣大規模的監控,其實很花費人力。但就陰謀論來說,其實還蠻合情合理。

    最後的結局令人扼腕,David 跟他的家人落入凶手的算計之中,David 最後殺了凶手。

    Death on the Nile

    主角是白羅,這次案件是在尼羅河上。如果以為凶手是一個人的話,那麼可能會無法找出凶手是誰。跳脫「凶手只有一人」的既定印象以後,就可以依照線索來推斷,白羅就是這樣找出凶手的。整體來說,電影中規中矩,看來是想把阿嘉莎·克莉絲蒂推理女王的小說陸續搬上大螢幕,就來慢慢看囉。

    星期六, 3月 08, 2025

    Proxmox LXC設定

    LXC是輕量級的容器,Proxmox 直接提供了這功能,等於是可以拿 LXC 來當 VM,這樣可以更壓榨硬體的效能出來。

    這邊主要是紀錄用的時候遇到的一些狀況:

    1. Tailscale
    2. podman

    Tailscale

    因為我 Proxmox 網路設定是用NAT,再加上沒有第二張網卡,所以就簡單用 Tailscale 讓外部可以連到 Proxmox 裡面的 LXC 跟 VM。VM 用 tailscale 沒什麼問題,但 LXC 就遇到不能用的情況。

    這邊要在 lxc 容器設定 (Proxmox 主機裡的 /etc/pve/lxc/<id>.conf 裡加上以下內容

    lxc.cgroup2.devices.allow: c 10:200 rwm
    lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file

    podman

    podman 本身就容器,等於是容器裡的容器,這邊要處理 rootless 的情況,一樣,在 lxc 容器設定 (Proxmox 主機裡的 /etc/pve/lxc/<id>.conf 加上以下內容

    lxc.idmap: u 0 100000 165536
    lxc.idmap: g 0 100000 165536
    

    還有 /etc/subuid

    root:100000:200000

    跟 /etc/subgid

    root:100000:200000

    參考資料

    星期四, 1月 30, 2025

    電影流水帳(2024/04/01~2024/05/31)

     

    Fast X

    就動作片。從 6 以後,我就失去對這系列的興趣了。

    這集其實我也沒完整看完,大致故事是第五集反派的手下,出來襲擊了第九集反派,取得他的資源,來打擊唐老大。唐老大的兒子被綁走,為了要救他兒子,所以團隊跟之前的敵人攜手合作。最後的鏡頭是在水壩那邊拍攝的,原本是探員的 Aimes 實際上是反派的人,唐老大陷入危機,水壩要爆炸了,唐老大迫不得已開車帶著孩子開下水壩,鏡頭就停在這裡,擺明要大家買單下一集。

    ゴジラ-1.0

    這片拍的很好,故事寫的很好,特效也很不錯。

    時間點抓在二次大戰末的時候,飛機駕駛敷島其實是逃兵,他不想飛去自殺,獨自飛回島上的補給基地。飛回去後的隔天,就遇到了哥吉拉,他僥倖逃過一劫。

    回到日本以後,戰後的蕭條打擊了整個日本,敷島遇到一個帶著孩子的女人,兩人一起展開了生活。原本以為日子可以隨著戰後的復甦,可以越走越順。可是,哥吉拉再次出現。敷島認清自己始終要面對,決定鼓起勇氣,找了以前的舊識,也找到飛機,再次向哥吉拉挑戰。挑戰的過程艱辛,但透過集體的計畫,最終讓哥吉拉沉入東京灣。

    The Union

    動作片。

    男主角 Mike 是個工人,在小鎮生活著,原本以為就這樣了。在好友要結婚的前夕,高中的前女友 Roxanne 來找他,兩人聊的挺開心,原本以為會重續前緣,豈料才一轉眼,Mike 起身就到了倫敦。

    原來 Roxanne 在高中畢業後就加入了特務組織,這次來是因為上個任務失敗,懷疑可能是有內鬼,需要生面孔,所以才找上他。Mike 的確不負前女友的眼光,有成為特務的潛力。經過訓練以後,開始了任務。但這任務並非想像中簡單,因為特務組織裡面發生的變化,有人有了二心。我記得反派是詐死的,他是 Roxanne 的男友 Nick。最終兩人克服了困難,解決了這個反派,也重續了前緣。

    Page Eight

    是因為看電影神搜推薦,所以才找來看的。這部電影沒有動作,可是男主角就是帥~

    第一次看到這男主角是因為 About time,他飾演爸爸,就是他跟兒子說,我們家族可以讓時間倒回的。

    Johnny 參加了一場會議,他注意到報告裡面的第八頁有古怪,所以展開了調查,並確信首相等高層有涉入。調查過程中,遭受阻攔,甚至自己的上司也死去。這期間遇到鄰居 Nancy,他也是個有故事的人,弟弟被誣賴而被定罪。Johnny 後來知道了,順勢利用這個,來處理第八頁的事件。最終並不算解決,而是透過利益的交換,達成了自身的安全,以及 Nancy 伸張正義的機會。