Lưu ý: Bài viết này được viết trước khi Skype Linux 4.2 phát hành chính thức, nên một số nội dung có thể không còn áp dụng, mọi thứ có thể suôn sẻ như bơ. Hoặc không. Vui lòng đọc kỹ.
Gần đây, tôi nghe tin đồn/lo ngại rằng Skype không thể cài đặt trên phiên bản Ubuntu mới nhất, 13.04 Raring Ringtail. Hơn nữa, một số người chỉ ra cụ thể Skype không hoạt động trên các phiên bản phi-Unity, như Xubuntu.
Tôi quyết định kiểm tra tin đồn và xác minh. Nếu đúng, cung cấp cho bạn workaround (giải pháp thay thế) để chạy Skype. Đây sẽ là bài học quý giá, vì chúng ta sẽ làm vài việc "geek", hãy theo dõi. Bắt đầu.
Cài đặt Skype
Bạn có thể thử Ubuntu Software Center, hoặc tải bộ cài Debian từ trang chính thức. Lưu ý bộ cài chỉ có phiên bản 32-bit, nên người dùng hệ thống 64-bit có thể lo lắng. Thực tế không có lý do. Nếu double-click file tải về, Ubuntu Software Center sẽ khởi chạy và nhắc cài gói. Nó cũng tự động giải quyết các dependency (phụ thuộc) nền. Tương tự như việc cài Steam gần đây.
Nếu chọn cài từ dòng lệnh, bạn cần ép kiến trúc, tức là như sau:
sudo dpkg -i --force-architecture skype-ubuntu*.deb
Chạy Skype
Sau khi cài gói, chạy nó. Nó sẽ thất bại khả năng cao. Bây giờ, bạn cần debug một chút để hiểu vấn đề. Chúng ta sẽ dùng kỹ năng "hacking" bạn tích lũy sau khi đọc hàng tá hướng dẫn "siêu cấp" của tôi. Thứ nhất, thực thi Skype từ dòng lệnh.
Bạn sẽ thấy lỗi:
Segmentation fault (core dump)
Core dump & Debug cơ bản
Bình thường, core dump lưu trong thư mục làm việc hiện tại (cwd). Nếu kiểm tra nội dung, khả năng cao không thấy file core. Chúng ta nhớ lại hướng dẫn GNU Debugger (gdb) của tôi. Ở đó, chúng ta nói về thu thập core memory của ứng dụng crash. Cụ thể, giới hạn shell có thể được thiết lập sao cho ứng dụng không thể dump core ra đĩa. Trong BASH, kiểm tra bằng ulimit -a.
Thật vậy, kích thước core file được đặt là 0. Chúng ta thay đổi:
ulimit -c unlimited
Giờ chạy lại, core sẽ được thu thập.
Một lần nữa, chúng ta mượn sức gdb, kiểm tra core bên trong debugger. Chúng ta cần trace (dấu vết) các hàm cuối cùng thực thi trước khi crash, vì điều này chỉ hướng đúng.
gdb `which skype` core
Có tiến triển. Đây là phần geek, stack có thể bị corrupt, vì Skype được compile bằng "cừu và sức mạnh huyền bí", nhưng chúng ta thấy crash bắt nguồn từ thư viện chia sẻ libGL. Bạn có thể muốn đổ lỗi driver Nvidia, nhưng không có lý do.
Giải thích đơn giản: Skype mong đợi tìm libGL dưới thư mục mesa, tại /usr/lib32, trong khi hệ thống của bạn có thư viện tại /usr/lib/i386-gnu-linux. Những thay đổi ký tự và ký hiệu nhỏ này có thể gây nhầm lẫn cho ứng dụng. Bây giờ biết rồi, chúng ta triển khai sửa chữa. Một tùy chọn là tạo symbolic link, rồi tạo lại binding runtime cần thiết với ldconfig. Cả hai với sudo.
Nếu không hiệu quả, thử hack này. Nó buộc Skype dùng thư viện hệ thống gốc ở vị trí mong đợi, thay vì tìm trong thư mục legacy và duyệt symbolic link. Với sudo, tạo file:
sudo touch /etc/ld.so.conf.d/skype.conf
Bên trong, dán một dòng:
/usr/lib/i386-linux-gnu/mesa/
Sau đó, chạy lại ldconfig:
sudo ldconfig
Kiểm tra Skype
Hãy xem có hoạt động không. Và nó hoạt động. Trên Xubuntu nữa chứ. Bob là chú chúng ta!
Đọc thêm
Bạn có thể thích:
- Nhiều thủ thuật Skype trên Ask Ubuntu.
- Chủ đề Skype Community Ubuntu 13.04 với triệu chứng tương tự.
- Nhiều hướng dẫn hacking hơn, nếu bạn muốn.
Kết luận
Đây. Skype hoạt động, kể cả Xfce desktop không rõ ràng. Tôi test trên các phiên bản khác, kết quả tương tự. Vậy bạn có giải pháp vững chắc để chạy Skype cho đến khi bản sửa chính thức phát hành. Và điều này đúng cho TẤT CẢ các bản phát hành TƯƠNG LAI!
Tốt nhất, hướng dẫn này dạy bạn rất nhiều: sự khác biệt tinh tế giữa phần mềm 32-bit và 64-bit, cài gói từ dòng lệnh hoặc Software Center, thay đổi giới hạn shell, thu thập core memory ứng dụng, khắc phục sự cố bằng debugger đúng cách, thay đổi file và cấu hình hệ thống, và hơn thế nữa. Bạn hỏi Skype, bạn được Skype, cộng thêm extra. Hy vọng bạn thấy hữu ích. Như bạn thấy, vấn đề đôi khi đơn giản hơn vẻ ngoài. Tận hưởng cuộc trò chuyện quốc tế.
Chào.