คุณต้องการแปลง Linux package ให้เป็นรูปแบบอื่นไหม? อาจเป็นแพ็กเกจที่คุณหาไม่เจอสำหรับ distro ของคุณแต่อยากได้มาก หรือคุณเป็น developer และอยากประหยัดเวลาโดย repack โปรแกรมให้เป็นรูปแบบอื่นๆ ได้เร็วโดยไม่ต้อง build package ใหม่
โชคดีที่ Linux มีเครื่องมือที่คุณต้องการ ด้วย Alien คุณสามารถแปลง Linux package ที่มีอยู่ให้เป็นรูปแบบอื่นๆ ผ่าน command line ได้ง่าย มาเริ่มต้นด้วยการติดตั้งเครื่องมือบนระบบของคุณก่อน
วิธีติดตั้ง Alien บน Linux
Alien มีอยู่ใน Ubuntu universe repository ในการติดตั้ง ให้เปิดใช้งาน repository universe ก่อน และอัปเดต package list ของระบบ จากนั้นติดตั้งแพ็กเกจ alien ด้วย APT ตามปกติ
sudo add-apt-repository universe
sudo apt update
sudo apt install alien
ผู้ใช้ Debian ติดตั้งแพ็กเกจด้วย APT ได้เลย:
sudo apt install alien
Alien ยังไม่มีใน official Arch repositories แต่คุณติดตั้งจาก AUR ได้โดยใช้ AUR helper สำหรับคู่มือนี้ เราจะใช้ yay
yay -S alien
บน Fedora, CentOS และ RPM-based distros อื่นๆ คุณติดตั้ง Alien ด้วย DNF ดังนี้:
sudo dnf install alien
เมื่อเสร็จ ตรวจสอบการติดตั้งโดยพิมพ์ alien --version ใน terminal หากคำสั่งคืนค่า version ของแพ็กเกจ การติดตั้งสำเร็จ แต่หากไม่ ให้ลองทำขั้นตอนติดตั้งใหม่
แปลงระหว่าง Linux Packages ด้วย Alien
ด้วย Alien คุณแปลงระหว่าง Linux packages หลายรูปแบบได้ เช่น:
- DEB (Debian-based distros)
- TAR.GZ (Packaged Archive)
- RPM (Fedora, CentOS และ distros อื่นๆ)
- PKG (Solaris package format)
- SLP
- LSB
Alien ตีความตัวเลือกต่อไปนี้:
- -d หรือ --to-dpkg: แปลงแพ็กเกจที่ระบุเป็นรูปแบบ DEB
- -r หรือ --to-rpm: แปลงแพ็กเกจเป็นรูปแบบ RPM
- -t หรือ --to-tgz: สร้างไฟล์ archive TAR.GZ จากแพ็กเกจที่ระบุ
- -l หรือ --to-lsb: สร้างแพ็กเกจ LSB (Linux Standard Base)
- -p หรือ --to-pkg: แปลงแพ็กเกจที่ระบุเป็นรูปแบบ PKG
- --to-slp: สร้างแพ็กเกจ SLP
วิธีใช้ Alien บน Linux
Syntax พื้นฐานของ utility คือ:
sudo alien options filename
...โดยที่ options คือ flags ต่างๆ ที่ใช้กับคำสั่ง และ filename คือ absolute หรือ relative path ไปยังแพ็กเกจที่ต้องการแปลง
เพื่อแปลงแพ็กเกจ RPM เป็น DEB:
sudo alien --d file.rpm
sudo alien --to-deb file.rpm
เพื่อสาธิตการแปลงแพ็กเกจเป็นรูปแบบทั้งหมด เราจะแปลงไฟล์ DEB เป็น Linux packages อื่นๆ
DEB เป็น RPM:
sudo alien -r file.deb
sudo alien --to-rpm file.deb
DEB เป็น TAR.GZ:
sudo alien -t file.deb
sudo alien --to-tgz file.deb
DEB เป็น LSB: sudo alien -l file.deb sudo alien --to-lsb file.deb DEB เป็น PKG:
sudo alien -p file.deb
sudo alien --to-pkg file.deb
DEB เป็น SLP:
sudo alien --to-slp file.deb
โปรดทราบว่าคุณสามารถแปลงรูปแบบแพ็กเกจใดก็ได้เป็นรูปแบบอื่นใดก็ได้ เช่น RPM เป็น LSB, SLP เป็น PKG, PKG เป็น DEB ฯลฯ
การแปลงแพ็กเกจเป็นหลายรูปแบบด้วยคำสั่งเดียวก็เป็นไปได้ แค่ระบุ flags สำหรับการแปลงดังนี้:
sudo alien --to-deb --to-rpm --to-tgz file.pkg
sudo alien -d -r -p file.tar.gz
หากแพ็กเกจมี scripts เฉพาะรูปแบบ คุณสามารถแปลง scripts นั้นๆ ได้ด้วย flag --scripts หรือ -c
sudo alien --scripts --to-deb file.rpm
sudo alien -c --to-deb file.rpm
ติดตั้งแพ็กเกจหลังการแปลง
นอกจากการแปลงแพ็กเกจแล้ว Alien ยังติดตั้งแพ็กเกจให้คุณได้ คุณเพิ่ม flag --install หรือ -i กับคำสั่งเพื่อติดตั้งแพ็กเกจทันทีหลังแปลง
ตัวอย่าง:
sudo alien --to-rpm --install file.deb
sudo alien -r -i file.deb
การจัดการข้อมูลเวอร์ชันระหว่างการแปลง
โดยค่าเริ่มต้น Alien จะเพิ่ม version details ของแพ็กเกจอัตโนมัติ หากคุณแปลงแพ็กเกจเวอร์ชัน 1.17.1 ด้วย Alien แพ็กเกจที่สร้างขึ้นจะมีเวอร์ชัน 1.17.2
คุณสามารถ override พฤติกรรมค่าเริ่มต้นนี้ได้โดยใช้ flag -k หรือ --keep-version ดังนี้:
sudo alien --to-rpm -k file.deb
sudo alien --to-rpm --keep-version file.deb
ตอนนี้คุณแปลงแพ็กเกจใน Linux ได้แล้ว
ในฐานะ developer การ rebuild package สำหรับ Linux distros ต่างๆ อาจยาก ดังนั้นคุณสามารถใช้ Alien แปลงแพ็กเกจเป็นรูปแบบ Linux อื่นๆ ได้ง่าย
แม้ Alien จะเป็น utility น่าเชื่อถือ แต่ไม่แนะนำหากคุณต้องการพัฒนา native packages สำหรับ distros อย่างถูกต้อง นอกจากนี้ ขณะเผยแพร่แพ็กเกจ คุณควรระบุ dependencies ที่โปรแกรมต้องการเสมอ