WSL Ubuntu 透過 APT 安裝軟體時出現 IPC connect call failed 與 NO_PUBKEY

安裝 MariaDB 時,官方貼心的提供了一個 Repository Configuration Tool,可以選好自己的作業系統與想要安裝的發行版後產生相對應的指令碼,直接複製貼上就可以透過套件管理員進行安裝。 這兩天在摸索 WSL (Windows Subsystem Linux),使用的發行版是 Ubuntu,而今天在 WLS 內安裝 MariaDB 10.4 時卻出現一些錯誤:

sudo apt-get install software-properties-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
software-properties-common is already the newest version (0.96.24.32.9).
The following packages were automatically installed and are no longer required:
  gyp javascript-common libhttp-parser2.7.1 libjs-async libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libuv1-dev nodejs-doc
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 21 not upgraded.

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Executing: /tmp/apt-key-gpghome.jVRLtzEDLC/gpg.1.sh --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
gpg: connecting dirmngr at '/tmp/apt-key-gpghome.jVRLtzEDLC/S.dirmngr' failed: IPC connect call failed
gpg: keyserver receive failed: No dirmngr

sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic main'
Hit:1 http://free.nchc.org.tw/ubuntu bionic InRelease
Hit:2 http://free.nchc.org.tw/ubuntu bionic-updates InRelease
Get:3 http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic InRelease [3901 B]
Hit:4 https://deb.nodesource.com/node_10.x bionic InRelease
Hit:5 http://security.ubuntu.com/ubuntu bionic-security InRelease
Err:3 http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F1656F24C74CD1D8
Reading package lists... Done
W: GPG error: http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F1656F24C74CD1D8
E: The repository 'http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

有兩個關鍵字:

  1. IPC connect call failed (Line 12)
  2. NO_PUBKEY (Line 25)

找了一下,發現是 WSL 自己的問題,跟 Ubuntu 沒有太大的關係;開發者 Ghost 表示是 WSL 下的 Ubuntu Bionic 第一版的問題,改用 curl 去把 key 抓下來後透過 sudo apt-key add 就可以解決:

It’s Bugging Since The First Bionics in wsl. But the temporary to pass this problems is using apt-key add instead adv options through wget or curl : curl -sL http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA6A19B38D3D831EF | sudo apt-key add

但是在 issue closed 後隔沒幾天有其他人表示說問題依然存在,並沒有被解決,最後發現只是各個軟體的 key 不一樣而已,開發者 foxliu 提醒依照安裝軟體的不同,要自己更換 key,以 MariaDB 來說,官方提供的 key 為 0xF1656F24C74CD1D8, 所以把指令改成這樣就好:

curl -sL http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xF1656F24C74CD1D8 | sudo apt-key add

最後重新執行一次 sudo apt update,就可以把套件資訊抓回來了。

