Об авторе admin

Инженер-программист, системный администратор

Освобождение места в Ubuntu

  1. Удаление лишних пакетов linux-headers-*. Оставить можно только последнюю версию, остальные можно удалять. Список установленных пакетов:
# apt list --installed | grep header

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

linux-headers-5.4.0-47-generic/focal-updates,focal-security,now 5.4.0-47.51 amd64 [установлен]
linux-headers-5.4.0-47/focal-updates,focal-updates,focal-security,focal-security,now 5.4.0-47.51 all [установлен]
linux-headers-5.4.0-48-generic/focal-updates,focal-security,now 5.4.0-48.52 amd64 [установлен]
linux-headers-5.4.0-48/focal-updates,focal-updates,focal-security,focal-security,now 5.4.0-48.52 all [установлен, автоматически]
linux-headers-5.4.0-51-generic/focal-updates,focal-security,now 5.4.0-51.56 amd64 [установлен, автоматически]
linux-headers-5.4.0-51/focal-updates,focal-updates,focal-security,focal-security,now 5.4.0-51.56 all [установлен, автоматически]
linux-headers-generic/now 5.4.0.51.54 amd64 [установлен, может быть обновлён до: 5.4.0.52.55]

Удаление лишних:

# apt remove linux-headers-5.4.0-47-generic
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Следующие пакеты будут УДАЛЕНЫ:
  linux-headers-5.4.0-47-generic
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 1 пакетов, и 44 пакетов не обновлено.
После данной операции объём занятого дискового пространства уменьшится на 14,4 MB.
Хотите продолжить? [Д/н] y
(Чтение базы данных … на данный момент установлено 255830 файлов и каталогов.)
Удаляется linux-headers-5.4.0-47-generic (5.4.0-47.51) …
# apt remove linux-headers-5.4.0-47
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Следующий пакет устанавливался автоматически и больше не требуется:
  linux-headers-5.4.0-48
Для его удаления используйте «sudo apt autoremove».
Следующие пакеты будут УДАЛЕНЫ:
  linux-headers-5.4.0-47
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 1 пакетов, и 44 пакетов не обновлено.
После данной операции объём занятого дискового пространства уменьшится на 70,8 MB.
Хотите продолжить? [Д/н] y
(Чтение базы данных … на данный момент установлено 231802 файла и каталога.)
Удаляется linux-headers-5.4.0-47 (5.4.0-47.51) …

Итого с одной старой версии ядра освобождается около 100Мб.

2. Удаление лишних пакетов linux-modules-* кроме последней версии

3. Удаление ненужных локалей. /usr/share/locale до чистки примерно 350Мб.

4. /var/log/journal/:


$ journalctl --disk-usage
Archived and active journals take up 352.0M in the file system.
$ sudo journalctl --rotate
[sudo] password: 
$ journalctl --disk-usage 
Archived and active journals take up 368.0M in the file system.
$ sudo journalctl --vacuum-size=50M 
Vacuuming done, freed 0B of archived journals from /run/log/journal.
Deleted archived journal /var/log/journal...
...
$ journalctl --disk-usage
Archived and active journals take up 32.0M in the file system.

5. /var/cache/apt/archive/

6. ~/.cache/

Продолжение следует…

Python: шапка скрипта для быстрой отладки и профилирования

# -*- coding: utf-8 -*-
import datetime
import sys

TIME_START = datetime.datetime.now()

def my_debug(txt):
    #print('%s - %s' % (datetime.datetime.now() - TIME_START, txt))
    pass
        
def my_info(txt):
    print('%s - %s' % (datetime.datetime.now() - TIME_START, txt))
    pass
        
        
my_info("Python")        
my_info("Начали") 

Python: цветной текст в консоли

Здесь предлагают импользовать 2 варианта.

Первый — использовать ansi. Здесь будет нужен какой-то справочник, чтобы с ними разобраться:

print('\033[96mКак поменять цвет?\033[0m')
print('Как поменять цвет ' + '\033[96mодного\033[0m' + ' слова?')

Второй способ — импортировать библиотеку colorama:

Type "help", "copyright", "credits" or "license" for more information.
>>> import colorama
>>> from colorama import Fore, Back
>>> colorama.init()
>>> print(Back.BLUE + Fore.GREEN + "text")
text
>>> quit()  

Попробовал — библиотеку в ubuntu отдельно устанавливать не пришлось, уже была в наличии. В использовании проще первого варианта.

Прохождение квеста по запуску OpenGL для Python3

Оказалось, что если просто взять и открыть первый попавшийся урок по OpenGL на Python, то скорее всего ничего не получится. Всё пробовал на Python 3.6.5 под Windows x64. Для начала. пробуем установать пакеты, которые используются в скриптах:

\Python36\python.exe -m pip install PyOpenGL
Collecting PyOpenGL
  Using cached PyOpenGL-3.1.5-py3-none-any.whl (2.4 MB)
Installing collected packages: PyOpenGL
Successfully installed PyOpenGL-3.1.5
\Python36\python.exe -m pip install PyOpenGL-accelerate
Collecting PyOpenGL-accelerate
  Using cached PyOpenGL_accelerate-3.1.5-cp36-cp36m-win_amd64.whl (329 kB)
