В CentOS, как переключаться на GCC по умолчанию после переключения на более высокую версию GCC с DevToolset

Все эти моменты решаются установщиком по умолчанию, если вы выбираете шифрование всего диска:

  • современное шифрование
  • полностью зашифрованный диск (включая свопинг)
  • единый пароль при загрузке для дешифрования
  • автоматическое шифрование в режиме гибернации / приостановки

Есть два раздела: / boot / (sda1) не зашифрован, sda2 будет зашифрован, группа LVM будет сформирована из созданного устройства, и затем эта группа LVM будет разделена на / , / home / и раздел подкачки. Этот раздел подкачки также будет использоваться для гибернации. Использование только одного зашифрованного раздела делает необходимость только одного пароля во время загрузки или возобновления работы тривиальной.

К сожалению, я не смог найти никакой документации по этому поводу в вики-странице Debian, но Archlinux имеет эту статью .

второй пароль для загрузки второй действующей ОС для правдоподобного отрицания.

Я не знаю решения Linux для этого. И нигде нет реального решения, которое сделало бы отрицание действительно правдоподобным (в том смысле, что «фальшивая» система должна выглядеть так, как если бы она использовалась регулярно); но эта часть скорее принадлежит security.stackexchange , ИМХО.

0
01.12.2018, 05:04
3 ответа

Версия gcc, распространяемая вместе с CentOS 6, на самом деле 4.4.7.

Вы можете установить столько версий gcc, либо установив devtoolset-#через yum, либо скомпилировав из исходного кода.

Первый способ самый простой. Убедитесь, что вы устанавливаете пакеты devtoolsetчерез scl repo. Я полагаю, что вы уже это сделали, так как вы уже установили его, но на случай, если вы этого не сделали:

yum install centos-release-scl

Затем вы можете использовать приведенную ниже команду, чтобы установить gcc versionна любое значение, которое вы хотите.Используя 5 для этого примера и предполагая, что ваша оболочкаbash:

scl enable devtoolset-5 bash

Если вы хотите изменить на 6:

scl enable devtoolset-6 bash

Если вы хотите вернуться к настройкам по умолчанию, любое из следующих действий будет работать, предполагая, что bash— это ваша оболочка:

bash

source ~/.bash_profile

Первый запускает новый сеанс оболочки и устанавливает любые псевдонимы/переменные/команды в ~/.bashrc. Второй установит его с помощью переменных/команд в ~/.bash_profile. (Без включенного devtoolset ).

Вы даже можете поместить scl enable devtoolset-5 bash, например, в ~/.bashrcили ~/.bash_profile, чтобы установить версию gccна одну из версий devtoolsetпри входе в систему. Чтобы вернуться к системе по умолчанию, если вы используете этот метод, закомментируйте строку в ~/.bashrcили ~/.bash_profile, а затем запустите bashили source ~/.bash_profileсоответственно. Это запустит новый сеанс оболочки со всем в одном из этих файлов инициализации оболочки, кроме команды scl enable, которую вы закомментировали. Единственным недостатком является то, что любые переменные, которые вы установили с помощью команды export, больше не будут существовать, поскольку сеанс оболочки будет новым.

5
28.01.2020, 02:41

Вероятно, это просто вопрос изменения некоторых переменных окружения, вроде PATH. Насколько велик этот файл ⁠ /opt/rh/devtoolset-5/enable? Можете ли вы взглянуть на него, увидеть, что он делает, и адаптировать его для старого компилятора, который вы хотите использовать? Очевидными вещами, которые нужно искать, были бы имена каталогов. где установлены новые файлы компилятора (измените их на соответствующие пути для старого компилятора )и номер версии. Я не знаю, что еще может быть там.

0
28.01.2020, 02:41

Я не эксперт по scl, но у меня многолетний опыт работы с Linux.

Когда вы выполняете scl enable devtoolset-9 bash, происходит следующее: запускается новый bash и устанавливается новая среда.

Вы можете увидеть новый процесс bashпо:

  • первый запуск новой оболочки и проверка pid вашей оболочки черезecho $$
  • второе включение нового devtoolset черезscl enable devtoolset-9 bash
  • , затем снова проверьте свой pid черезecho $$
  • для бонусных баллов вы можете сделать pstree -p, чтобы увидеть, что ваш новый pid bash имеет родительский pid вашего старого процесса bash

Итак, чтобы наконец ответить на ваш вопрос :Чтобы вернуться к компилятору по умолчанию g++, все, что вам нужно сделать, это выйти из вашего текущего процесса bash, после чего у вас должен быть старый компилятор g++.

Важное примечание относительно вашего ~/.bashrc:

  • мое решение не сработает, если вы как-то модифицировали свой~/.bashrc
  • т. е. если у вас есть что-то, что всегда делаетscl enable devtoolset-9
  • см. другие решения на этой странице, потому что другие решения -более подробно рассказывают о вашем ~/.bashrc и о том, как его изменить или отменить
1
09.12.2020, 14:04

Теги

Похожие вопросы