กลับมาแล้วหลังจากอู้ไปหลายเดือนเนื่องด้วยการคลาย Lockdown ที่ผ่านมาของประเทศไทย ฮาๆ ครั้งนี้เราจะมาพูดถึงในฝั่ง Linux กันบ้างนั่นก็คือ Fedora Silverblue 33 ตัวเต็มนั่นเอง ที่เพิ่งถูกปล่อยออกมาประมาณสองถึงสามสัปดาห์ที่ผ่านมา ผมเลยตัดสินใจที่จะลงแบบ Clean Install เนื่องจากเว่อรชั่นนี้มาพร้อมกับ BTRFS หรือ file system แบบใหม่ที่มีความสามารถด้าน snapshot ที่ดี ซึ่งจะทำให้สามารถ roll back หรืออะไรต่างๆได้ง่ายขึ้นมากๆ ส่วนด้าน Fedora Silverblue นั้นต่างกับ Fedora ปกติอย่างไรบ้างนั้น เดียวค่อยว่ากันอีกทีแหละกันครับ ในวันนี้เรามาโฟกัสถึงวิธีการลง rust ด้วย RustUp กันก่อนดีกว่า
Tools Version
* Rustup : rustup-init 1.22.1 (b01adbbc3 2020-07-08)
* Toolbox : 0.0.96v
เกริ่นนำยาวยืด
เนื่องด้วยปกติแล้ว เดียวนี้เวลาจะติดตั้งตัว compiler ของภาษาต่างๆ เรามักจะใช้ tool ในการจัดการเรื่องเว่อร์ชั่นเช่น nvm, venv เป็นต้น ในฝั่ง rust นั้นก็มีตัวจัดการชื่อว่า RustUp ซึ่งเราก็สามารถ ติดตั้งอย่างง่ายดายด้วยคำสั่งเดียวผ่านทาง command line ตามนี้เลย - RustUp
อ่าวแล้วทำไมถึงต้องเขียนบทความขึ้นมาหล่ะหากมันง่ายดายซะขนาดนั้น นั่นก็เพราะตัว Fedora Silverblue จะแนะนำให้ลงใน podman container ที่ถูก manage ผ่านโปรแกรมที่ชื่อ toolbox อีกที (สนใจเรียนรู้เพิ่มเติมก็กด link ได้เลย) นั่นหมายความว่าหากเราจะลง rustup นั้น ถ้าไม่ config อะไรก่อนเลยจะทำให้พวก config ต่างๆนั้นไปลงที่ $HOME ของเราบน host!!! นั่นก็จะทำให้มันไปกองๆกันใน home อยู่เหมือนเดิม กลายเป็นจะแบ่งแยกย่อยไปทำไมหล่ะ!!!!!! เซ็ง..
เตรียมการติดต้ัง
ก่อนอื่นเลยเราต้องสร้าง Toolbox ขึ้นมาก่อน หลังจากนั้นก็ต้องเริ่มจากการสร้าง folder ที่เราจะเอาพวก env, bin, src file ต่างของ rust ไปวางไว้ ผมใช้ตามนี้
[tea@lunarthale ~]$ toolbox create example1
Created container: example1
Enter with: toolbox enter example1
[tea@lunarthale ~]$ toolbox enter example1
⬢[tea@toolbox ~]$ su -
Welcome to the Toolbox; a container where you can install and run
all your tools.
- Use DNF in the usual manner to install command line tools.
- To create a new tools container, run 'toolbox create'.
For more information, see the documentation.
⬢[root@toolbox ~]# mkdir /rustbox
⬢[root@toolbox ~]# chown 1000:1000 /rustbox #Change owner to default account
⬢[root@toolbox ~]# logout
เริ่มการติดตั้ง Rust ด้วย RustUp
เริ่มโดยการ Download rust ลงมาก่อนแหละ save เป็นไฟล์ไว้โดยใช้ user account หลังจากนั้นทำการ export env สองตัวด้วยกันนั่นก็คือ $RUSTUP_HOME กับ $CARGO_HOME
ผมใช้เป็น /rustbox/rustup กับ /rustboxt/cargo
⬢[tea@toolbox rustbox]$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup.sh
⬢[tea@toolbox rustbox]$ chmod +x rustup.sh
⬢[tea@toolbox rustbox]$ export RUSTUP_HOME=/rustbox/rustup
⬢[tea@toolbox rustbox]$ export CARGO_HOME=/rustbox/cargo
⬢[tea@toolbox rustbox]$ ./rustup.sh --no-modify-path
.
.
.
stable installed - rustc 1.47.0 (18bf6b4f0 2020-10-07)
Rust is installed now. Great!
To get started you need Cargo's bin directory (/rustbox/cargo/bin) in your PATH
environment variable.
To configure your current shell run source /rustbox/cargo/env
ลงเรียบร้อย เริ่มใช้งานได้เลยเพียงแค่สั่ง source /rustbox/cargo/env
Source enviroment ผ่าน profile.d
ในการที่จะไม่ต้องมาคอยต้องนั่ง source /rustbox/cargo/env
ทุกครั้งให้ยุ่งยาก ให้เปลี่ยนเป็น root แล้วไปสร้างไฟล์ไว้ใน /etc/profile.d/
เอาไว้ให้เมื่อ toolbox enter แล้วสามารถใช้คำสั่ง rustup, rustfmt, cargo ได้ทันที
⬢[root@toolbox ~]# cat /etc/profile.d/source-rust.sh
# source rust to initialise
export RUSTUP_HOME=/rustbox/rustup
export CARGO_HOME=/rustbox/cargo
source /rustbox/cargo/env
เท่านี้ก็เป็นอันเรียบร้อย เราก็จะมี toolbox สำหรับไว้ใช้ในการพัฒนา rust ได้โดยไม่ไปเลอะ $HOME directory แถมยังถูก isolated ออกจาก host system ของเราอีกด้วย
#UPDATED
หากเจอ Error ขึ้นประมาณนี้ error: linker ``cc`` not found
แสดงว่ายังไม่ได้ลง GCC ไว้ใน toolbox ก็จัดการลงซะนะจะได้จบๆเรื่อง T_T
- ป.ล. ถ้าอยากใช้ ide ในการพัฒนา ต้องลง ide ไว้ใน toolbox เพื่อให้ ide สามารถหา rust binary ที่เราลงไว้ได้