Я пытаюсь установить две разные версии Xubuntu (16.10 и 14.04.5 LTS) на одну и ту же машину, но Grub не отображает другой Xubuntu в качестве опции в меню. Основная причина этого - мне нужно использовать PHP 5.9 для работы, но в личных проектах я использую PHP 7. Я не уверен, имеет ли это значение, но обе установки используют crypt-luks, и я попытался создать отдельную загрузку для каждого, а также для одного и того же загрузочного раздела (тот же результат). К сожалению, эта машина (XPS 15) имеет место только для одного PCI SSD. У меня также есть безопасная загрузка и UEFI.

Из чего я могу собрать

Я не эксперт по Ubuntu, но я использую его в течение нескольких лет в типичной Dual OS (единственная Ubuntu). Я думаю, что происходит то, что os-prober обнаруживает только Windows (когда я запускаю update-grub)

#os-prober 
/dev/sda2@/EFI/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi

Другие решения Меня также интересуют любые другие идеи. Я действительно не хочу использовать виртуальную коробку, если я могу помочь ей (был там раньше). Docker - еще один вариант, но получить инструменты CLI QA редактора (Netbeans), работающие из контейнера, возможно, не получится. Другая вещь, которую я мог бы сделать, это иметь вторую ОС, работающую от USB, но это было бы последним средством (я бы предпочел не использовать кабели).

1 ответ1

0

Было бы довольно сложно отладить ваш двойной (тройной?) проблема с загрузкой без дополнительной информации. Несмотря на это, кажется, что переключать ОС просто для смены версий php было бы очень сложно.

Так что, поскольку вы открыты для других решений, я могу дать вам одно, которым я часто пользуюсь в наши дни. Обратите внимание, что я не php-разработчик, но это должно работать так же, как и другие языки.

Менеджер пакетов Nix

В настоящее время, когда мне нужно установить несколько версий какого-либо языка / инструмента, я использую nix.

Nix - мощный менеджер пакетов, я не буду вдаваться в подробности, просто знаю, что он позволяет вам легко и безопасно использовать несколько версий библиотек / инструментов и т.д. Вы можете установить его, запустив:

$ curl https://nixos.org/nix/install | sh

Как правило, завершение скрипта в оболочку не является хорошей идеей, вы можете просмотреть скрипт, а затем вручную загрузить и запустить его, перейдя по адресу https://nixos.org/nix/install.

После установки есть два быстрых способа начать.

Список версий

Во-первых, давайте посмотрим, какие версии доступны:

$ nix-env --query --available --attr-path php
nixpkgs.php56  php-5.6.29
nixpkgs.php    php-7-0.14
nixpkgs.php71  php-7.1.0

Эта команда выводит список всех доступных в настоящее время версий php (обратите внимание: при этом выполняется поиск по умолчанию для channel nixpkgs, который вы получаете после установки, я не буду вдаваться здесь в подробности о том, что такое channel nixpkgs, просто представьте его как известный набор пакетов). Для этой команды есть сокращение: nix-env -qaP php .

Как видите, есть 3 версии. Теперь, как мы их используем?

Установить во временную оболочку

Это обычно, как я переключаюсь между версиями инструментов. Nix поставляется со встроенной командой nix-shell которая позволяет вам устанавливать пакет (или пакеты) и запускать его только внутри оболочки. Для запуска php5.6:

$ nix-shell --packages php56

Это загрузит php56 (и его зависимости), и он будет доступен в только что запущенной оболочке:

[nix-shell:~]$ php --version
PHP 5.6.29 (cli) (built: Dec  8 2016 06:32:02) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Если вы запустите exit вы будете извлечены из nix-shell и возвращены в исходную оболочку, запустите там php и вы увидите, что ее больше не существует (технически она все еще существует в хранилище nix в вашей системе, но это не то, что нужно). вам нужно беспокоиться только об этом), если, конечно, он уже не установлен в системе.

Теперь вы можете сделать то же самое для php7:

$ nix-shell --packages php

Я считаю, что это самый гибкий способ перехода между версиями.

Установить в пользовательском магазине Nix

Другой способ - установить в хранилище пользователя с помощью команды nix-env .

$ nix-env --install --attr nixpkgs.php56

Теперь php 5 должен быть доступен, и на вашем пути, не нужно nix-shell здесь:

$ php --version
PHP 5.6.29 (cli) (built: Dec  8 2016 06:32:02) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Чтобы установить php 7:

$ nix-env --install --attr nixpkgs.php
replacing old ‘php-5.6.29’
installing ‘php-7.0.14’
...

Как видите, он автоматически удаляет предыдущую версию. Чтобы удалить вручную, запустите nix-env -e php . Наконец, вы можете получить список пакетов, установленных в хранилище пользователей, запустив nix-env -qa .

Это едва касается поверхности того, что может сделать nix, если это в любом случае полезно, я бы предложил немного углубиться в это, поскольку, в зависимости от ваших потребностей (другие инструменты, управление пакетами php и т.д.), Вероятно, даже лучшие способы достичь того, что вы хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .