• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Проблемы с зависимостями при установки пакета

noskov3

Well-known member
20.07.2020
51
0
BIT
346
Всем добра! Столкнулся со следующей проблемой. ОС - Kali Linux 2023, при установки пакета, кому интересно - это Tails-installer, в выводе получаю следующее сообщение:
The following packages have unmet dependencies:
tails-installer : Depends: python (< 2.8) but it is not installable
Depends: python (>= 2.7) but it is not installable
Depends: python:any (>= 2.6.6-7~) but it is not installable
Depends: python-configobj but it is not installable
Depends: python-gi but it is not installable
Depends: python-urlgrabber but it is not installable
E: Unable to correct problems, you have held broken packages.

Да, я понимаю что есть альтернативы этому пакету, но будут и варианты когда альтернатив не будет, хочу просто научиться вручную решать эту проблему, ведь ее решить я так понимаю можно! Можно же помимо рабочей версии Python установить дополнительные, которые будут в системе параллельно, можно же установить старые дополнительные библиотеки, которые будут использованы лишь в данных версиях, и конфликта между ними быть не должно? Короче говоря, прошу помощи, все кто знает, как это все установить!
P.S.: вариант с докер-контейнером не подходит, так как данный пакет мне нужен именно на хостовой машине, плюс ко всему, как я уже описал выше, сталкиваюсь иногда с такими проблемами при установке, с зависимостями от других пакетов и библиотек, более старых версий! Хочу просто понять алгоритм действий по решению данных проблем, куда и что устанавливать!
Заранее благодарю всех откликнувшихся!
 

noskov3

Well-known member
20.07.2020
51
0
BIT
346
Команда pyenv install 2.7.18 устанавливает версию Python 2.7.18 на вашу систему, что необходимо сделать перед созданием виртуального окружения с этой версией. После того как версия Python установлена, можно создать виртуальное окружение на её основе с помощью pyenv virtualenv 2.7.18 tails-env.

Таким образом, последовательность команд имеет следующий логический порядок:

  1. Установить pyenv и настроить его в вашей оболочке:
    Код:
    curl https://pyenv.run | bash
  2. Добавьте следующие строки в ~/.bashrc:
    Код:
    export PATH="$HOME/.pyenv/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
  3. Перезагрузите оболочку или выполните:
  4. source ~/.bashrc
  5. Код:
    pyenv install 2.7.18
  6. Если отсутствуют необходимые пакеты и библиотеки, установите их:
    Код:
    sudo apt-get install libreadline8 libreadline-dev bzip2 libbz2-dev libsqlite3-dev libssl-dev
  7. Создать виртуальное окружение с нужной версией Python:
    Код:
    pyenv virtualenv 2.7.18 tails-env
  8. Активировать виртуальное окружение:
    Код:
    pyenv activate tails-env
  9. Убедиться, что используется нужная версия pip:
    Код:
    pip install --upgrade "pip<21.0"
  10. Настроить системный Python по умолчанию:
    Код:
    sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
  11. Установить нужные библиотеки в виртуальном окружении:
    Код:
    sudo apt install genisoimage
    pip install configobj
    pip install pygi
    pip install urlgrabber
  12. Если установка urlgrabber неудачна из-за отсутствия нужного пакета, установите его:
    Код:
    sudo apt update
    sudo apt install -y curl libcurl4-openssl-dev
  13. Если установка все равно неудачна, попробуйте другую команду:
    Код:
    pip install --no-cache-dir urlgrabber
  14. Таким образом, команда pyenv install 2.7.18 выполняется первой для установки необходимой версии Python на вашу систему, а затем создается виртуальное окружение на основе этой версии Python.


нужно было делать в самом начале а еще лучше сразу после установки системы дабы избежать танцев с бубном на 2 дня как произошло в вашем случае
Создается впечатление что вся эта изолированная среда чисто для работы с python и с проектами python, нежели для преодаления проблемы зависимостей, так как не смотря на установленную нужную версию питона, tails-installer все равно ругается что пакет зависим от данной версии, которую я только что установил, плют пакеты configobj pygi urlgrabber, я их нашел в формате deb и пробовал установить их вручную, но тоже ничего не получилось по той же причине, зависимостей от версии питона
 

Koloboking

