Category Archive Linux

Linux: upgrade PHP version ล่าสุด

php ก็เหมือนโปรแกรมอื่น ๆ จะมีการอัพเดต อัพเกรดเวอร์ชั่นเป็นระยะเพื่อเพิ่มความสามารถและความปลอดภัย การอัพเดตใน linux และ wsl สามารถทำได้ง่าย ๆ

  1. Update ระบบโดยรวมก่อน

    sudo apt update && sudo apt -y upgrade
  2. เพิ่ม Surý PHP APT repository

    sudo apt update

    sudo apt install -y lsb-release gnupg2 ca-certificates apt-transport-https software-properties-common

    sudo add-apt-repository ppa:ondrej/php
  3. ติดตั้ง PHP ตัวล่าสุด

    sudo apt install php8.2
  4. เช็ค php version โดย

    php -v
  5. ติดตั้ง extension เพิ่มเติม เช่น

    sudo apt-get install -y libapache2-mod-php8.2 libphp8.2-embed mcrypt openssl php-bcmath php-cli php-common php-curl php-fpm php-gd php-gmp php-intl php-mbstring php-mysql php-tokenizer php-xml php-xmlrpc php-zip php8.2 php8.2-bcmath php8.2-cgi php8.2-cli php8.2-common php8.2-curl php8.2-dev php8.2-fpm php8.2-gd php8.2-imagick php8.2-imap php8.2-mbstring php8.2-mysql php8.2-phpdbg php8.2-soap php8.2-xml php8.2-xmlrpc php8.2-zip
  6. ผูก Apache และ PHP

    sudo apt install apache2 php-fpm

ดูเพิ่มเติม How To Install PHP 8.2 on Ubuntu 22.04|20.04|18.04

WSL: ติดตั้ง firefox

ต้องการติดตั้ง firefox ไว้เทสงานโดยเฉพาะ เลยติดตั้งใน wsl (Windows Subsystem for Linux)

sudo snap remove firefox
sudo apt remove firefox
sudo add-apt-repository ppa:mozillateam/ppa

# สร้างไฟล์ใหม่ว่าง ๆ
sudo nano /etc/apt/preferences.d/mozillateamppa

# ใส่เนื้อหา
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501

# save file แล้ว
sudo apt update
sudo apt install firefox #หรือ firefox-esr

เรียกใช้โดยคำสั่ง firefox มันจะเปิดขึ้นมาแบบเป็น gui สวยงามเหมือนที่อยู่ในลินุกซ์แท้ ๆ เลย แต่ถ้าลองเปิดเว็บไทยแล้วอ่านไม่ออกให้ติดตั้งฟอนต์ไทยก่อน ตามวิธี Linux: ติดตั้งฟอนต์ภาษาไทย

Cr. How do I install Firefox in WSL, when it requires snap, but snap doesn’t work?

WSL: ปิดการทำงาน

เพราะว่าไม่ได้ใช้งาน wsl ตลอดเวลา การจะเปิดให้มันทำงานไว้ ก็จะหนักเครื่องเปล่า ๆ ไม่ใช้ก็ “ปิด” ซิครับ

  1. เปิดตัว command prompt / dos / Windows Terminal / Window PowerShell ที่มีอยู่
  2. หารายชื่อตัว wsl ที่กำลังทำงานอยู่โดยใช้
    wsl.exe --list --running
  3. จะเห็นรายชื่อที่ทำงานอยู่เช่น Ubuntu (Default)
  4. ปิดการทำงานโดยคำสั่ง
    wsl --terminate <DistributionName>
    เช่น
    wsl –terminate ubuntu

Cr. Terminate Running WSL Linux Distro in Windows 10

WSL: Remove links shortcut

การนำ link ออกโดยไม่เป็นการลบไฟล์ข้างในออก ทำได้โดย

  1. cd ไปที่ parent path ที่ต้องการจะนำ linlk ออกก่อน เช่น ทำ links ไว้ที่ /var/www/prototypes_laravel/www ก็จะเป็น /var/www/prototypes_laravel

    cd /var/www/prototypes_laravel
  2. list รายการที่เป็น link โดย

    ls -l

    จะเห็นข้อมูลประมาณ
    total 0
    lrwxrwxrwx 1 root root 48 Jul 5 10:40 www -> /mnt/c/UsersDatas/var/www/prototypes_laravel/www
    list รายการที่เป็น link โดย

    ls -l

    จะเห็นข้อมูลประมาณ

    total 0
    lrwxrwxrwx 1 root root 48 { เวลา } www -> /mnt/c/UsersDatas/var/www/prototypes_laravel/www

    โดยหลังเวลาจะเห็นส่วนที่เป็น link คือ www
  3. นำลิงค์ออกไปโดยคำสั่ง sudo unlink { link } เช่น

    sudo unlink www

path /var/www/prototypes_laravel จะไม่มี folder www ให้เห็นแล้ว แต่ใน /mnt/c/UsersDatas/var/www/prototypes_laravel/www จะยังมีไฟล์ต่าง ๆ อยู่ครบเหมือนเดิม

WSL: mount linux disk

วิธีทำให้ WSL: Windows Subsystem for Linux มองเห็น hard disk ที่สร้างไว้เป็น Linux partition และสามารถใช้ได้เหมือนกับว่าเป็น disk ของตัว windows เอง

  1. เริ่มจาก list hard disk โดยใช้ Windows PowerShell as an Administrator

    GET-CimInstance -query “SELECT * from Win32_DiskDrive”

    จะเห็นรายชื่อ hard disk ที่มีอยู่ในเครื่อง เช่น \\.\PHYSICALDRIVE1 WD My Book 25EE USB Device 1 0659787734 WD My Book 25EE USB Device . ให้ดูที่ DeviceID ในบรรทัดนี้คือ \\.\PHYSICALDRIVE1 คือ <DiskPath> ที่จะนำมาใช้ อ้างอิง
  2. mount disk โดยรูปแบบ wsl –mount <DiskPath> เช่น

    wsl –mount \\.\PHYSICALDRIVE1 –bare

    บางครั้ง จะมี error
    The disk ‘\\.\PHYSICALDRIVE1‘ is already attached.
    Error code: Wsl/Service/AttachDisk/WSL_E_DISK_ALREADY_ATTACHED
    เกิดจาการที่ hard disk ลูกนี้เคย mount เอาไว้แล้ว
  3. ทดลอง list hard disk และ partition ใน Linux command ( Ubuntu )

    lsblk

    จะเห็น partition name เช่น sda, sdb, sdc, sdd
  4. mount partition แรก โดยคำสั่ง

    wsl –mount \\.\PHYSICALDRIVE1 –partition 1

    จะมีข้อความตอบกลับมาเช่น

    The disk was successfully mounted as ‘/mnt/wsl/PHYSICALDRIVE1p1‘.
    Note: The location will be different if you have modified the automount.root setting in /etc/wsl.conf.
    To unmount and detach the disk, run ‘wsl.exe –unmount \\.\PHYSICALDRIVE1’.
  5. เข้าไปดู ไปใช้ไฟล์ได้ใน \wsl.localhost\Ubuntu\mnt\wsl\PHYSICALDRIVE1p1 ถ้า wsl ของเราชื่อ Ubuntu และ path ที่ mount ไว้คือ /mnt/wsl/PHYSICALDRIVE1p1
  6. เมื่อใช้เสร็จแล้ว ควรเอาออกไปโดยใช้คำสั่ง wsl –unmount <DiskPath> เช่น

    wsl –unmount \\.\PHYSICALDRIVE1

ในครั้งต่อไป ถ้าทราบ แล้ว สามารถเริ่มที่ ขั้นตอนที่ 4 ได้เลยครับ หรือถ้าใช้บ่อย ๆ ก็ระบุชื่อโดยใช้

wsl –mount –name myDisk
* ใช่ – – สองตัวทุกจุดนะครับ ไม่ใช่ – เดียว
อ่านเพิ่มเติม

WSL: Creating links shortcut

การสร้าง hard link หรือ Symbolic link ใน linux จะคล้าย ๆ การทำ shortcut ให้สามารถเข้าไปใช้ไฟล์หรือfolder ได้ง่าย ๆ เหมือน windows shortcut

การใช้ command นี้มีรูปแบบ ln source_file target_file เช่น ต้องการทำ shortcut ให้ /mnt/c/UsersDatas/var/www/prototypes_laravel/www สามารถเรียกใช้ได้จาก /var/www/prototypes_laravel/www ใน linux จะใช้คำสั่ง

