Ubuntu Xenial устанавливает GnuPG 2.1.11, который доступен как gpg2 двоичный файл. Существует gpg, который из версии 1.14. Последняя версия 2.1.15. Вам нужно установить его из исходного кода, компилируя, если вы хотите эту версию.
Чтобы скомпилировать исходный код, вам нужно сначала получить обновленные библиотеки этих пакетов -
npth (ftp://ftp.gnupg.org/gcrypt/npth/)
libgpg-error (ftp://ftp.gnupg.org/gcrypt/libgpg-error/)
libgcrypt (ftp://ftp.gnupg.org/gcrypt/libgcrypt/)
libksba (ftp://ftp.gnupg.org/gcrypt/libksba/)
libassuan (ftp://ftp.gnupg.org/gcrypt/libassuan/)
1. Установка npth
Загрузите версию 1.2 из npthwget ftp://ftp.gnupg.org/gcrypt/npth/npth-1.2.tar.bz2
Распаковать tar xf npth-1.2.tar.bz2
Перейдите к его директории и постройте его cd npth-1.2
./configure
make
sudo make install
1. Установка npth
Загрузите версию 1.2 из npthwget ftp://ftp.gnupg.org/gcrypt/npth/npth-1.2.tar.bz2
Загрузите версию 1.2 из npth
tar xf libgpg-error-1.24.tar.bz2
cd libgpg-error-1.24
./configure
make
make check
sudo make install
Распаковать, cd в каталог, настроить, сделать & amp; install
Загрузите версию 1.2 из npth
tar xf libgpg-error-1.24.tar.bz2
cd libgpg-error-1.24
./configure
make
make check
sudo make install
Распаковать tar xf npth-1.2.tar.bz2
[d18 ] 3. Установить libgcrypt Загрузить версию 2.3.4 wget https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.4.3.tar.bz2
Распаковать
tar xf libassuan-2.4.3.tar.bz2
cd libassuan-2.4.3
./configure
make
sudo make install
4. Установите libassuan
Загрузите версию 2.3.4wget https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.4.3.tar.bz2
Загрузите версию 2.3.4
tar xf libksba-1.3.4.tar.bz2
cd libksba-1.3.4
./configure
make
sudo make install
Распаковать, cd в каталог, настроить, сделать & amp; установить
Загрузить версию 2.3.4
tar xf libksba-1.3.4.tar.bz2
cd libksba-1.3.4
./configure
make
sudo make install
Unpack
tar xf libassuan-2.4.3.tar.bz2
cd libassuan-2.4.3
./configure
make
sudo make install
[ ! d41] 3. Установить libgcrypt
sudo ldconfig
Распаковать, cd в каталог, настроить, сделать & amp; install
gpg2 --version
4. Установить libassuan
which gpg2
После установки вы должны заполнить, проверьте версию. Но перед этим используйте эту команду для загрузки новых установленных библиотек.
/usr/local/bin/gpg2
Затем, чтобы проверить версию
Способы связи из встроенного виджета WebKit в управляющую программу Python
Gtk или Qt:
window.status
из JavaScript ; захватить соответствующее событие в Python document.title
из JavaScript; ловушка соответствующего события в Python x-my-app:thing1/thing2/thing3
); trap navigation-policy-decision-requested
в Python и посмотреть URL-адрес, на который он направлен, и справиться с ним, если это ваша настраиваемая схема URL Только Qt:
frame.addToJavaScriptWindowObject
, чтобы добавить (специально разработанный) объект Python в глобальное пространство имен JavaScript; вызывать методы на нем из JavaScript. (См. http://pysnippet.blogspot.com/2010/01/calling-python-from-javascript-in-pyqts.html для примера.) Методы, которые теоретически должны работать, но на практике не очень хорошо
Способы связи с Python на JavaScript
webview.execute_script(js_code)
. Обратите внимание: если вы передаете переменные значения в JS, это хорошая идея для JSON кодировать их; таким образом, вы можете немного беспокоиться об экранировании, а JS может читать JSON изначально Вот пример кода Gtk:
from gi.repository import Gtk,WebKit
import json
w = Gtk.Window()
v = WebKit.WebView()
sw = Gtk.ScrolledWindow()
w.add(sw)
sw.add(v)
w.set_size_request(400,300)
w.connect("destroy", lambda q: Gtk.main_quit())
def window_title_change(v, param):
if not v.get_title():
return
if v.get_title().startswith("msgtopython:::"):
message = v.get_title().split(":::",1)[1]
# Now, send a message back to JavaScript
return_message = "You chose '%s'. How interesting." % message
v.execute_script("jscallback(%s)" % json.dumps(return_message))
v.connect("notify::title", window_title_change)
v.load_html_string("""<!doctype html>
<html>
<head>
<title>A demo</title>
<style>
body { font-family: Ubuntu, sans-serif; }
h1 { font-size: 1.3em; }
</style>
<body>
<h1>A tiny JavaScript demonstration</h1>
<form>
<p>What's your favourite thing about Jono? <select>
<option>------choose one------</option>
<option>his beard</option>
<option>his infectious sense of humour</option>
<option>his infectious diseases</option>
<option>his guitar ability</option>
<option>his wife</option>
</select></p>
</form>
<p id="out"></p>
<script>
document.querySelector("select").addEventListener("change", function() {
var chosenOption = this.options[this.selectedIndex].text;
// Now send that text back to Python by setting the title
document.title = "msgtopython:::" + chosenOption;
}, false);
function jscallback(msg) {
document.getElementById("out").innerHTML = msg;
}
</script>
</body>
</html>
""", "file:///")
w.show_all()
Gtk.main()