Почему версия sqlite отличается для разных пользователей на моем сервере jenkins? - PullRequest
2 голосов
/ 08 мая 2020

Как пользователь jenkins мой sqlite_version это 3.7.17

bash-4.2$ python3.8
Python 3.8.2 (default, May  8 2020, 12:44:28) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3 
>>> sqlite3.sqlite_version
'3.7.17'

как мой root пользователь sqlite_version это 3.31.1

[root@jenkins ~]# python3.8
Python 3.8.2 (default, May  8 2020, 12:44:28) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.31.1'

Они оба используют один и тот же python двоичный

[root@jenkins ~]# which python3.8
/usr/local/bin/python3.8

bash-4.2$ which python3.8
/usr/local/bin/python3.8

Шаги, которые я предпринял после установки нового sqlite3 из источника:

  • Удалена старая версия sqlite3 в /bin
  • Я добавил /usr/local/bin к пути jenkins в /var/lib/jenkins/.bashrc

У вас есть идеи, как заставить jenkins python использовать новую версию sqlite3?

Обновление:

Работает sqlite3.__file__:

Jenkins

>>> sqlite3.__file__
'/usr/local/lib/python3.8/sqlite3/__init__.py'

Root

>>> sqlite3.__file__
'/usr/local/lib/python3.8/sqlite3/__init__.py'

Ответы [ 2 ]

1 голос
/ 15 мая 2020

Следующие действия для меня на CentOS 7.7:


Установить Python Зависимости :

sudo yum -y groupinstall 'Development Tools'
sudo yum -y install openssl-devel bzip2-devel libffi-devel

Установка источника SQLite :

wget https://sqlite.org/2020/sqlite-autoconf-3310100.tar.gz
tar -xf sqlite-autoconf-3310100.tar.gz
cd sqlite-autoconf-3310100/
./configure
make
sudo make install

Python исходная установка :

wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tar.xz
tar -xf Python-3.8.2.tar.xz
cd Python-3.8.2/
sudo LD_RUN_PATH=/usr/local/lib ./configure --enable-optimizations
sudo LD_RUN_PATH=/usr/local/lib make altinstall

Тест :

[centos@jenkins ~]$ sudo su
[root@jenkins centos]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@jenkins centos]# grep PATH /root/.bashrc
export PATH=$PATH:/usr/local/bin
[root@jenkins centos]# python3.8
Python 3.8.2 (default, May 15 2020, 07:26:39)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.31.1'
>>> sqlite3.__file__
'/usr/local/lib/python3.8/sqlite3/__init__.py'
>>>

[root@jenkins centos]# exit
[centos@jenkins ~]$
[centos@jenkins ~]$ sudo su - jenkins
Last login: Fri May 15 07:44:53 UTC 2020 on pts/0
-bash-4.2$ id
uid=996(jenkins) gid=993(jenkins) groups=993(jenkins) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
-bash-4.2$ pwd
/var/lib/jenkins
-bash-4.2$ grep PATH .bashrc
grep: .bashrc: No such file or directory
-bash-4.2$ python3.8
Python 3.8.2 (default, May 15 2020, 07:26:39)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.31.1'
>>> sqlite3.__file__
'/usr/local/lib/python3.8/sqlite3/__init__.py'
>>>
1 голос
/ 13 мая 2020

Проверяли ли вы PYTHONPATH и / или LD_LIBRARY_PATH для root и jenkins?

О Python путь (PYTHONPATH)

Вы можете использовать sys.path для печати эффективных PYTHONPATH для каждой среды. Если вы видите разницу, вы, вероятно, используете две разные версии библиотеки sqlite3.

Если это действительно проблема, вы можете попробовать изменить PYTHONPATH в своем jenkins рецепте.

О пути к общей библиотеке (LD_LIBRARY_PATH / /etc/ld.so.conf)

Это также может быть неправильный ПУТЬ для загрузчика c Dynami. Действительно, .so файлов можно было загрузить с другого пути. Чтобы изменить / увидеть путь к общей библиотеке, вы можете обратиться к следующему ответу: https://unix.stackexchange.com/a/22999

LD_LIBRARY_PATH - это один из способов настройки пути к общей библиотеке, но вы также можете использовать /etc/ld.so.conf. Здесь есть ответ о том, как установить путь к библиотеке для Jenkins

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