Định nghĩa của Ubuntu về một ứng dụng đã đăng ký là gì?


11

Tôi đã gặp phải điều này một vài lần khi cài đặt ứng dụng từ nguồn và trong quá trình hack thỉnh thoảng xảy ra update-alternatives. Cho đến nay, đó chỉ là một sự phiền toái nhỏ (nghĩa là không cản trở mục tiêu cuối cùng) nhưng bây giờ nó là một sự thất vọng khi nó chỉ ra một lỗ hổng trong cơ sở tri thức của tôi ... vì vậy khi tôi nhận được một tin nhắn ' foo 'là "không phải là một ứng dụng đã đăng ký" (hoặc tôi không thể sử dụng biểu tượng mặc định của foo vì Ubuntu không có kiến ​​thức về' foo '):

  1. Điều gì định nghĩa một "ứng dụng đã đăng ký"?

  2. Làm cách nào tôi có thể xác định một ứng dụng được cài đặt từ nguồn (và có thể nằm trong $ HOME / bin / tên ứng dụng) sao cho nó đóng gói chức năng giống như một gói được cài đặt từ .deb? (nếu giải pháp không rõ ràng từ câu 1)

Thí dụ:

Tôi tải về và giải nén dev hàng ngày xây dựng của sublime-text-2để /home/tom/bin/sublime-text-2. Tôi đã tạo tệp * .desktop với các phím tắt phù hợp, v.v. Nhưng biểu tượng cho sự siêu phàm không thể hiển thị trong bất kỳ trình khởi chạy nào ngay cả khi tôi cung cấp tên đường dẫn đầy đủ cho tùy chọn. Giải pháp là cài đặt một thể hiện siêu phàm thứ 2 từ gói deb.

Khi tôi cài đặt sublime-text-2 từ gói .deb, nó sẽ cài đặt bên dưới /usr/bin && /usr/lib, tệp .desktop đã cài đặt được lưu trữ bên dưới /usr/share/applicationsvà dòng có liên quan sẽ đọc : icon=sublime_text.

Liên kết tôi đang thiếu ở đâu? Bằng cách nào đó Ubuntu biết cách chính xác biểu tượng từ sublime_textcái sau, nhưng không phải cái trước (một lần nữa, ngay cả với một đường dẫn đầy đủ được cung cấp).


Bạn đang đặt launcher này ở đâu trong thư mục nhà của bạn?
Ê-sai

Ngoài ra, khi nào bạn nhận được thông báo: "foo không phải là ứng dụng đã đăng ký"?
Ê-sai

@DoR: tuyệt vời của tôi * .desktop ở dưới /.local/share/applications. Nơi đáng chú ý nhất mà tôi có thể nhớ thông báo "ứng dụng đã đăng ký" là khi cố gắng ghép một phiên bản vim từ nguồn được biên dịch vào update-alternativesdanh sách để nó xuất hiện thay vì cài đặt 'mặc định'. Hữu ích? Đoán xem điều tôi đang tìm kiếm là cơ chế cung cấp cho Ubuntu kiến ​​thức về nơi tìm (ví dụ) biểu tượng chính xác cho ứng dụng A - giống như với các tệp * .desktop bên dưới /usr/share/applications/.
Tom

Nếu bạn đặt giá trị của "biểu tượng" trong ~/.local/share/applicationstrình khởi chạy của mình thành sublime_text( không phải là đường dẫn đầy đủ, thì nó có hoạt động không?
Ê-sai

Câu trả lời:


3

Tôi nghĩ rằng bạn đang gặp phải một số vấn đề cùng một lúc với các cài đặt nguồn.

update-alternativessẽ không cho phép bạn đặt bất kỳ chương trình nào dưới dạng ứng dụng ưu tiên cho một tên cụ thể. Chương trình sẽ phải được đăng ký đầu tiên với --installtùy chọn. Ví dụ:

sudo update-alternatives --set editor /home/peter/bin/foo
update-alternatives: error: alternative /home/peter/bin/foo for editor not registered, not setting.

Nếu bạn muốn xem cách đăng ký được thực hiện, hãy kiểm tra ví dụ /var/lib/dpkg/info/nano.postinst.

Tuy nhiên, lưu ý rằng sẽ khá là không có thật khi định nghĩa một sự thay thế toàn hệ thống trỏ đến thư mục chính của một số người dùng. Thường có các biến môi trường hoặc các cài đặt khác để chỉ ưu tiên cho một người dùng.

Vấn đề với tệp máy tính để bàn có thể hoàn toàn riêng biệt, nhưng bạn sẽ cần cung cấp thêm chi tiết về chính xác những đường dẫn bạn đã sử dụng.

Nói chung, việc cài đặt một ứng dụng từ nguồn có thể khá khó khăn để tích hợp tốt với phần còn lại của hệ thống, tùy thuộc vào ứng dụng cụ thể.


Peter: Vâng, tôi nghĩ rằng bạn nhấn móng tay ... và phản ánh điều chỉnh suy nghĩ của tôi là câu trả lời. Tôi đang sử dụng hệ thống trên máy tính xách tay - chỉ một máy tính xách tay tôi sử dụng, đăng nhập, v.v. Và tất nhiên, UNIX là một hệ điều hành nhiều người dùng và định nghĩa cài đặt chương trình như vậy. Điều biểu tượng là tầm thường và tôi tin rằng một sự châm biếm. Tôi đã tìm thấy một tệp biểu tượng riêng trong sublime-text postinstséc của mình như bạn đề xuất, vì vậy bây giờ tôi có thể trỏ cài đặt thay thế (trong $ HOME của tôi) vào một tệp cụ thể thay vì để nó tự động tìm kiếm từ tệp thực thi. Tôi đang đánh dấu việc đóng / giải quyết này vì tôi tin rằng tôi có những gì tôi cần bây giờ.
Tom

Làm thế nào để chúng tôi đăng ký nó với --install?
fiatjaf
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.