Создается впечатление что вся эта изолированная среда чисто для работы с python и с проектами python, нежели для преодаления проблемы зависимостей, так как не смотря на установленную нужную версию питона, tails-installer все равно ругается что пакет зависим от данной версии, которую я только что установил, плют пакеты configobj pygi urlgrabber, я их нашел в формате deb и пробовал установить их вручную, но тоже ничего не получилось по той же причине, зависимостей от версии питонаКоманда pyenv install 2.7.18 устанавливает версию Python 2.7.18 на вашу систему, что необходимо сделать перед созданием виртуального окружения с этой версией. После того как версия Python установлена, можно создать виртуальное окружение на её основе с помощью pyenv virtualenv 2.7.18 tails-env.
Таким образом, последовательность команд имеет следующий логический порядок:
- Установить pyenv и настроить его в вашей оболочке:
Код:curl https://pyenv.run | bash- Добавьте следующие строки в ~/.bashrc:
Код:export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"- Перезагрузите оболочку или выполните:
- source ~/.bashrc
Код:pyenv install 2.7.18- Если отсутствуют необходимые пакеты и библиотеки, установите их:
Код:sudo apt-get install libreadline8 libreadline-dev bzip2 libbz2-dev libsqlite3-dev libssl-dev- Создать виртуальное окружение с нужной версией Python:
Код:pyenv virtualenv 2.7.18 tails-env- Активировать виртуальное окружение:
Код:pyenv activate tails-env- Убедиться, что используется нужная версия pip:
Код:pip install --upgrade "pip<21.0"- Настроить системный Python по умолчанию:
Код:sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1- Установить нужные библиотеки в виртуальном окружении:
Код:sudo apt install genisoimage pip install configobj pip install pygi pip install urlgrabber- Если установка urlgrabber неудачна из-за отсутствия нужного пакета, установите его:
Код:sudo apt update sudo apt install -y curl libcurl4-openssl-dev- Если установка все равно неудачна, попробуйте другую команду:
Код:pip install --no-cache-dir urlgrabber- Таким образом, команда pyenv install 2.7.18 выполняется первой для установки необходимой версии Python на вашу систему, а затем создается виртуальное окружение на основе этой версии Python.
нужно было делать в самом начале а еще лучше сразу после установки системы дабы избежать танцев с бубном на 2 дня как произошло в вашем случае
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
К курсу →
Да, вы правы, использование pyenv и виртуальных окружений предназначено в первую очередь для управления версиями Python и пакетами внутри проектов.Создается впечатление что вся эта изолированная среда чисто для работы с python и с проектами python, нежели для преодаления проблемы зависимостей, так как не смотря на установленную нужную версию питона, tails-installer все равно ругается что пакет зависим от данной версии, которую я только что установил, плют пакеты configobj pygi urlgrabber, я их нашел в формате deb и пробовал установить их вручную, но тоже ничего не получилось по той же причине, зависимостей от версии питона
Для решения проблемы с зависимостями можно попробовать несколько подходов:
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 и все, разве такое возможно?Да, вы правы, использование 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 и все, разве такое возможно?
Пример использования Docker
Создание Docker-контейнера для установки и запуска tails-installer:- Создайте файл 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
Последнее редактирование модератором:
Я прям в терминале контейнера пишу apt-get install tails-installer? А он будет использовать для этого список моих репозиториев с хоста или репозитории контейнерной ос?Пример использования Docker
Создание Docker-контейнера для установки и запуска tails-installer:
- Создайте файл 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 ее не видит в упор, даже непонятно как тут разбираться. Напрашивается вывод что данная изолированная среда только для работы с Python, а не с зависимыми от него пакетамиНо если бы у меня происходило что пакет видит только более новую версию хотя нужная установлена я б разобрался где он ее видит и поменял на нужную
В Google есть ответы на все вопросы - я не буду за Вас гуглитьЯ прям в терминале контейнера пишу apt-get install tails-installer? А он будет использовать для этого список моих репозиториев с хоста или репозитории контейнерной ос?
Чтобы использовать pyenv системно, добавьте его в PATH в системных конфигурационных файлах, например в /etc/profile думаю что если так сделать то увидится то что нужноВ том-то и дело что непонятно, он показывает что версия установленная она как дефолтная в системе, но apt-get ее не видит в упор, даже непонятно как тут разбираться. Напрашивается вывод что данная изолированная среда только для работы с Python, а не с зависимыми от него пакетами
export PATH="$HOME/.pyenv/bin:$PATH" вот так?Но если бы у меня происходило что пакет видит только более новую версию хотя нужная установлена я б разобрался где он ее видит и поменял на нужную например так:
Код: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" вот так?
Альтернативный путь для системного конфигурационного файла
Если вы хотите, чтобы изменения были применены системно для всех пользователей, добавьте строки в системный конфигурационный файл, например, в /etc/profile.- Редактирование /etc/profile:
Код:
sudo nano /etc/profile - в конц файла
Код:export PATH="/root/.pyenv/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
-
Код:
source /etc/profile
но лучше перезагрузить
и проверить версию по умолчанию
наводящие вопросы: где apt - get видит версию питона? как сделать так чтоб там отображалась версия которая нужна?export PATH="$HOME/.pyenv/bin:$PATH" вот так?
Мы же прописывали это в bashrcда, можно так а можно
Альтернативный путь для системного конфигурационного файла
Если вы хотите, чтобы изменения были применены системно для всех пользователей, добавьте строки в системный конфигурационный файл, например, в /etc/profile.
- Редактирование /etc/profile:
Код:sudo nano /etc/profile- в конц файла
Код:export PATH="/root/.pyenv/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
Код:source /etc/profile
но лучше перезагрузить
и проверить версию по умолчанию
да, можно так а можно
Альтернативный путь для системного конфигурационного файла
Если вы хотите, чтобы изменения были применены системно для всех пользователей, добавьте строки в системный конфигурационный файл, например, в /etc/profile.
- Редактирование /etc/profile:
Код:sudo nano /etc/profile- в конц файла
Код:export PATH="/root/.pyenv/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
Код:source /etc/profile
но лучше перезагрузить
и проверить версию по умолчанию
Мне только что пришла в голову идея! Скажите, а архивные репозитории ведь существуют? Просто многие пакеты из обновленных репозиториев удалены... В таком случае мог бы я использовать более старую версию Kali, со старой версией Python и со старыми репозиториями, тогда все устанавливается без проблем как в старые добрые времена! Простите что утомил вас своими проблемами, но в этом деле, либо ты доводишь все до конца и идешь дальше, либо ты все бросаешь при первой же неудаче и остаешься на месте...наводящие вопросы: где apt - get видит версию питона? как сделать так чтоб там отображалась версия которая нужна?
молодец что не бросаешь, достойно уважения. Но по моему вы копаете не в ту сторону, как только вы поставите старую версию вам скорее всего придется обновиться и в первую очередь репозитории. Ссылки на архивные пакеты я скидывал вчера. Смотрите в сторону почему в вашей системе apt-get видит питон 3 а не ту версию которая вам нужна. Ну и не совсем понятно, если вы готовы установить старую систему что мешает просто установить тайл на флешку как написано в документации и юзать спокойно?Мне только что пришла в голову идея! Скажите, а архивные репозитории ведь существуют? Просто многие пакеты из обновленных репозиториев удалены... В таком случае мог бы я использовать более старую версию Kali, со старой версией Python и со старыми репозиториями, тогда все устанавливается без проблем как в старые добрые времена! Простите что утомил вас своими проблемами, но в этом деле, либо ты доводишь все до конца и идешь дальше, либо ты все бросаешь при первой же неудаче и остаешься на месте...
у вас проблемы не с пакетами а с версией питонаМне только что пришла в голову идея! Скажите, а архивные репозитории ведь существуют? Просто многие пакеты из обновленных репозиториев удалены... В таком случае мог бы я использовать более старую версию 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
Специально накатил виртуалку и проверил - все устанавливается и все работает. Ищите где и что вы сделали не так, у меня ушло ровно 15 минут
рекомендую прочитать эту статейку
Последнее редактирование модератором:
приветствую вас. Я снова тут, остальные дела сделал, возвращаюсь к моему гештальту. Что интересно. Установил Tails, данный пакет там установлен, в репозиториях он также присутствует, и самое веселое - версия Python там стоит 3 и никаких проблем с зависимостями. Как такое возможно? Может там версия этого пакета уже новая, которая не требует зависимостей от других, старых версий Python?Посмотреть вложение 75714
Специально накатил виртуалку и проверил - все устанавливается и все работает. Ищите где и что вы сделали не так, у меня ушло ровно 15 минут
рекомендую прочитать эту статейку
напишите какая версия пакета там стоитприветствую вас. Я снова тут, остальные дела сделал, возвращаюсь к моему гештальту. Что интересно. Установил Tails, данный пакет там установлен, в репозиториях он также присутствует, и самое веселое - версия Python там стоит 3 и никаких проблем с зависимостями. Как такое возможно? Может там версия этого пакета уже новая, которая не требует зависимостей от других, старых версий Python?
Ещё по теме
4
Поделиться: