AGMS#2: ทำ .deb ใน 2 นาที.part2


Posted in:

ต่อครับ จากตอนที่แล้วที่เราทำแพคเกจโปรแกรมกัน มาทำอะไรเพี้ยนๆกันต่อครับ

/me อ๊ะ เมื่อคืนปั่นบทความที่ server แล้วก็ลืมปิด checkinstall จนถึงเช้าเลยแฮะ

1. ใส่ dependencies
จากที่บอกไปแล้วว่าถ้ากด 10 แล้วจะไม่ให้ใส่ อันนี้ก็มีทางแก้อยู่แล้วครับ ก่อนอื่นเปิด /usr/bin/checkinstall มาแก้ครับ(โค๊ดคุ้นๆ ก็มันเป็น shell script ไงครับ) ในที่นี้ผมใช้ nano นะครับ
เปิดไปที่บรรทัดที่ 1369 ครับ(กด ctrl ค้าง กด wt ปล่อย ctrl พิมพ์ 1369)

[ "$CK_REDHAT" ] & {

มันบังคับเป็นหมวกแดงครับ ทีนี้เราแก้แค้นมันบ้าง เติม # หน้าบรรทัดครับ จากนั้นลงมานิดๆจะเจอ } (บรรทัด 1373) อยู่ก็ใส่ # ข้างหน้าด้วยครับ
จากนั้นลองใส่ deps ดูครับ ใส่ได้แล้ว(ผมเพิ่งเริ่มใส่ตอนทำ tuxpaint ให้คุณ Ae01 นั่นแหละครับ)

2. deb แปลกๆ
ทีนี้มันจะมีบ้าง ที่แพคเกจไม่มโปรแกรมติดตั้ง เช่นฟอนต์ ธีม แบบนี้ไงครับ ผมก็คิด เอ๊ะแล้วจะทำ deb ยังไง คิดไปคิดมา "งั้นเราทำโปรแกรมติดตั้งเองสิ" และก็ได้ผลครับ โดยสร้างไฟล์มาไฟล์นึง(ไม่แนะำนำให้ชื่อ setup รู้สึกว่าจะมีปัญหา เป็น setup.sh ก็ได้ครับ) เขียน shell script ลงไป เช่นของผม

#!/bin/bash
cp filea /usr/share/
cp fileb /usr/share

ประมาณนี้อ่ะครับ คือ cp กันตรงๆไปเลยไม่มี sudo อะไรเลยครับ แล้วก็

$ sudo checkinstall ./setup.sh

ก็ได้แล้วครับ ;) แบบนี้เรียกว่า Hack ครับ(ทางการหน่อยเรียก workaround คือมันไม่ได้แก้ปัญหานั้นโดยตรงเลย แต่ว่าพอช่วยให้ผ่านไปได้ อย่างอันนี้ถ้าแก้ตรงๆ อาจจะต้องทำ control file ตามวิธีคุณ Treddy แต่อันนี้ผม hack เขียน shell script ขึ้นมาให้ checkinstall)

3. preinstall postinstall preremove postremove
เคยเห็น deb บางตัว เช่นพวก servers ต่างๆรึเปล่าครับ ลงเสร็จมีการ start server ให้เราได้ด้วย(หลังลบก็มีเหมือนกัน) แบบนี้เราก็ทำได้ครับ แต่ยุ่งยากหน่อย โดยอันนี้เนี่ยไม่มีเขียนใน manpage นะครับผมไปค้นจาก http://www.asic-linux.com.mx/~izto/checkinstall/docs/README (เว็บหลักของโปรแกรมเลย) เขาบอกว่าให้เราเขียน script ที่จะรันต่างๆ ในไฟล์ต่อไปนี้ครับ

preinstall-pak รันก่อนแพคเกจจะถูกติดตั้ง
postinstall-pak รันหลังแพคเกจจะถูกติดตั้ง
preremove-pak รันก่อนแพคเกจจะถูกลบ
prostremove-pak รันหลังแพคเกจจะถูกลบ

 แล้ว checkinstall ตามปกติเลยครับ มันจะรวมเข้าไปเอง

 

คิดว่าเทคนิคการใช้ checkinstall คงมีเพียงเท่านี้นะครับ ตอนหน้าคิดว่าจะเขียนเรื่อง dev หน่อยเกี่ยวกับลูกเล่น php+apache ครับ

Reply

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <i> <center> <span> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <br> <dt> <dd> <object> <embed> <hr> <img> <blockquote> <b> <u> <del> <div> <p> <table> <tr> <td> <font>

More information about formatting options