Green Team
12.01.2017
167
48
BIT
819
Создается впечатление что вся эта изолированная среда чисто для работы с python и с проектами python, нежели для преодаления проблемы зависимостей, так как не смотря на установленную нужную версию питона, tails-installer все равно ругается что пакет зависим от данной версии, которую я только что установил, плют пакеты configobj pygi urlgrabber, я их нашел в формате deb и пробовал установить их вручную, но тоже ничего не получилось по той же причине, зависимостей от версии питона
Да, вы правы, использование pyenv и виртуальных окружений предназначено в первую очередь для управления версиями Python и пакетами внутри проектов.

Для решения проблемы с зависимостями можно попробовать несколько подходов:

1. Использование виртуальной машины или контейнера​

Создание изолированного окружения с нужной версией Python и всеми необходимыми зависимостями:

  • VirtualBox или VMware: Установите чистую систему (например, Ubuntu 16.04, которая поддерживает Python 2.7) и установите все необходимые пакеты там.
  • Docker: Создайте Docker-контейнер с нужной версией Python и всеми зависимостями.

2. Использование Conda​

Conda позволяет устанавливать разные версии Python и зависимости, что может помочь в решении вашей проблемы.

Попробуйте использовать метод установки tails-installer, который не требует зависимостей от Python 2.7. Возможно, есть альтернативные способы установки, такие как использование Snap или Flatpak, если они доступны.
 

noskov3

Well-known member
20.07.2020
51
0
BIT
346
Да, вы правы, использование pyenv и виртуальных окружений предназначено в первую очередь для управления версиями Python и пакетами внутри проектов.

Для решения проблемы с зависимостями можно попробовать несколько подходов:

1. Использование виртуальной машины или контейнера​

Создание изолированного окружения с нужной версией Python и всеми необходимыми зависимостями:

  • VirtualBox или VMware: Установите чистую систему (например, Ubuntu 16.04, которая поддерживает Python 2.7) и установите все необходимые пакеты там.
  • Docker: Создайте Docker-контейнер с нужной версией Python и всеми зависимостями.

2. Использование Conda​

Conda позволяет устанавливать разные версии Python и зависимости, что может помочь в решении вашей проблемы.

Попробуйте использовать метод установки tails-installer, который не требует зависимостей от Python 2.7. Возможно, есть альтернативные способы установки, такие как использование Snap или Flatpak, если они доступны.
Докер-контейнер - это ведь как изолированная среда, и основная система ее не видит и как же установить пакет в систему с параллельно включенным докер-контейнером? Или же установить прямо в него, когда у меня там будет только python и все, разве такое возможно?
 

Koloboking

Green Team
12.01.2017
167
48
BIT
819
Докер-контейнер - это ведь как изолированная среда, и основная система ее не видит и как же установить пакет в систему с параллельно включенным докер-контейнером? Или же установить прямо в него, когда у меня там будет только python и все, разве такое возможно?

Пример использования Docker​

Создание Docker-контейнера для установки и запуска tails-installer:

  1. Создайте файл Dockerfile:

Код:
FROM ubuntu:16.04

    genisoimage \
    curl \
    libcurl4-openssl-dev \
    && apt-get clean

RUN pip install configobj pygi urlgrabber

CMD ["bash"]
Код:
docker build -t tails-installer-env .
Запустите контейнер:
Код:
docker run -it tails-installer-env

Примерно как то так должно выглядеть
В этом контейнере вы можете установить и запустить tails-installer с необходимыми зависимостями.
 

Koloboking

Green Team
12.01.2017
167
48
BIT
819
Докер-контейнер - это ведь как изолированная среда, и основная система ее не видит и как же установить пакет в систему с параллельно включенным докер-контейнером? Или же установить прямо в него, когда у меня там будет только python и все, разве такое возможно?
Но если бы у меня происходило что пакет видит только более новую версию хотя нужная установлена я б разобрался где он ее видит и поменял на нужную например так:
Код:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.x 2
  • Здесь python3.x — это версия Python 3, которую вы хотите оставить как альтернативу. Установите приоритет 1 для Python 2.7 и приоритет 2 для Python 3.x.
  • Выбор версии Python по умолчанию:
    Для выбора версии Python по умолчанию используйте команду:

Код:
sudo update-alternatives --config python
Выберите нужную версию из предложенного списка. или Перенос бинарного файла или
Чтобы использовать pyenv системно, добавьте его в PATH в системных конфигурационных файлах, например в /etc/profile
 
Последнее редактирование:

noskov3

Well-known member
20.07.2020
51
0
BIT
346

Пример использования Docker​

Создание Docker-контейнера для установки и запуска tails-installer:

  1. Создайте файл Dockerfile:

Код:
FROM ubuntu:16.04

    genisoimage \
    curl \
    libcurl4-openssl-dev \
    && apt-get clean

RUN pip install configobj pygi urlgrabber

CMD ["bash"]
Код:
docker build -t tails-installer-env .
Запустите контейнер:
Код:
docker run -it tails-installer-env

Примерно как то так должно выглядеть
В этом контейнере вы можете установить и запустить tails-installer с необходимыми зависимостями.
Я прям в терминале контейнера пишу apt-get install tails-installer? А он будет использовать для этого список моих репозиториев с хоста или репозитории контейнерной ос?
 

noskov3

Well-known member
20.07.2020
51
0
BIT
346
Но если бы у меня происходило что пакет видит только более новую версию хотя нужная установлена я б разобрался где он ее видит и поменял на нужную
В том-то и дело что непонятно, он показывает что версия установленная она как дефолтная в системе, но apt-get ее не видит в упор, даже непонятно как тут разбираться. Напрашивается вывод что данная изолированная среда только для работы с Python, а не с зависимыми от него пакетами
 

Koloboking

Green Team
12.01.2017
167
48
BIT
819
Я прям в терминале контейнера пишу apt-get install tails-installer? А он будет использовать для этого список моих репозиториев с хоста или репозитории контейнерной ос?
В Google есть ответы на все вопросы - я не буду за Вас гуглить
 

Koloboking

Green Team
12.01.2017
167
48
BIT
819
В том-то и дело что непонятно, он показывает что версия установленная она как дефолтная в системе, но apt-get ее не видит в упор, даже непонятно как тут разбираться. Напрашивается вывод что данная изолированная среда только для работы с Python, а не с зависимыми от него пакетами
Чтобы использовать pyenv системно, добавьте его в PATH в системных конфигурационных файлах, например в /etc/profile думаю что если так сделать то увидится то что нужно
 

noskov3

Well-known member
20.07.2020
51
0
BIT
346
Но если бы у меня происходило что пакет видит только более новую версию хотя нужная установлена я б разобрался где он ее видит и поменял на нужную например так:
Код:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.x 2
  • Здесь python3.x — это версия Python 3, которую вы хотите оставить как альтернативу. Установите приоритет 1 для Python 2.7 и приоритет 2 для Python 3.x.
  • Выбор версии Python по умолчанию:
    Для выбора версии Python по умолчанию используйте команду:

Код:
sudo update-alternatives --config python
Выберите нужную версию из предложенного списка. или Перенос бинарного файла или
Чтобы использовать pyenv системно, добавьте его в PATH в системных конфигурационных файлах, например в /etc/profile
export PATH="$HOME/.pyenv/bin:$PATH" вот так?
 

Koloboking

Green Team
12.01.2017
167
48
BIT
819
export PATH="$HOME/.pyenv/bin:$PATH" вот так?
да, можно так а можно

Альтернативный путь для системного конфигурационного файла​

Если вы хотите, чтобы изменения были применены системно для всех пользователей, добавьте строки в системный конфигурационный файл, например, в /etc/profile.

  1. Редактирование /etc/profile:
    Код:
    sudo nano /etc/profile
  2. в конц файла
    Код:
    export PATH="/root/.pyenv/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"

  3. Код:
    source /etc/profile

но лучше перезагрузить
и проверить версию по умолчанию
 

noskov3

Well-known member
20.07.2020
51
0
BIT
346
да, можно так а можно

Альтернативный путь для системного конфигурационного файла​

Если вы хотите, чтобы изменения были применены системно для всех пользователей, добавьте строки в системный конфигурационный файл, например, в /etc/profile.

  1. Редактирование /etc/profile:
    Код:
    sudo nano /etc/profile
  2. в конц файла
    Код:
    export PATH="/root/.pyenv/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"

  3. Код:
    source /etc/profile

но лучше перезагрузить
и проверить версию по умолчанию
Мы же прописывали это в bashrc
 

noskov3

Well-known member
20.07.2020
51
0
BIT
346
да, можно так а можно

Альтернативный путь для системного конфигурационного файла​

Если вы хотите, чтобы изменения были применены системно для всех пользователей, добавьте строки в системный конфигурационный файл, например, в /etc/profile.

  1. Редактирование /etc/profile:
    Код:
    sudo nano /etc/profile
  2. в конц файла
    Код:
    export PATH="/root/.pyenv/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"

  3. Код:
    source /etc/profile

но лучше перезагрузить
и проверить версию по умолчанию