sudo ln -s /mnt/c/UsersDatas/var/www/prototypes_laravel/www /var/www/prototypes_laravel/www

ทดสอบโดยใช้ คำสั่งเช่น cd /var/www/prototypes_laravel/www
ls
จะเห็นว่าสิ่งที่อยู่ด้านในจะเหมือนกับที่อยู่ใน /mnt/c/UsersDatas/var/www/prototypes_laravel/www หรือ C:\UsersDatas\var\www\prototypes_laravel\www

ดูเพิ่มเติม

WSL: mkdir สร้าง windows folder ใหม่

วิธีสร้าง folder ใหม่โดยปกติจะมีรูปแบบ mkdir { folder path } ใน wsl สามารถสร้าง folder ในวินโดว์ได้โดยใช้รูปแบบ sudo mkdir /mnt/{ drive letter }/{ folder path } เช่น จะสร้าง C:\UsersDatas\var\www\prototypes_laravel จะใช้ จะใช้ command
sudo mkdir /mnt/c/UsersDatas/var/www/prototypes_laravel
แต่ถ้าหากไม่มี folder C:\UsersDatas\var\www มาก่อนจะมี error แสดง
mkdir: cannot create directory ‘/mnt/c/UsersDatas/var/www/prototypes_laravel’: No such file or directory
แก้ได้โดยใช้ parameter -p เช่น

sudo mkdir -p /mnt/c/UsersDatas/var/www/prototypes_laravel

ก็จะสร้าง C:\UsersDatas\var\www\prototypes_laravel ตามที่ต้องการ

อ่านเพิ่มเติม WSL: Creating links shortcut


Linux: ติดตั้งฟอนต์ภาษาไทย

วิธีติดตั้งฟอนต์ภาษาไทยหลังจากที่ลง Linux ทำแค่ขั้นตอนที่ 1 จริงๆ ก็ทำให้อ่านเว็บภาษาไทยได้แล้ว แต่ถ้าอยากให้เห็นเหมือนที่ดูใน windows อาจจะทำขั้นตอนอื่น ๆ เพิ่ม

  1. ติดตั้ง Fonts-TLWG
    sudo apt install fonts-thai-tlwg
  2. ติดตั้ง SiPA thai fonts
    sudo wget ftp://ftp.psu.ac.th/pub/thaifonts/sipa-fonts/*ttf -P /usr/share/fonts/truetype/thai
  3. ติดตั้ง xfonts-thai
    sudo apt install xfonts-thai
  4. ติดตั้งหลาย ๆ ตัวพร้อมกัน
    sudo apt-get install fonts-thai-tlwg xfonts-thai xfonts-thai-etl xfonts-thai-manop xfonts-thai-nectec xfonts-thai-poonlap xfonts-thai-vor
  5. ติดตั้งของ MicroSoft ( มีลิขสิทธ์นะ )
    sudo apt-get install msttcorefonts

มีหลายท่านที่ได้ช่วยเขียนคู่มือแบบละเอียดไว้ให้

Linux: reinstall Ubuntu

อยู่ ๆ อูบุนตูมันเป็นตู่อะไรก็ไม่รู้ รวน ๆ แปลกอยากจะลงใหม่แต่ว่าไม่อยากที่จะทำอะไรมาก ขี้เกียจจะลงอะไรใหม่ ไปเจอวิธีที่ซ่อมให้กลับมาใช้ได้

  1. sudo apt-get clean
  2. สร้างไฟล์ reinstall_all.sh เช่น nano reinstall_all.sh แล้วใส่เนื้อหา
    #!/bin/bash
    for pkg in dpkg --get-selections | awk '{print $1}' | egrep -v '(dpkg|apt|mysql|mythtv)' ; do apt-get -y –force-yes install –reinstall $pkg ; done
  3. sudo chown root:root reinstall_all.sh
  4. sudo chmod 755 reinstall_all.sh
  5. sudo ./reinstall_all.sh
  6. รอตอบคำถามบางอย่าง

ดูจากเวลาแล้วใช้เวลาเยอะอยู่เหมือน แต่ก็ดีกว่ามาไล่เซ็ตหลาย ๆ อย่างใหม่ตั้งแต่ต้น ขอบคุณ
Force reinstall of all Ubuntu packages