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

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

  • Автор темы Автор темы noskov3
  • Дата начала Дата начала

noskov3

Well-known member
20.07.2020
65
0
BIT
472
Всем добра! Столкнулся со следующей проблемой. ОС - 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.: вариант с докер-контейнером не подходит, так как данный пакет мне нужен именно на хостовой машине, плюс ко всему, как я уже описал выше, сталкиваюсь иногда с такими проблемами при установке, с зависимостями от других пакетов и библиотек, более старых версий! Хочу просто понять алгоритм действий по решению данных проблем, куда и что устанавливать!
Заранее благодарю всех откликнувшихся!
 
Команда 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 и пробовал установить их вручную, но тоже ничего не получилось по той же причине, зависимостей от версии питона
 
Создается впечатление что вся эта изолированная среда чисто для работы с 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, если они доступны.
 
Да, вы правы, использование 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 и все, разве такое возможно?
 
Докер-контейнер - это ведь как изолированная среда, и основная система ее не видит и как же установить пакет в систему с параллельно включенным докер-контейнером? Или же установить прямо в него, когда у меня там будет только 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 с необходимыми зависимостями.
 
Докер-контейнер - это ведь как изолированная среда, и основная система ее не видит и как же установить пакет в систему с параллельно включенным докер-контейнером? Или же установить прямо в него, когда у меня там будет только 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
 
Последнее редактирование:

Пример использования 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? А он будет использовать для этого список моих репозиториев с хоста или репозитории контейнерной ос?
 
Но если бы у меня происходило что пакет видит только более новую версию хотя нужная установлена я б разобрался где он ее видит и поменял на нужную
В том-то и дело что непонятно, он показывает что версия установленная она как дефолтная в системе, но apt-get ее не видит в упор, даже непонятно как тут разбираться. Напрашивается вывод что данная изолированная среда только для работы с Python, а не с зависимыми от него пакетами
 
Я прям в терминале контейнера пишу apt-get install tails-installer? А он будет использовать для этого список моих репозиториев с хоста или репозитории контейнерной ос?
В Google есть ответы на все вопросы - я не буду за Вас гуглить
 
В том-то и дело что непонятно, он показывает что версия установленная она как дефолтная в системе, но apt-get ее не видит в упор, даже непонятно как тут разбираться. Напрашивается вывод что данная изолированная среда только для работы с Python, а не с зависимыми от него пакетами
Чтобы использовать pyenv системно, добавьте его в PATH в системных конфигурационных файлах, например в /etc/profile думаю что если так сделать то увидится то что нужно
 
Но если бы у меня происходило что пакет видит только более новую версию хотя нужная установлена я б разобрался где он ее видит и поменял на нужную например так:
Код:
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" вот так?
 
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

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

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

Если вы хотите, чтобы изменения были применены системно для всех пользователей, добавьте строки в системный конфигурационный файл, например, в /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
 
да, можно так а можно

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

Если вы хотите, чтобы изменения были применены системно для всех пользователей, добавьте строки в системный конфигурационный файл, например, в /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 и со старыми репозиториями, тогда все устанавливается без проблем как в старые добрые времена! Простите что утомил вас своими проблемами, но в этом деле, либо ты доводишь все до конца и идешь дальше, либо ты все бросаешь при первой же неудаче и остаешься на месте...
 
Мне только что пришла в голову идея! Скажите, а архивные репозитории ведь существуют? Просто многие пакеты из обновленных репозиториев удалены... В таком случае мог бы я использовать более старую версию Kali, со старой версией Python и со старыми репозиториями, тогда все устанавливается без проблем как в старые добрые времена! Простите что утомил вас своими проблемами, но в этом деле, либо ты доводишь все до конца и идешь дальше, либо ты все бросаешь при первой же неудаче и остаешься на месте...
молодец что не бросаешь, достойно уважения. Но по моему вы копаете не в ту сторону, как только вы поставите старую версию вам скорее всего придется обновиться и в первую очередь репозитории. Ссылки на архивные пакеты я скидывал вчера. Смотрите в сторону почему в вашей системе apt-get видит питон 3 а не ту версию которая вам нужна. Ну и не совсем понятно, если вы готовы установить старую систему что мешает просто установить тайл на флешку как написано в документации и юзать спокойно?
 
Мне только что пришла в голову идея! Скажите, а архивные репозитории ведь существуют? Просто многие пакеты из обновленных репозиториев удалены... В таком случае мог бы я использовать более старую версию Kali, со старой версией 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
Если разберетесь как здесь написано с приоритетами то все должно работать
 
Мы же прописывали это в bashrc
VirtualBox_kali-linux-2024.2-virtualbox-amd64_14_07_2024_20_26_30.png

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

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