Đề án phần mềm xloadimage dừng chân ở địa chỉ http://ftp.x.org/R5contrib/xloadimage.4.1.tar.gz vào năm 1993, sau đó được Debian tiếp tục phát triển. Gói mã nguồn xloadimage_4.1-19 hiện nay trên https://packages.debian.org/wheezy/xloadimage gồm có tệp mã nguồn gốc xloadimage_4.1.orig.tar.gz và tệp các bản vá và phát triển của Debian, xloadimage_4.1-19.debian.tar.gz. Ngoài ra, tệp xloadimage_4.1-19.dsc chứa thông tin gói đã ký trong đó có thông tin xác minh hai tệp nguồn kia. Xây dựng xloadimage không thuận tiện như những gói phần mềm khác, có bước phải làm thủ công. Chúng ta dường như không mong đợi phải xây dựng gói phần mềm như vậy, nhưng đôi khi, tình huống ngẫu nhiên khiến chúng ta phải đi sâu vào học thuật, chạm tới mức nghệ thuật.
Tải về xloadimage_4.1-19 và xác minh thông tin gói
Các dòng lệnh dưới đây thực hiện tải về cùng lúc cả ba tệp, chứa vào trong thư mục xloadimage_4.1-19, rồi chuyển tới thư mục đó
wget http://ftp.de.debian.org/debian/pool/main/x/xloadimage/\ xloadimage_4.1{-19.dsc,.orig.tar.gz,-19.debian.tar.gz} -P xloadimage_4.1-19 cd xloadimage_4.1-19/
Xác minh thông tin gói như sau
gpg2 --verify xloadimage_4.1-19.dsc
gpg: Signature made Thu 03 May 2012 04:57:08 PM ICT using DSA key ID C9B55DAC
gpg: Can't check signature: No public key
Chưa được, chúng ta chưa có khóa C9B55DAC, nó cần được nhập khẩu
gpg2 --recv-key 0xC9B55DAC
gpg: requesting key C9B55DAC from hkp server keys.gnupg.net
gpg: key C9B55DAC: public key "Ricardo Mones Lastra <ricardo@mones.org>" imported
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2025-01-01
gpg: Total number processed: 1
gpg: imported: 1
Khóa có thể đã trải qua một thời gian dài và được ký với nhiều chữ ký khóa. Nếu muốn xóa bỏ những chữ ký không còn sử dụng, bạn thực hiện lệnh
gpg2 --edit-key 0xC9B55DAC clean
Sau khi đã có khóa, kết quả xác minh lại như sau
gpg2 --verify xloadimage_4.1-19.dsc
gpg: Signature made Thu 03 May 2012 04:57:08 PM ICT using DSA key ID C9B55DAC
gpg: Good signature from "Ricardo Mones Lastra <ricardo@mones.org>" [unknown]
gpg: aka "Ricardo Mones <mones@debian.org>" [unknown]
gpg: aka "Ricardo Mones Lastra <mones@citipa.org>" [unknown]
gpg: aka "Ricardo Mones Lastra <mones@debian.org>" [unknown]
gpg: aka "Ricardo Mones Lastra <mones@users.sourceforge.net>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: CFB7 C779 6BAE E81C 3E05 7172 2C04 5542 C9B5 5DAC
Xác minh các tệp mã nguồn
sha256sum xloadimage_4.1.orig.tar.gz
400bc7d84dcfb3265a7a1ce51819679dc3adaeda231514bd89b0f932b78ff5c4 xloadimage_4.1.orig.tar.gz
Mã băm trên của tệp xloadimage_4.1.orig.tar.gz phải trùng với mã băm tương ứng với nó trong nội dung của tệp thông tin gói xloadimage_4.1-19.dsc đã được xác nhận. Bạn có thể kiểm tra điều này bằng mắt, nhưng nhanh hơn thì sử dụng lệnh sau đây
grep b78ff5c4 xloadimage_4.1-19.dsc | cut -d' ' -f2,4 | sha256sum -c
xloadimage_4.1.orig.tar.gz: OK
Làm tương tự đối với tệp xloadimage_4.1-19.debian.tar.gz
sha256sum xloadimage_4.1-19.debian.tar.gz
5794dfbba25f6f02c0b07d49320154d4bea46ad1c8277866f79b1a6bfcd48cb8 xloadimage_4.1-19.debian.tar.gz
grep fcd48cb8 xloadimage_4.1-19.dsc | cut -d' ' -f2,4 | sha256sum -c
xloadimage_4.1-19.debian.tar.gz: OK
Xây dựng gói
Hai tệp mã nguồn đã được xác minh, chúng ta giải nén chúng vào hai thư mục tương ứng là xloadimage.4.1 và debian rồi chuyển đến thư mục xloadimage.4.1
tar xf xloadimage_4.1.orig.tar.gz
tar xf xloadimage_4.1-19.debian.tar.gz
cd xloadimage.4.1/
Xong rồi áp dụng các bản vá của Debian vào mã nguồn gốc
for file in ../debian/patches/*.patch; do patch -Np1 -i $file; done
Để chuẩn bị cấu hình gói, đảm bảo kịch bản configure trở thành thi hành được
chmod u+x configure
Bây giờ chúng ta đã sẵn sàng cấu hình và biên dịch gói
./configure --prefix=/usr
make
Không may, tệp mã nguồn jpeg.c có lỗi
jpeg.c: In function 'parseOptions':
jpeg.c:326:5: error: expected '}' before 'else'
else if (!strncmp("grayscale", name, strlen(name)) ||
^
make: *** [jpeg.o] Error 1
Chúng ta sửa lỗi mã nguồn, dòng lệnh dưới đây là một nghệ thuật
sed -n '324,+1{N;s,^ *}\n#endif$,#endif\n },};p' -i jpeg.c
Tệp mã nguồn jpeg.c đã được sửa xong, biên dịch đã có thể hoàn thành
make
Cài đặt gói
Bạn có thể chép toàn bộ khối lệnh dưới đây vào cửa sổ lệnh rồi ấn Enter
sudo install -m 755 xloadimage /usr/bin/ && sudo install -m 755 uufilter /usr/bin/ && sudo ln -s xloadimage /usr/bin/xsetbg && sudo ln -s xloadimage /usr/bin/xview && sudo install -m 644 xloadimagerc /etc/X11/Xloadimage && sudo install -m 644 xloadimage.man /usr/share/man/man1/xloadimage.1x && sudo gzip /usr/share/man/man1/xloadimage.1x && sudo install -m 644 uufilter.man /usr/share/man/man1/uufilter.1x && sudo gzip /usr/share/man/man1/uufilter.1x && sudo ln -s xloadimage.1x.gz /usr/share/man/man1/xsetbg.1x.gz && sudo ln -s xloadimage.1x.gz /usr/share/man/man1/xview.1x.gz && sudo install -d -m 755 /usr/share/doc/xloadimage/ && sudo install -m 644 README /usr/share/doc/xloadimage/ && cd ../debian/ && sudo install -m 644 copyright /usr/share/doc/xloadimage/ && sudo install -m 644 changelog /usr/share/doc/xloadimage/ && sudo install -m 644 upstream.changelog /usr/share/doc/xloadimage/