Mẹo: pacman thay thế gói cài bởi yaourt

20 views
Skip to first unread message

Anh K. Huynh

unread,
Oct 18, 2011, 9:27:26 AM10/18/11
to archl...@googlegroups.com
Hi,

Khi làm việc với Arch, có lúc bạn phải cài thêm vài gói không phải bằng
@pacman@ (các gói chính thức) mà bằng @yaurt@ (các gói do người dùng
đóng góp ở dạng chỉ thị đóng gói PKGBUILD.) Nếu cài bằng @pacman@ thì
bạn chỉ gói @firefox@ @7.0.1@, trong khi cài bằng @yaourt@ thì bạn có
thể dùng tới phiên bản @8@ (với @firefox-beta-bin@ @8.0b3-1@ tại thời
điểm bài này được viết).

Khi cài bằng @yaourt@ thì sau một thời gian khá lâu, sau vài lần nâng
cấp hệ thống bạn sẽ thấy rằng các gói bằng @yaourt@ đã lạc hậu. Ví dụ,
nếu đến cuối năm nay @firefox 9@ ra mắt, thì khi đó, trong máy của bạn
phiên bản cài bằng @yaourt@ vẫn là @8@. Nói dài dòng, thôi minh họa
bằng sơ đồ như sau

<pre>
| Bây giờ | Tháng 12
pacman| firefox 7 | (thực tế: firefox 9)
yaourt| firefox 8beta| (thực tế: firefox 10beta
máy bạn| firefox 8beta| firefox8 beta
</pre>

Tới tháng 12 thì bạn có thể dùng @yaourt@ để cài tiếp phiên bản @beta@.
Nhưng nếu bạn muốn dùng bản chính thức (@firefox 9@) thì sao? Thật đơn
giản, chỉ việc

1/ Gỡ bỏ phiên bản @firefox@ hiện có bằng lệnh @pacman -R foobar@
2/ Cài phiên bản @firefox@ bằng @pacman@ để dùng gói chính thức

Tưởng dễ mà không dễ. Hai bước trên không thể thực hiện theo thứ tự đã
chỉ ra, nếu bạn chạm tới một số thư việc kéo theo nhiều phần mềm phụ
thuộc. Ví dụ, trên máy của mình đây

<pre>
$ pacman -Rs libkipi-git
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: digikam: requires libkipi
:: kdegraphics-gwenview: requires libkipi
:: kipi-plugins: requires libkipi
</pre>

Mình đã sử dụng gói @libkipi-git@ cài bằng @yaourt@, nhưng gói này làm
bộ @KDE@ của mình bị hỏng, nên mình muốn gỡ nó đi, cài lại. Rõ ràng
cách trên chẳng thể được.

Rất nhiều lần mình gặp vấn đề tương tự, nhưng tặc lưỡi bỏ qua, thôi thì
cứ xài vậy, khỏi gỡ bỏ gì hết. Hóa ra mình không biết đến giải pháp rất
đơn giản như sau đây:

1/ Tìm gói chính thức tương ứng với gói cài bằng @yaourt@.

(Bạn để ý là, gói chính thức @firefox@ thì trong @AUR@ có thể có rất
nhiều tên khác nhau; ở các ví dụ trên đó là @firefox-beta-bin@, và
@libkipi-git@.)

2/ Dùng @pacman@ để cài gói vừa tìm được.

Ví dụ

<pre>
$ pacman -S libkipi
resolving dependencies...
looking for inter-conflicts...
:: libkipi and libkipi-git are in conflict. Remove libkipi-git? [y/N] y

Remove (1): libkipi-git-20111014-1

Total Removed Size: 0.34 MB

Targets (1): libkipi-4.7.2-1

Total Download Size: 0.06 MB
Total Installed Size: 0.24 MB

Proceed with installation? [Y/n] Y
:: Retrieving packages from extra...
</pre>

Có lẽ quá dài dòng, trước khi bạn nhận ra rằng

1/ @pacman@ ưu tiên cài gói từ @repository@ chính thức so với các gói
từ @AUR@ (cài bằng @yaourt@ hay chương trình tương tự)

2/ @pacman@ sẽ tạm thời chấp nhận gỡ bỏ gói cài bằng @yaourt@ trước khi
cài gói mới, mà không đoái hoài tới các gói phụ thuộc.

Đây chính là cách @pacman@ giải quyết một trong những xung đột giữa các
gói.

Chấm hết :)

--
Anh Ky Huynh @ ICT
Registered Linux User #392115

h2vnteam

unread,
Oct 18, 2011, 9:44:11 AM10/18/11
to archl...@googlegroups.com
Hi bac Ky Anh,

Cam on bac da chia se kinh nghiem cung anh em nhe, mot ai do loay hoai mai moi fix duoc mot van de nao do thi nen share voi anh em de ho tranh xa khong dung cham den cac van de gay loi hay dung cham toi library cua he thong. Bua truoc tui pacup lam ca he thong refuse khoi dong vao slim, *.log chiem khoang 5GB, loay hoai mai moi lam cho no hoat dong troi lai. May man la chua phai fresh installtion, chac cung phai mat vai tuan de hoan thien. may bua nay yourt bi loi, loay hoay mai moi sua duoc, mung qua, tu nay chac khong dam remove bay ba nua, no remove luon mot dong dependencies lam dung cham tum lum.


chuc ca nha vui,,,,




--
Keep things simple as "The Arch Way"
Reply all
Reply to author
Forward
0 new messages