Tôi có thể cập nhật phần mềm được cài đặt trực tiếp từ mã nguồn không


14

Mặc dù đã gần một năm kể từ khi tôi bắt đầu sử dụng Ubuntu, tôi vẫn chưa thử cài đặt phần mềm từ nguồn. Tôi đã không thực sự tìm thấy sự cần thiết phải làm như vậy. Nhưng bây giờ tôi đang làm việc trên một phần mềm đang ở giai đoạn phát hành ứng dụng trong kho lưu trữ nhưng mã nguồn của phiên bản ổn định mới nhất có sẵn tại trang chủ của phần mềm.

Tôi đã học được rằng cài đặt từ mã nguồn có thể khó khăn nếu phần mềm có nhiều phụ thuộc. Tuy nhiên nếu tôi giải quyết điều đó, tôi có thể hài lòng với phiên bản mới nhất. Nhưng tôi cứ tự hỏi liệu một phần mềm như vậy có thể tự động cập nhật hay tôi sẽ phải chạy một số tập lệnh để cập nhật gói. Hoặc tệ hơn nữa là tôi sẽ phải cài đặt lại mỗi bản cập nhật từ đầu?

Ngoài ra, tôi rất muốn biết nếu có bất kỳ lợi thế cụ thể của việc cài đặt từ nguồn khác ngoài các nguồn trên.


Câu trả lời:


10

Tốt nhất nên lưu ý rằng sự phụ thuộc của phần mềm hiếm khi thay đổi. Nếu bạn đã biên dịch thành công phần mềm một lần, mọi phiên bản tiếp theo sẽ dễ dàng biên dịch - tất cả các phụ thuộc phải được thỏa mãn.

Nếu bạn biên dịch từ nguồn, không có .debhoặc có gói tương tự mà bạn có thể sử dụng để cập nhật, trừ khi bạn chờ phân phối đưa phần mềm đó vào kho lưu trữ của họ hoặc đợi cho đến khi PPA của nhà phát triển được cập nhật.

Nói một cách đơn giản, ai đó phải biên dịch nó trước để biến nó thành một cuộc tranh luận. Biên dịch một phiên bản cũ sẽ không cung cấp cho bạn khả năng cập nhật tự động, bạn vẫn phải trải qua toàn bộ quá trình "download-configure-compile-install".

Tuy nhiên , nếu bạn muốn cài đặt cùng một phiên bản trên nhiều máy tính, sẽ rất hợp lý khi đóng gói phiên bản đã biên dịch của bạn dưới dạng .deb(hoặc tương tự) và phân phối nó cho các máy tính đó. Nếu được thực hiện đúng, các phụ thuộc sẽ được kéo vào tự động.

Về lợi thế của việc cài đặt từ nguồn, hai điều duy nhất tôi có thể nghĩ đến là:

  • Bạn có quyền truy cập vào bản sửa đổi mới nhất của mã và bạn có thể chọn phiên bản ổn định hoặc phiên bản tiên tiến (thường được gọi là bản dựng hàng đêm, bản sửa đổi mới nhất, v.v.)
  • Ubuntu / phân phối khác có thể không muốn đưa phần mềm vào kho của họ. Trong trường hợp đó, bạn bị mắc kẹt với mã nguồn hoặc các gói được cung cấp bởi các nhà phát triển hoặc cộng đồng. Đó là, bạn không có lựa chọn nào khác ngoài việc sử dụng các nguồn.

4
Ngay cả khi bạn tự biên dịch thứ gì đó để sử dụng trên 1 máy tính, việc tự tạo gói .deb luôn hữu ích, vì nó giúp bạn giữ tổng quan về phần mềm đã cài đặt ở một nơi và cũng giúp bạn gỡ cài đặt hoặc nâng cấp dễ dàng hơn.
JanC

4

Theo bài này bạn có thể tạo gói .deb sau khi bạn biên dịch các nguồn. Sau đó, thay vì "thực hiện cài đặt", bạn có thể cài đặt từ gói .deb. Điều đó giúp cập nhật dễ dàng hơn (nếu nó nằm trong kho lưu trữ nào đó) vì gói sẽ được quản lý gói quản lý theo dõi cập nhật.

Trong trường hợp xây dựng gói "some-pack" từ các nguồn và có các phụ thuộc, bạn có thể thử "apt-get build-dep some-pack" để tự động cài đặt tất cả các phụ thuộc cần thiết cho bạn để biên dịch gói của bạn, mà không cần theo dõi thủ công từng gói phụ thuộc chính mình. Bằng cách đó, các phụ thuộc cũng được quản lý gói quản lý và cũng sẽ được cập nhật tự động.


3

Một lựa chọn khác cho gitngười dùng là đáng nói:

Bạn cũng có thể sử dụng git pullsau một sớm hơn git cloneđể cập nhật mã nguồn của mình và sau đó biên dịch lại chương trình của bạn nếu muốn. (Bạn cũng có thể sử dụng gitđể theo dõi thêm các tệp: xem câu trả lời tại đây .)

Nếu ban đầu bạn sử dụng git cloneđể lấy mã nguồn, ví dụ như trong

git clone git://github.com/person/programname.git

và bạn giữ lại thư mục sau khi biên dịch và cài đặt, bạn có thể cd vào thư mục và chạy git pullđể nhận các cam kết mới nhất. Sau đó xóa mọi thư mục xây dựng mà bạn có thể đã tạo và / hoặc chạy make clean(nếu phù hợp) rồi biên dịch lại phần mềm và cài đặt nó vớicheckinstall , điều này cũng tạo ra một gói cho bạn (mặc dù không phù hợp để phân phối).

Tuy nhiên, nếu bạn đang giúp phát triển chương trình và cần biên dịch lại sau mỗi ngày git pullthì có lẽ bạn sẽ cài đặt vào thư mục chính, vì sẽ không cần thiết phải cài đặt vào /usr/local/hệ thống phân cấp mỗi lần.

Ví dụ: nếu tôi đang kiểm tra và thường xuyên biên dịch lại chương trình, tôi sẽ cd vào thư mục bản dựng của mình sau khi nhận được các cam kết mới nhất với git pullvà chạy (đối với chương trình cụ thể này):

cmake .. -DCMAKE_BUILD_TYPE=Debug -DLAYOUT=home -DPREFIX=home

và sau đó biên dịch phiên bản gỡ lỗi để kiểm tra.

Tuy nhiên, nếu bạn chỉ muốn biên dịch một phiên bản mới của chương trình nhân bản git của mình mỗi tháng hoặc lâu hơn (và không kiểm tra hoặc gỡ lỗi nó), bạn thường sẽ cài đặt vào /usr/local/hệ thống phân cấp checkinstall.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.