установить модуль php7.0 со специальной старой версией без обновления php

Интересный вопрос.

Как всегда, есть разные способы получить список этих приложений, каждый из которых имеет конкретные рекламные и недостатки.

Получение списка процессов, представленных в Launcher, с использованием списка окон

Поскольку в Launcher появляются только приложения с окном (отображаемым), используя:

[ f1]

(wmctrl по умолчанию не установлен), мы можем получить список открытых окон и идентификатор процесса, к которому относятся окна. Формат выходного файла:

0x05204641  0 12618  jacob-System-Product-Name verhaal (~) - gedit

, где для нас наиболее важная информация:

первая строка (0x05204641); это окно -и третья строка (12618); это идентификатор процесса (pid), к которому принадлежит окно, и последний раздел (verhaal (~) - gedit); это имя окна.

Как только у нас есть pid, мы можем найти соответствующее имя процесса командой:

ps -p <pid> -o comm=

Мы можем выполнить скрипты выше и перечислить выходные данные для существующие окна, похожие на python:

{'gnome-terminal', 'nautilus', 'gedit', 'GuitarPro.exe', 'firefox', 'thunderbird', 'soffice.bin'}

Осложнения

Это кажется простым. Однако, как всегда, реальность немного сложнее. Есть несколько исключений и осложнений, о которых нам нужно позаботиться:

Некоторые окна будут принадлежать pid 0, что вызовет ошибку при попытке получить их свойства. Windows Idle (python IDE) или tkinter - это такие окна. Некоторые окна не являются «реальными» или окнами, такими как переходные окна (окна, которые вызывают и принадлежат другим окнам) или, например, сам рабочий стол. Эти окна отображаются в виде окон на выходе wmctrl, но не отображаются отдельно в Dash. В некоторых случаях имя приложения сильно отличается от имени процесса, например, в случае LibreOffice, где все модули имеют имя процесса soffice.bin. В то же время выполнение команды soffice.bin не будет работать. Если вам нужно идентифицировать модули (Calc, Writer и т. Д.) Отдельно, вам нужно будет получить дополнительную информацию, например, из имени окна. Другим примером является имя процесса gnome-terminal, как оно отображается в списке процессов, как и на выходе ps -e ww. В 14.04, gnome-terminal появляется как gnome-terminal, однако в 15.04 / 15.10 он показывает: /usr/lib/gnome-terminal/gnome-terminal-server.

Нам нужно исправить хотя бы

Чтобы исправить наиболее важные проблемы, описанные выше, вам нужно:

первую строку (0x05204641 ); это окно -id Чтобы исправить имя процесса gnome-terminal в 15.x (если вы хотите, чтобы имя представленного процесса было gnome-terminal), нам нужно добавить исключение, чтобы переименовать имя процесса в gnome-terminal, если он выглядит как /usr/lib/gnome-terminal/gnome-terminal-server

Сценарий

#!/usr/bin/env python3
import subprocess
import sys

try:
    listed = sys.argv[1]
except IndexError:
    listed = []

get = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()

def check_wtype(w_id):
    # check the type of window; only list "NORMAL" windows
    return "_NET_WM_WINDOW_TYPE_NORMAL" in get(["xprop", "-id", w_id])

def get_process(w_id):
    # get the name of the process, owning the window
    proc = get(["ps", "-p", w_id, "-o", "comm="])
    proc = "gnome-terminal" if "gnome-terminal" in proc else proc
    return proc

wlist = [l.split() for l in subprocess.check_output(["wmctrl", "-lp"])\
         .decode("utf-8").splitlines()]

validprocs = set([get_process(w[2]) for w in wlist if check_wtype(w[0]) == True])

if listed == "-list":
    for p in validprocs:
        print(p)
else:
    print(validprocs)

Как использовать

Некоторые окна будут принадлежать pid 0, что приведет к ошибке при попытке получить свои свойства. Windows Idle (python IDE) или tkinter являются такими окнами. скопируйте сценарий выше в пустой файл, сохраните его как get_running.py . Некоторые окна не являются «реальными» или окнами , как временные окна (окна, вызываемые из других окон) и, например, сам рабочий стол. Эти окна отображаются в виде окон на выходе wmctrl, но не отображаются отдельно в Dash.

Примечания

