Установите минимальную Ubuntu как AWS EC2

Есть ли какой-либо способ, которым я могу установить минимальную версию Ubuntu (GUI меньше) так, чтобы это тесно напомнило бы Ubuntu, настраивает Вас, добираются, когда Вы получаете стандартную систему AWS EC2?

существует ли лучший выбор что с помощью https://help.ubuntu.com/community/Installation/MinimalCD? В противном случае, что еще потребности быть установленным в Минимальной системе для получения его ближе к экземпляру EC2?

Я буду устанавливать это в Oracle VB environement с возможным намерением рабочих контейнеров Докера и возможно системы CI/CD для персональной разработки. Я просто хочу изучить, как настроить все эти инструменты/системы до выполнения фактическая живая, заплаченная система.

TIA

1
задан 19 July 2018 в 13:58

9 ответов

Необходимо загрузить изображение Сервера Ubuntu https://www.ubuntu.com/server и установить его на виртуальной машине. Это изображение не поставлется с GUI, только консоль.

Править: На самом деле существует красивая инструкция относительно того, как установить Ubuntu на Вашей собственной машине: https://tutorials.ubuntu.com/tutorial/tutorial-install-ubuntu-server

1
ответ дан 7 December 2019 в 15:16

Если у Вас нет модифицируемого lvalue итератора, или он желаем для получения копии данного итератора (оставляющий без изменений исходный), то C++ 11 идет с новыми функциями помощника - std::next / std::prev :

std::next(iter, 2);          // returns a copy of iter incremented by 2
std::next(std::begin(v), 2); // returns a copy of begin(v) incremented by 2
std::prev(iter, 2);          // returns a copy of iter decremented by 2
17
ответ дан 31 October 2019 в 03:35

Мы можем использовать оба станд.:: усовершенствование , а также станд.:: затем , но существует различие между двумя.

advance изменяет его аргумент и ничего не возвращает. Таким образом, это может использоваться как:

vector<int> v;
v.push_back(1);
v.push_back(2);
auto itr = v.begin();
advance(itr, 1);          //modifies the itr
cout << *itr<<endl        //prints 2

next возвраты измененная копия итератора:

vector<int> v;
v.push_back(1);
v.push_back(2);
cout << *next(v.begin(), 1) << endl;    //prints 2
3
ответ дан 31 October 2019 в 03:35

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

static constexpr auto step = 2;

// Guard against invalid initial iterator.
if (!list.empty())
{
    for (auto it = list.begin(); /*nothing here*/; std::advance(it, step))
    {
        // do stuff...

        // Guard against advance past end of iterator.
        if (std::distance(it, list.end()) > step)
            break;
    }
}

В зависимости от реализации набора, вычисление расстояния может быть очень медленным. Ниже оптимально и более читаем. Закрытие могло быть изменено на служебный шаблон со значением конца списка, переданным ссылкой константы:

const auto advance = [&](list_type::iterator& it, size_t step)
{
    for (size_t i = 0; it != list.end() && i < step; std::next(it), ++i);
};

static constexpr auto step = 2;

for (auto it = list.begin(); it != list.end(); advance(it, step))
{
    // do stuff...
}

, Если нет никакого цикличного выполнения:

static constexpr auto step = 2;
auto it = list.begin();

if (step <= list.size())
{
    std::advance(it, step);
}
0
ответ дан 31 October 2019 в 03:35

std::advance( iter, 2 );

Этот метод будет работать на итераторы, которые не являются итераторами произвольного доступа, но он может все еще быть специализирован реализацией, чтобы быть не менее эффективным, чем iter += 2 при использовании с итераторами произвольного доступа.

94
ответ дан 31 October 2019 в 03:35

Вы могли использовать 'присвоение дополнением' оператор

iter += 2;
7
ответ дан 31 October 2019 в 03:35

Если Вы не знаете, есть ли у Вас достаточно следующих элементов в Вашем контейнере или нет, необходимо проверить по концу контейнера между каждым инкрементом. Ни ++, ни станд.:: усовершенствование сделает это для Вас.

if( ++iter == collection.end())
  ... // stop

if( ++iter == collection.end())
  ... // stop

Вы можете даже самокрутка связано-безопасная функция усовершенствования.

Если Вы уверены, что не пойдете мимо конца, то станд.:: усовершенствование (проход, 2) является лучшим решением.

4
ответ дан 31 October 2019 в 03:35

Очень простой ответ:

++++iter

Длинный ответ:

Действительно необходимо привыкнуть к записи ++iter вместо iter++. Последний должен возвратить (копия) старое значение, которое отличается от нового значения; это занимает время, и расположить с интервалами.

Отметьте тот инкремент префикса (++iter) берет lvalue и возвращает lvalue, тогда как постфиксный инкремент (iter++) берет lvalue и возвращает rvalue.

-5
ответ дан 31 October 2019 в 03:35

Хорошо, я решил это. То, что я должен был сделать, было восстановлением заводских настроек моей машины (это Dell XPS-13). Я потерял свои данные, но, к счастью, на них не было ничего незаменимого.

Для этого мне нужно было войти в меню загрузчика GNU GRUB и выбрать «Восстановить Ubuntu 16.04 до заводского состояния».

Я все еще надеюсь, что есть способ выполнить обновления без потери данных в однако будущее!

Похоже, что система не была настроена правильно с самого начала, так как я заметил, что некоторые пакеты не будут обновляться должным образом. Спасибо за ваш совет!

0
ответ дан 31 October 2019 в 03:35

Другие вопросы по тегам:

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