Làm cách nào tôi có thể cài đặt Lược đồ Gsinstall mà không có quyền root?


14

Quy trình công việc điển hình để cài đặt Lược đồ Gsinstall là:

  1. Tạo một lược đồ, với phần mở rộng .gschema.xml, với nội dung như thế này:

    <?xml version="1.0" encoding="UTF-8"?>
    <schemalist>
      <schema id="com.companyname.appname" path="/com/companyname/appname/">
          <key type="b" name="mybool">
              <default>false</default>
              <summary>Example summary</summary>
              <description>Example description</description>
          </key>
      </schema>
    </schemalist>
  2. Sao chép lược đồ vào /usr/share/glib-2.0/schemas/.

  3. Biên dịch lược đồ bằng cách chạy lệnh này:

    sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

Tuy nhiên, viết để /usr/share/glib-2.0/schemas/yêu cầu quyền root. Có cách nào để cài đặt lược đồ vào thư mục người dùng không toàn cầu không?

Câu trả lời:


16

Bạn có thể sao chép và biên dịch Lược đồ Gsinstall của mình vào thư mục người dùng có thể ghi:

$ cp com.companyname.appname ~/schemas/
$ glib-compile-schemas ~/schemas/

Một mẹo nhỏ là cấu hình ứng dụng để sử dụng thư mục cụ thể đó. Có hai cách để làm điều này:

  • Với GSETTINGS_SCHEMA_DIRbiến môi trường:

    $ GSETTINGS_SCHEMA_DIR=~/schemas/ ./example.py
  • Hoặc sử dụng các đối tượng GSinstallSchemaSource và GSettingSchema:

    Nếu bạn có quyền truy cập vào mã nguồn của chương trình, bạn có thể sửa đổi nó để tải các lược đồ được biên dịch từ bất kỳ thư mục nào. Đây là cách thực hiện trong Python, mặc dù bạn có thể thực hiện điều này trong bất kỳ ngôn ngữ lập trình nào với nội quan GObject:

    schema_source = Gio.SettingsSchemaSource.new_from_directory(
        os.path.expanduser("~/schemas"),
        Gio.SettingsSchemaSource.get_default(),
        False,
    )
    schema = schema_source.lookup('com.companyname.appname', False)
    settings = Gio.Settings.new_full(schema, None, None)
    settings.set_boolean('mybool', True)

Người giới thiệu:


Bạn có biết làm thế nào để kiểm tra xem một lược đồ đã cho đã được cài đặt chưa (và chỉ thực hiện các thao tác trên nếu không)?
Pietro Battiston

Theo các tài liệu này, bạn cũng có thể thêm thư mục chứa glib-2.0/schemasthư mục vào XDG_DATA_DIRSbiến môi trường.
ntc2
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.