наводящие вопросы: где apt - get видит версию питона? как сделать так чтоб там отображалась версия которая нужна?
Мне только что пришла в голову идея! Скажите, а архивные репозитории ведь существуют? Просто многие пакеты из обновленных репозиториев удалены... В таком случае мог бы я использовать более старую версию Kali, со старой версией Python и со старыми репозиториями, тогда все устанавливается без проблем как в старые добрые времена! Простите что утомил вас своими проблемами, но в этом деле, либо ты доводишь все до конца и идешь дальше, либо ты все бросаешь при первой же неудаче и остаешься на месте...
 

Koloboking

Green Team
12.01.2017
167
48
BIT
819
Мне только что пришла в голову идея! Скажите, а архивные репозитории ведь существуют? Просто многие пакеты из обновленных репозиториев удалены... В таком случае мог бы я использовать более старую версию Kali, со старой версией Python и со старыми репозиториями, тогда все устанавливается без проблем как в старые добрые времена! Простите что утомил вас своими проблемами, но в этом деле, либо ты доводишь все до конца и идешь дальше, либо ты все бросаешь при первой же неудаче и остаешься на месте...
молодец что не бросаешь, достойно уважения. Но по моему вы копаете не в ту сторону, как только вы поставите старую версию вам скорее всего придется обновиться и в первую очередь репозитории. Ссылки на архивные пакеты я скидывал вчера. Смотрите в сторону почему в вашей системе apt-get видит питон 3 а не ту версию которая вам нужна. Ну и не совсем понятно, если вы готовы установить старую систему что мешает просто установить тайл на флешку как написано в документации и юзать спокойно?
 

Koloboking

Green Team
12.01.2017
167
48
BIT
819
Мне только что пришла в голову идея! Скажите, а архивные репозитории ведь существуют? Просто многие пакеты из обновленных репозиториев удалены... В таком случае мог бы я использовать более старую версию Kali, со старой версией Python и со старыми репозиториями, тогда все устанавливается без проблем как в старые добрые времена! Простите что утомил вас своими проблемами, но в этом деле, либо ты доводишь все до конца и идешь дальше, либо ты все бросаешь при первой же неудаче и остаешься на месте...
у вас проблемы не с пакетами а с версией питона
 

Koloboking

Green Team
12.01.2017
167
48
BIT
819
Но если бы у меня происходило что пакет видит только более новую версию хотя нужная установлена я б разобрался где он ее видит и поменял на нужную например так:
Код:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.x 2
  • Здесь python3.x — это версия Python 3, которую вы хотите оставить как альтернативу. Установите приоритет 1 для Python 2.7 и приоритет 2 для Python 3.x.
  • Выбор версии Python по умолчанию:
    Для выбора версии Python по умолчанию используйте команду:

Код:
sudo update-alternatives --config python
Выберите нужную версию из предложенного списка. или Перенос бинарного файла или
Чтобы использовать pyenv системно, добавьте его в PATH в системных конфигурационных файлах, например в /etc/profile
Если разберетесь как здесь написано с приоритетами то все должно работать
 

Koloboking

Green Team
12.01.2017
167
48
BIT
819
Мы же прописывали это в bashrc
VirtualBox_kali-linux-2024.2-virtualbox-amd64_14_07_2024_20_26_30.png

Специально накатил виртуалку и проверил - все устанавливается и все работает. Ищите где и что вы сделали не так, у меня ушло ровно 15 минут
 
Последнее редактирование:

noskov3

Well-known member
20.07.2020
51
0
BIT
346
Посмотреть вложение 75714
Специально накатил виртуалку и проверил - все устанавливается и все работает. Ищите где и что вы сделали не так, у меня ушло ровно 15 минут
приветствую вас. Я снова тут, остальные дела сделал, возвращаюсь к моему гештальту. Что интересно. Установил Tails, данный пакет там установлен, в репозиториях он также присутствует, и самое веселое - версия Python там стоит 3 и никаких проблем с зависимостями. Как такое возможно? Может там версия этого пакета уже новая, которая не требует зависимостей от других, старых версий Python?
 

Koloboking

Green Team
12.01.2017
167
48
BIT
819
приветствую вас. Я снова тут, остальные дела сделал, возвращаюсь к моему гештальту. Что интересно. Установил Tails, данный пакет там установлен, в репозиториях он также присутствует, и самое веселое - версия Python там стоит 3 и никаких проблем с зависимостями. Как такое возможно? Может там версия этого пакета уже новая, которая не требует зависимостей от других, старых версий Python?
напишите какая версия пакета там стоит
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!