Installing collected packages: PyOpenGL-accelerate
Successfully installed PyOpenGL-accelerate-3.1.5

Теперь попробуем выполнить скрипт из примеров примерно с таким содержимым:

from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
...
glutInit()
...

Результат получится примерно такой:

\Python36\python.exe testopengl.py
Traceback (most recent call last):
  File "testopengl.py", line 30, in <module>
    glutInit()
  File "Python\Python36\lib\site-pac
kages\OpenGL\GLUT\special.py", line 333, in glutInit
    _base_glutInit( ctypes.byref(count), holder )
  File "Python\Python36\lib\site-pac
kages\OpenGL\platform\baseplatform.py", line 425, in __call__
    self.__name__, self.__name__,
OpenGL.error.NullFunctionError: Attempt to call an undefined function glutInit,
check for bool(glutInit) before calling

По советам из интернета скачиваем freeglut (качал отсюда https://www.transmissionzero.co.uk/files/software/development/GLUT/freeglut-MSVC-3.0.0-2.mp.zip), извлекаем оттуда и ложим рядом со скриптом файл freeglut.dll. Пробуем запустить скрипт снова — получаем ту же самую ошибку. В интернете пишут, что в стандартных пакетах питона какой-то касяк, поэтому их нужно удалить:

\Python36\python.exe -m pip uninstall pyopengl
Found existing installation: PyOpenGL 3.1.5
Uninstalling PyOpenGL-3.1.5:
  Would remove:
    python\python36\lib\site-package
s\opengl\*
    python\python36\lib\site-package
s\pyopengl-3.1.5.dist-info\*
Proceed (y/n)? y
  Successfully uninstalled PyOpenGL-3.1.5

\Python36\python.exe -m pip uninstall pyopengl-accelerate
Found existing installation: PyOpenGL-accelerate 3.1.5
Uninstalling PyOpenGL-accelerate-3.1.5:
  Would remove:
    python\python36\lib\site-package
s\opengl_accelerate\*
    python\python36\lib\site-package
s\pyopengl_accelerate-3.1.5.dist-info\*
Proceed (y/n)? y
  Successfully uninstalled PyOpenGL-accelerate-3.1.5

А теперь, говорят, надо скачивать альтернативные пакеты вот отсюда: https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl. Я схватился за самый свежий пакет PyOpenGL‑3.1.5‑cp39‑cp39‑win_amd64.whl, и он мне не подошёл:

\Python36\python.exe -m pip install PyOpenGL-3.1.5-cp39-cp39-win_amd64.whl
ERROR: PyOpenGL-3.1.5-cp39-cp39-win_amd64.whl is not a supported wheel on this p
latform.

Как я понял, в названии пакета 39 — это версия питона, для которого предназначен пакет, то есть мне для 3.6.5 нужны пакеты с цифрой 36:

\Python36\python.exe -m pip install PyOpenGL-3.1.5-cp36-cp36m-win_amd64.whl
Processing pyopengl-3.1.5-cp36-cp36m-win_amd64.whl
Installing collected packages: PyOpenGL
Successfully installed PyOpenGL-3.1.5

\Python36\python.exe -m pip install PyOpenGL_accelerate-3.1.5-cp36-cp36m-win_am
d64.whl
Processing pyopengl_accelerate-3.1.5-cp36-cp36m-win_amd64.whl
Installing collected packages: PyOpenGL-accelerate
Successfully installed PyOpenGL-accelerate-3.1.5

Ну и теперь пробуем запустить скрипт:

python.exe testopengl.py
Python OpenGL
Python OpenGL

Короче победа. Все загрузки (пакеты для питона и freeglut) проверялись антивирусом, но если будете повторять — качайте на свой страх и риск.

auto-py-to-exe — компилятор питоновских скриптов для windows

Проверено на Python 3 — работает

Установка:

>c:\users\user\AppData\Local\Programs\Python\Python36\python.exe -m pip install auto-py-to-exe
Collecting auto-py-to-exe
  Downloading auto_py_to_exe-2.7.4-py2.py3-none-any.whl (74 kB)
     |████████████████████████████████| 74 kB 84 kB/s
....
Successfully installed Eel-0.11.0 altgraph-0.17 auto-py-to-exe-2.7.4 bottle-0.12
.18 bottle-websocket-0.2.9 cffi-1.14.0 future-0.18.2 gevent-20.6.0 gevent-websoc
ket-0.10.1 greenlet-0.4.16 pefile-2019.4.18 pycparser-2.20 pyinstaller-3.6 pywin
32-ctypes-0.2.0 whichcraft-0.6.1 zope.event-4.4 zope.interface-5.1.0

После успешной установки в папке Python36\Scripts\ появится auto-py-to-exe.exe, запускаем его

auto-py-to-exe
auto-py-to-exe

Выбираем скрипт, выставляем нужные настройки и жмём снизу «CONVERT .PY TO .EXE«. Появляется папка output с откомпилированным скриптом program.exe