sudo apt update
Hit:1 http://free.nchc.org.tw/ubuntu bionic InRelease
Hit:2 http://free.nchc.org.tw/ubuntu bionic-updates InRelease
Hit:3 https://deb.nodesource.com/node_10.x bionic InRelease
Get:4 http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic InRelease [3901 B]
Hit:5 http://security.ubuntu.com/ubuntu bionic-security InRelease
Get:6 http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic/main arm64 Packages [7787 B]
Get:7 http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic/main amd64 Packages [8008 B]
Get:8 http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic/main ppc64el Packages [7793 B]
Fetched 27.5 kB in 4s (6549 B/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
24 packages can be upgraded. Run 'apt list --upgradable' to see them.

檢查一下套件資訊:

apt show mariadb-server
Package: mariadb-server
Version: 1:10.4.6+maria~bionic
Priority: optional
Section: database
Source: mariadb-10.4
Maintainer: MariaDB Developers <[email protected]>
Installed-Size: 10.2 kB
Depends: mariadb-server-10.4 (>= 1:10.4.6+maria~bionic)
Homepage: http://mariadb.org/
Download-Size: 3180 B
APT-Sources: http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic/main amd64 Packages
Description: MariaDB database server (metapackage depending on the latest version)
 This is an empty package that depends on the current best version of
 mariadb-server (currently mariadb-server-10.4), as determined by the MariaDB
 maintainers. Install this package if in doubt about which MariaDB
 version you need. That will install the version recommended by the
 package maintainers.
 .
 MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
 server. SQL (Structured Query Language) is the most popular database query
 language in the world. The main goals of MariaDB are speed, robustness and
 ease of use.

N: There are 2 additional records. Please use the '-a' switch to see them.

如果安裝其他套件時出現類似的錯誤,把 key 替換應該都能解決。


Reference: Ubuntu 18.04 gpg dirmngr IPC connect call failed #3286

發表留言

/etc/netplan/50-cloud-init.yaml not found

前言

以前 Ubuntu 修改網路卡設定時大部分都是透過修改 /etc/network/interfaces 後執行 ifdownup 即可,Ubuntu 自 17.10 版後將預設的網路卡管理工具變更為 Netplan,設定檔內容採用 YAML 格式進行設定,風格上其實並沒有差太多,轉換過程中沒有什麼太大的問題,如果需要開發自動化管理系統,有 Netplan 的話應該是可以省下一些時間,Netplan 的導入個人是樂見其成。

系統升級後設定檔遺失

今天在工作時將一台 Ubuntu Server 從 16.04 升級到 18.04 後發現無法連線,估計是升級時不小心全部覆蓋,而系統升級後將舊的網路卡管理套件直接幹掉並切換到 Netplan,記得先前升級其他台 server 時系統會保留舊的設定,並不會自動切換過去,其實也還好就重新設定,但是系統有把 /etc/netplan 建好了,但是並沒有出現預設的 50-cloud-init.yaml 設定檔。

Read more “/etc/netplan/50-cloud-init.yaml not found”

發表留言

[Linux] dig/nslookup/nsupdate 指令安裝

dignslookupnsupdate 是在進行域名解析除錯時常用到的工具,這三個指令是隸屬於 BIND DNS Server  的 Utility,如果安裝套件時直接搜尋指令,應該是看不到套件名稱上會有指令名稱的,應該會是 bind-utilsdnsutils

 

安裝方式

Debian/Ubuntu:

sudo apt install -y dnsutils

 

Red Hat (CentOS/Fedora/RHEL):

sudo yum install bind-utils

 

Cygwin: 可透過 EXE 安裝檔安裝 bind-utils,有 apt-cyg  可以使用下列指令安裝:

apt-cyg install bind-utils

 References
BIND Open Source DNS Server | Internet Systems Consortium

發表留言

[Ubuntu] 如何使電腦進入休眠與睡眠模式?

在 Windows 系統下,電腦閒置時可以透過休眠模式或睡眠模式讓電腦省電,在 Ubuntu 可以透過下面兩個指令達到相同的效果:

  • sudo systemctl hibernate:Hibernate 模式,將記憶體內容寫入硬碟後完全關閉電源,等同 Windows 的休眠模式。
  • sudo systemctl hybrid-sleep:Hybird Sleep 模式,只供應電源給記憶體,其餘零件全部切斷電源供給,等同 Windows 的睡眠模式。

 References

發表留言

[Linux] 使用 watch 定期執行指令

watch  是一個可以定期執行指令的實用工具,臨時需要定期執行指令時特別有用。

Usage:
 watch [options] command

Options:
  -b, --beep             beep if command has a non-zero exit
  -c, --color            interpret ANSI color and style sequences
  -d, --differences[=<permanent>]
                         highlight changes between updates
  -e, --errexit          exit if command has a non-zero exit
  -g, --chgexit          exit when output from command changes
  -n, --interval <secs>  seconds to wait between updates
  -p, --precise          attempt run command in precise intervals
  -t, --no-title         turn off header
  -x, --exec             pass command to exec instead of "sh -c"

 -h, --help     display this help and exit
 -v, --version  output version information and exit

Read more “[Linux] 使用 watch 定期執行指令”

發表留言