棄用 yaourt,改用 yay

原來 archlinux 的 yaourt 已經過時了,我參考這篇 Yaourt is Dead! Use These Alternatives for AUR in Arch Linux,換成 yay,用法跟 yaourt 差不多。最新的 AUR 替代品可以參考 Archlinux 維基:AUR_helpers ,只是官方不建議使用這些工具,還是希望大家熟悉手動建置套件的程序。

先移除 yaourt

$ sudo pacman -Rn yaourt package-query

再參考 yay 的安裝說明來安裝

git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

用法跟 yaourt 差不多

# 更新套件列表並更新目前已經安裝的套件 (包含 AUR)
yay -Syu
# 安裝套件
yay -S foo
# 尋找套件
yay -Ss foo
# 取得遠端套件資訊
yay -Si foo
# 目前系統套件狀況
yay -P --stats

搞定以後,參考 yay -P –stats 的建議,移除了 aur 沒在維護的套件。最後跟 yaourt 說聲再見,謝謝 yaourt 過去幾年的照顧。

Tor

這篇只講在 Ubuntu 16.04/18.04 上的安裝。

安裝

echo "deb https://deb.torproject.org/torproject.org/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/tor.list
curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --import
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
sudo apt-get update
sudo apt-get install tor tor-geoipdb torsocks deb.torproject.org-keyring privoxy

修改 /etc/privoxy/config ,檔案結尾加入

forward-socks5 / localhost:9050 .

然後重新啟動

sudo systemctl restart privoxy

privoxy 主要是為只支援 http proxy 的程式提供 http proxy,tor 主要只提供 sock proxy。執行程式時,用 torsocks your_command 即可。要查 IP ,可以用 torsocks curl ipv4.icanhazip.com

參考資料

apk add 的 –virtual

在 Reduce Docker image sizes using Alpine 這篇學到的,add 時加上 –virtual,是暫時性的為這次加的 package 納入群組。之後若不需要這些 package,就可以在 del 時,指定這個名稱,就可以移除前次加入的 packages。

apk add --no-cache --virtual .build-deps gcc freetype-dev musl-dev
apk del .build-deps

Alternative NTP – Chrony

前幾天看到的 NTP 軟體 – Chrony:

安裝很簡單,Ubuntu 14.04 以後的版本都包進去了:sudo apt-get install chrony

設定檔在 /etc/chrony/chrony.conf ,基本上不用去更動。主要的設定是 pool 或 server 開頭的那幾行,主要是描述要跟哪台 NTP 伺服器同步,Ubuntu 16.04 預設是寫pool 2.debian.pool.ntp.org offline iburst 。

在 AWS 環境裡,可以把該行改成 server 169.254.169.123 prefer iburst ,直接跟 AWS 的 NTP 伺服器同步。要跟 Ubuntu NTP 伺服器同步,可以改成 pool ntp.ubuntu.com offline iburst

使用方法也很簡單:

  • 看 NTP 伺服器來源:chronyc sources -v
  • 看目前同步狀態:chronyc tracking
  • 看目前的活動:chronyc activity

所以現在就不用 ntp/ntpdate 了。

apt 使用 mirror

看到這篇文章:How to select the fastest apt mirror on Ubuntu Linux ,sources.list 裡可以改用 mirror://mirrors.ubuntu.com/mirrors.txt 這樣的 URL,apt 就會自動使用 mirror ,不過 apt 不一定會選到最快的 mirror。

在選最快的 mirror 時,可以用 netselect ,但 debian 才有包 netselect 。文章的留言有人提到一個組合命令可以用來取代 netselect ,我試了之後,發現不能用,稍稍做了調整 (改 sed 以及改用 awk 取 ping 結果):

for mirror in $(wget -qO - mirrors.ubuntu.com/mirrors.txt|sed 's/^http:\/\///;s/\/.*$//') ; do echo $(ping -c 1 $mirror|awk 'BEGIN {FS="[=]|[ ]"} NR==2 {print $11}') $mirror ; done|sort -n|grep "^[0-9]"|head -n 20

執行以後的結果:

2.49 mirror01.idc.hinet.net
3.47 debian.linux.org.tw
3.61 ubuntu.cs.nctu.edu.tw
5.45 ftp.tku.edu.tw
13.5 ftp.ntou.edu.tw
33.3 ubuntu.stu.edu.tw
40.8 ftp.ubuntu-tw.net
91.8 mirror.ncunwlab.tk
96.6 ftp.yzu.edu.tw
284 archive.ubuntu.com

看起來是中華電信最快,這時候再用 sed 去替換 sources.list 的來源即可。

sed 's/mirror:\/\/mirrors\.ubuntu\.com\/mirrors\.txt/http:\/\/mirror01\.idc\.hinet\.net\/ubuntu/' /etc/apt/sources.list | sudo tee /etc/apt/sources.list

mdadm 的該該叫: “YOUR SYSTEM IS NOW UNBOOTABLE!”

系統出現這樣的訊息:

W: mdadm: the array /dev/md/3_0 with UUID d6ef77fc:c2faf3d8:1f51fb89:78ee93fe
W: mdadm: is currently active, but it is not listed in mdadm.conf. if
W: mdadm: it is needed for boot, then YOUR SYSTEM IS NOW UNBOOTABLE!

UNBOOTABLE 耶,不能忽視,萬一又開不了機怎麼辦?

雖然錯誤訊息就有提到該怎麼處理,我還是使用錯誤訊息去搜尋,找到以下這幾篇:

我的作法是,先使用 sudo /usr/share/mdadm/mkconf 產生 mdadm.conf ,然後備份 /etc/mdadm/mdadm.conf ,再覆寫過去。最後使用 sudo update-initramfs -u 來驗證是否有出現錯誤。

sudo 免輸入密碼

這篇 command line – Execute sudo without Password? – Ask Ubuntu 講的很仔細,簡單說就是用 visudo 加入

username ALL=(ALL) NOPASSWD: ALL

就可以了。

我的作法是:

  1. 新增 sudo_nopass 的 group:
    sudo groupadd sudo_nopass
  2. visudo 之後,加入:
    sudo_nopass ALL=(ALL) NOPASSWD: ALL
  3. 將 user 加入 sudo_nopass 群組:
    sudo usermod -a -G sudo_nopass user
  4. 重新登入或重開機

這樣 user 用 sudo 時,就不需要再輸入密碼了。

VirtualBox guestcontrol

VirtualBox 可以用 vboxmanage guestcontrol 來有限度的控制 VM 裡的 GuestOS。

GuestOS 是 Ubuntu 的話,得安裝 virtualbox-guest-utils, virtualbox-guest-dkms ,安裝完以後,重新開機。

在 HostOS 裡,就可以用 vboxmanage guestcontrol 指令了。

# VirtualBox 5.x
vboxmanage --nologo guestcontrol "Ubuntu 16.04" run --exe /sbin/ifconfig --username ubuntu --passwordfile password.txt --wait-stdout --wait-stderr --verbose

參考資料:

anbox 與 snappy

Anbox 是一個以 container 來摹擬 Android 的技術,如此一來,就可以在 Ubuntu 裡執行 Android app。

按照 Anbox 的說明,得先安裝 snappy,snappy 是 Canonical 推的新的套件機制,軟體以類似 container 的方式安裝進去,不過這個技術推行快兩年了,用的人好像還是不怎麼多。安裝 snappy 的方法很簡單,只要安裝 snapd 就可以了:

sudo apt-get install snapd

。

安裝 snappy 以後,你還得要先登入 Ubuntu one 的帳號 (用法):

sudo snap login your_email

,之後才能依照 Anbox 的說明,進行安裝:

snap install --classic anbox-installer

。如果不先 login ,snap install 時,會不給安裝。

安裝 anbox-installer 以後,再執行

anbox-installer

就會啟動安裝程序了。

不過我還是安裝失敗了,anbox 說 Ubuntu 14.04 應該是可以安裝,但是實際狀況是有問題,我沒深究,就算了。