(91) 350-9520 support@omarine.org M-F: 7 AM - 7 PM; Weekends: 9 AM - 5 PM

Xây dựng và cài đặt xloadimage

Đề á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.1debian 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/ 
Advertisements

Gửi phản hồi

%d bloggers like this: