Điểm:1

Biên dịch chương trình từ mã nguồn

lá cờ cn

Tôi có một câu hỏi cơ bản liên quan đến các gói và khả năng xây dựng một chương trình trong Ubuntu. Để làm cho nó cụ thể: Tôi đang sử dụng Ubuntu 18.04.6LTS.Giả sử tôi muốn xây dựng Okular từ nguồn để có các tính năng mới nhất [ okular từ nguồn ]. Có một số câu hỏi liên quan về chủ đề này, xem Q1, quý 2, nhưng điều tôi muốn biết là: Khi bắt đầu tải xuống các phụ thuộc cần thiết (ví dụ: tôi cần cmake_3.18.4-2_AMD64.deb, và điều này cần libarchive13_3.4.3-2+b1_AMD64.deb v.v....) làm cách nào để kiểm tra xem tại một thời điểm nào đó, tôi có cần kernel mới hơn không? Bởi vì đây sẽ là kết thúc cuối cùng, phải không (vì tại thời điểm này, tôi thực sự nên trực tiếp cài đặt một hệ điều hành chưa từng có)? Tôi không chắc nó kéo dài đến đâu đúng cách đang làm công việc này. Làm đúng cáchđầu ra của

 ...
     cmake : Phụ thuộc: libarchive13 (>= 3.3.3) nhưng 3.2.2-3.1ubuntu0.7 sẽ được cài đặt
     Phụ thuộc: libgcc-s1 (>= 3.0) nhưng không thể cài đặt
     Phụ thuộc: libjsoncpp24 (>= 1.9.4) nhưng không thể cài đặt
     Phụ thuộc: libstdC++6 (>= 9) nhưng 8.4.0-1ubuntu1~18.04 sẽ được cài đặt

 ...

nghĩa chính xác là điều này, cụ thể là việc cài đặt tất cả các phụ thuộc cần thiết để thành công là vô vọng? Tôi không sợ nhiều việc nhưng tôi muốn biết trước liệu việc tự mình xây dựng gói có lãng phí thời gian hay không. Quy trình tốt nhất ở đây (ngoại trừ cập nhật hệ thống) là gì?

Pilot6 avatar
lá cờ cn
Tại sao bạn tải xuống các gói theo cách thủ công7 Chạy `sudo apt install build-essential` và tất cả các phụ thuộc sẽ được cài đặt. Hoặc cài đặt tại thuê `cmake`.
pawel_winzig avatar
lá cờ cn
@Pilot6: Kết quả này là từ quá trình cài đặt `cmake_3.18.4-2_amd64.deb`. Vì vậy, tôi nên tiếp tục hay nó là vô vọng?
pawel_winzig avatar
lá cờ cn
@Pilot6: Và nhân tiện, tôi đã cài đặt `build-essential`...
Pilot6 avatar
lá cờ cn
`Sudo apt install cmake` Apt nên xử lý các phần phụ thuộc.
pawel_winzig avatar
lá cờ cn
@Pilot6: Chà, tất nhiên đây là điều tôi đã làm rồi, đây là kết quả: `Các gói sau đây có các phụ thuộc chưa được đáp ứng: cmake : Phụ thuộc: cmake-data (= 3.10.2-1ubuntu2.18.04.2) nhưng 3.18.4-2 sẽ được cài đặt`
pawel_winzig avatar
lá cờ cn
Vì vậy, trở lại câu hỏi của tôi: Có đáng để tiếp tục không?
Pilot6 avatar
lá cờ cn
Có thể là do bạn đã tải xuống và cài đặt phiên bản sai một số cách thủ công.
Pilot6 avatar
lá cờ cn
Xóa `cmake` và cài đặt lại.Phiên bản 3.18 không dành cho Ubuntu 18.04.
pawel_winzig avatar
lá cờ cn
Tôi hiểu rồi, tôi có thể kiểm tra xem nó có dành cho Ubuntu 18.04 hay không? Tôi thực sự đã cài đặt 3.18 từ kho lưu trữ Debian
user535733 avatar
lá cờ cn
Khi tìm hiểu về các phiên bản khác nhau, việc sử dụng Container hoặc VM (hoặc trong Python là venv) thường hữu ích để ngăn tất cả các phiên bản lạ làm ô nhiễm hệ thống cơ sở của bạn.
user535733 avatar
lá cờ cn
Vì bạn đã cài đặt bản dựng cần thiết, hãy thử `rmadison`. Ví dụ: `rmadison cmake` sẽ cho bạn biết các phiên bản và bản phát hành phù hợp của Ubuntu. `rmadison -u debian cmake` sẽ cho bạn biết điều tương tự đối với Debian.
pawel_winzig avatar
lá cờ cn
@ user535733 `rmadison cmake` cho tôi biết rằng phiên bản cao nhất của `cmake` mà tôi có thể có cho Ubuntu 18.04 là `3.10.2-1ubuntu2.18.04.2`. Vì CMake 3.16 trở lên là cần thiết cho bản dựng Okular nên không có cách nào để cài đặt nó, phải không?
user535733 avatar
lá cờ cn
Hầu như luôn luôn có một cách. Nhưng nó nói với bạn rằng con đường cụ thể sẽ không dễ dàng. Vào thời điểm bạn đã nâng cấp các phụ thuộc, về cơ bản, bạn sẽ chạy 21.04 hoặc 21.10...và việc đạt được điều đó có thể rất xấu. Có lẽ đó không phải là con đường bạn muốn. Hầu hết các tài liệu xây dựng đều giả định rằng bạn muốn có phần mềm cập nhật, nghĩa là bạn cần các phần phụ thuộc cập nhật.
pawel_winzig avatar
lá cờ cn
@ user535733 Nhưng đây mới chính là vấn đề. "Con đường sẽ không dễ dàng" nói với tôi điều gì? Nó có thể bị lỗi hay chỉ đơn giản là cài đặt rất nhiều phụ thuộc? Chính sự mờ nhạt này là không cần thiết.
user535733 avatar
lá cờ cn
Nó mờ vì chúng tôi chưa kiểm tra những gì bạn đang làm. Bạn đang tắt con đường được đánh dấu. Ý kiến ​​​​của tôi là bạn sẽ phá hủy hệ thống của mình khi cố cài đặt phần mềm tiên tiến nhất vào hệ thống dựa trên Debian 3 năm tuổi. Bạn sẽ không thể điều hòa tất cả các xung đột phụ thuộc mà bạn sẽ tạo ra. Tuy nhiên, tôi đã không kiểm tra điều đó. Tôi có thể sai hoàn toàn.
pawel_winzig avatar
lá cờ cn
@ user535733 Tôi hỏi điều này vì tôi đang nghĩ đến tình huống sau: Giả sử bạn đang chạy một cụm trên Debian 10, nơi việc cập nhật HĐH (thời gian ngừng hoạt động, v.v.) không đơn giản như vậy. Khi nào tôi nên nói: Ở đây tôi có thể mạo hiểm biên dịch từ nguồn để có phiên bản mới hơn của một số gói?
N0rbert avatar
lá cờ zw
Debian 10 lạc đề ở đây. Trên Ubuntu, hãy sử dụng flatpak như được mô tả trong câu trả lời bên dưới.
Điểm:2
lá cờ zw

Bạn không thể biên dịch phần mềm rất mới trên hệ thống không quá cũ vì sự phụ thuộc. Cài đặt thủ công các phụ thuộc mới trên hệ thống cũ sẽ phá vỡ nó.

Là giải pháp thay thế không gây hại, bạn có thể sử dụng Flatpak 21.08.2 Okular từ KDE thay vào đó là trên Ubuntu 18.04 LTS của bạn. Cài đặt nó với:

Sudo add-apt-repository ppa:flatpak/stable
cập nhật sudo apt
sudo apt cài đặt flatpak

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

flatpak cài đặt flathub org.kde.okular

Và để bắt đầu sử dụng nó

chạy phẳng org.kde.okular

hoặc tìm biểu tượng có liên quan trong môi trường máy tính để bàn của bạn.

pawel_winzig avatar
lá cờ cn
Vậy: flatpak hay snap? Bằng cách nào đó bình luận của bạn, N0rbert, đã bị xóa...
pawel_winzig avatar
lá cờ cn
...và để bắt đầu: `flatpak run org.kde.okular`
Điểm:-1
lá cờ cn

KDE đã giải quyết vấn đề này với Okular Snap.

https://snapcraft.io/okular

Snap được hộp cát với phần còn lại của hệ thống của bạn và sẽ tự động cập nhật bất cứ khi nào tác giả (KDE) đẩy một bản cập nhật.

Snap hiện tại (phiên bản 20.12.3) phải hoàn toàn tương thích với hệ thống 18.04 của bạn.

  • Để biết thêm thông tin chi tiết: danh sách chụp okular
  • Để cài đặt: sudo snap cài đặt okular
  • Nó độc lập với các phiên bản Ubuntu (hoặc Debian). Nếu bạn phát hiện ra rằng snap đã cũ, chỉ cần ping KDE trực tiếp -- họ là tác giả và họ có thể cập nhật nó bất cứ lúc nào.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.