Из вашего вопроса это не совсем понятно что является целью списка найденных. Если вам нужно иметь имя приложения, так как оно появляется в интерфейсе («читаемые» имена), может потребоваться совершенно другой подход:

Чтобы исправить имя процесса gnome-terminal в 15.x (если вы хотите, чтобы имя представленного процесса было gnome-terminal), нам нужно добавить исключение, чтобы переименовать имя процесса в gnome-terminal, если оно отображается как /usr/lib/gnome-terminal/gnome-terminal-server [d52 ] И в этом случае, однако, реальность также сложнее, чем теория, как объяснено здесь.

1
задан 27 September 2017 в 16:31

2 ответа

Я решил его, загрузив пакет .deb

$ wget http://launchpadlibrarian.net/319286878/php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb --2017-09-27 16:11:01-- http://launchpadlibrarian.net/319286878/php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb Resolving launchpadlibrarian.net (launchpadlibrarian.net)... 91.189.89.228, 91.189.89.229 Connecting to launchpadlibrarian.net (launchpadlibrarian.net)|91.189.89.228|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 15726 (15K) [application/x-debian-package] Saving to: ‘php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb’ php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb 100%[====================================================================================================================================>] 15.36K --.-KB/s in 0.007s 2017-09-27 16:11:01 (2.09 MB/s) - ‘php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb’ saved [15726/15726] $

и установив его ...

$ sudo dpkg -i php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb Selecting previously unselected package php7.0-bcmath. (Reading database ... 127511 files and directories currently installed.) Preparing to unpack php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb ... Unpacking php7.0-bcmath (7.0.18-0ubuntu0.16.04.1) ... Setting up php7.0-bcmath (7.0.18-0ubuntu0.16.04.1) ... Creating config file /etc/php/7.0/mods-available/bcmath.ini with new version Processing triggers for php7.0-fpm (7.0.18-0ubuntu0.16.04.1) ... $

простой и быстрый

$ apt-cache policy php7.0-bcmath php7.0-bcmath: Installed: 7.0.18-0ubuntu0.16.04.1 Candidate: 7.0.22-0ubuntu0.16.04.1 Version table: 7.0.22-0ubuntu0.16.04.1 500 500 http://nova.clouds.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages 500 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages *** 7.0.18-0ubuntu0.16.04.1 100 100 /var/lib/dpkg/status 7.0.4-7ubuntu2 500 500 http://nova.clouds.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages $
1
ответ дан 18 July 2018 в 06:08

Я решил его, загрузив пакет .deb

$ wget http://launchpadlibrarian.net/319286878/php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb --2017-09-27 16:11:01-- http://launchpadlibrarian.net/319286878/php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb Resolving launchpadlibrarian.net (launchpadlibrarian.net)... 91.189.89.228, 91.189.89.229 Connecting to launchpadlibrarian.net (launchpadlibrarian.net)|91.189.89.228|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 15726 (15K) [application/x-debian-package] Saving to: ‘php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb’ php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb 100%[====================================================================================================================================>] 15.36K --.-KB/s in 0.007s 2017-09-27 16:11:01 (2.09 MB/s) - ‘php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb’ saved [15726/15726] $

и установив его ...

$ sudo dpkg -i php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb Selecting previously unselected package php7.0-bcmath. (Reading database ... 127511 files and directories currently installed.) Preparing to unpack php7.0-bcmath_7.0.18-0ubuntu0.16.04.1_amd64.deb ... Unpacking php7.0-bcmath (7.0.18-0ubuntu0.16.04.1) ... Setting up php7.0-bcmath (7.0.18-0ubuntu0.16.04.1) ... Creating config file /etc/php/7.0/mods-available/bcmath.ini with new version Processing triggers for php7.0-fpm (7.0.18-0ubuntu0.16.04.1) ... $

простой и быстрый

$ apt-cache policy php7.0-bcmath php7.0-bcmath: Installed: 7.0.18-0ubuntu0.16.04.1 Candidate: 7.0.22-0ubuntu0.16.04.1 Version table: 7.0.22-0ubuntu0.16.04.1 500 500 http://nova.clouds.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages 500 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages *** 7.0.18-0ubuntu0.16.04.1 100 100 /var/lib/dpkg/status 7.0.4-7ubuntu2 500 500 http://nova.clouds.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages $
1
ответ дан 24 July 2018 в 18:31

Другие вопросы по тегам:

Похожие вопросы: