С Linux мы пересеклись в 2005 году, это был Debian. Потом последовал долгий роман с Ubuntu, ради которого в марте 2009 приобрел нетбук Asus EeePC 1000. В 2010 начал сотрудничать с ALT Linux, участвовал в «Школьном проекте» (продвигали Linux в школах) и стал майнтейнером пакета basic256.

Последние несколько лет мой EeePC с Ubuntu мирно отдыхал в глубине шкафa. И тут появился повод стряхнуть с него пыль. Возникла задача познакомиться с CentOS Linux и протестировать там примеры для вебинара по Apache Ant.

Посетив www.centos.org, останавливаюсь на версии 6.8. На странице выбираю сервер с образами дисков и скачиваю файл CentOS-6.8-i386-LiveCD.iso. С помощью Rufus создаю загрузочный USB и успешно инсталлирую CentOS 6.8 на свой Asus EeePC. Процесс очень простой. А тёмно-синяя цветовая гамма старого доброго GNOME приятна для глаз…

Какие инструменты (программы/пакеты) мне нужны? Пока только три: Java JDK, Apache Ant и Git. Начинаю с синхронизации и обновления индексных файлов пакетов, памятуя что вместо apt-get (в Ubuntu) в CentOS используют yum:

[lamp@localhost ~]$ sudo yum update
[sudo] password for lamp:
lamp is not in the sudoers file. This incident will be reported.

Вот это новость… В отличие от Ubuntu, простой пользователь не обладает правами выполнения команд от имени root. Изучив wiki.centos.org/TipsAndTricks/BecomingRoot, решаю использовать «quick and dirty way», отредактировав файл /etc/sudoers. Для этого у root есть команда visudo (спасибо опытным коллегам). Перехожу в режим root (после su ввожу root пароль, заданный при инсталляции):

[lamp@localhost ~]$ su
Password:
[root@localhost lamp]# visudo

Нахожу в файле строку root ALL=(ALL) ALL и добавляю (предварительно нажав клавишу «I» и войдя в режим вставки) ниже подобную строку, только вместо root пишу lamp, получается так:

root ALL=(ALL) ALL
lamp ALL=(ALL) ALL

Нажимаю Esc и выхожу из файла с сохранением (:wq). Покидаю режим root командой exit. Теперь можно выполнять административные команды через sudo, вводя пользовательский пароль. Итак, снова:

[lamp@localhost ~]$ sudo yum update
[sudo] password for lamp:

Ввожу пароль, всё работает, yum обновляет индексы и заодно предлагает обновить кое-какие пакеты, скачав 197 Мб. Отвечаю N, это немного подождёт.

Время заняться Java JDK. Передо мной выбор — ставить oracle-jdk или open-jdk? Благодаря советам более опытных коллег чаша весов склоняется в сторону open-jdk. Использую команду yum search чтобы найти имя пакета для установки. Ставлю, само собой, самую свежую версию:

[lamp@localhost ~]$ sudo yum search jdk

java-1.8.0-openjdk-devel.i686: OpenJDK Development Environment

[lamp@localhost ~]$ sudo yum install java-1.8.0-openjdk-devel

[lamp@localhost ~]$ javac -version
javac 1.8.0_121
[lamp@localhost ~]$ java -version
openjdk version «1.8.0_121»
OpenJDK Runtime Environment (build 1.8.0_121-b13)
OpenJDK Server VM (build 25.121-b13, mixed mode)

JDK есть, очередь за Apache Ant. Пробую поставить из репозитария:

[lamp@localhost ~]$ sudo yum install ant

и yum предлагает скачать около 60 Мб и установить 10 пакетов зависимостей, где сам ant только лишь 2.2 Мб. При этом Google слегка намекает — это версия 1.7.1 что меня совершенно не устраивает (там нет junit). После недолго поиска нахожу подходящий скрипт, позволяющий скачать и установить свежую версию. Слегка редактирую его под себя:

# download and install
antname=apache-ant
antserver=http://apache-mirror.rbc.ru/pub/apache
antversion=1.10.1
wget ${antserver}/ant/binaries/${antname}-${antversion}-bin.tar.gz
sudo tar xvfvz ${antname}-${antversion}-bin.tar.gz -C /opt
sudo ln -sfn /opt/${antname}-${antversion} /opt/ant
sudo sh -c 'echo ANT_HOME=/opt/ant >> /etc/environment'
sudo ln -sfn /opt/ant/bin/ant /usr/bin/ant

# check installation
ant -version

# cleanup
rm ${antname}-${antversion}-bin.tar.gz

и сохраняю в домашнем каталоге, затем запускаю:

[lamp@localhost ~]$ chmod +x installantoncentos.sh
[lamp@localhost ~]$ ./installantoncentos.sh

в последней строке вижу результат команды ant -version:

Apache Ant(TM) version 1.10.1 compiled on February 2 2017

Git ставлю из репозитария:

[lamp@localhost ~]$ sudo yum install git
[lamp@localhost ~]$ git --version
git version 1.7.1

Итак, нужные инструменты готовы и можно приступать к тестированию примеров для вебинара. Но это будет уже другая история
Поделиться с друзьями
-->

Комментарии (18)


  1. grossws
    05.03.2017 19:48
    +3

    [root@localhost lamp]# chmod +w /etc/sudoers
    [root@localhost lamp]# vi /etc/sudoers

    Вас не били линейкой? А надо было. Для редактирования sudoers есть visudo, проставить env var EDITOR по вкусу.


    1. grossws
      05.03.2017 19:55
      +2

      И для установки java аж пришлось гуглить и читать туториал. Лучше бы yum(8) посмотрели, узнали бы про yum search, набрали yum search openjdk и потом поставили нужную версию через yum install java-1.8.0-openjdk-devel.


      Если вам нужен актуальный ant, то зачем ставить его из archive.apache.org? Почему не посмотреть на официальной странице Apache Ant и не взять актуальную версию?


      1. sub31
        05.03.2017 21:47

        Скорее всего надо было срочно поставить какой-то проект и опробовать под CentOS 6.8.
        Обычно CentOS очень стабилен и содержит кучу весьма древних библиотек. Просто так из последней убунты вытащить нечто и заставить работать под CentOS — не один пот сойдет.
        Ну а openjdk вовсе не то же самое, что oracle-jdk. Тут не по одним граблям бегать придется почему стабильное приложение на oracle-jdk собирается и работает, а под openjdk ни в какую. Ну и наоборот.
        Ну и так… рекомендации… если ставите несколько вариантов java на машине, то пользуйтесь для переключения alternatives. Не портите жизнь себе и окружающим.
        А то что поставили ант распаковкой бинарников из архива, даже без rpm — видимо очень быстро надо и сильно доверяете источнику.


        1. biblelamp
          05.03.2017 22:23

          если ставите несколько вариантов java на машине, то пользуйтесь для переключения alternatives
          спасибо, учту


        1. sshikov
          05.03.2017 22:24

          Вообще ant пофиг на версию jdk. Ну, почти — наверное можно найти что-то, что будет работать не так, но придется очень сильно постараться.


        1. grossws
          06.03.2017 00:25

          Обычно CentOS очень стабилен и содержит кучу весьма древних библиотек. Просто так из последней убунты вытащить нечто и заставить работать под CentOS — не один пот сойдет.

          Потому что надо тащить не из ubuntu или debian, а из fedora. rpmbuild позволит без проблем пересобрать нужное. Иначе получается жалоба на то, что гланды через жопу очень долго извлекаются.


          Ну а openjdk вовсе не то же самое, что oracle-jdk. Тут не по одним граблям бегать придется почему стабильное приложение на oracle-jdk собирается и работает, а под openjdk ни в какую. Ну и наоборот.

          Примеры для серверных приложений будут? Отличия рендеринга шрифтов, мелочёвка в swing/awt и javafx нерелевантны. Замечу, что и oracle jdk 8, и openjdk 8 проходят TCK. Проблемы, скорее, возникнут при переходе на IBM J9, Excelsior JET или Azul, когда выяснится, что вы (или ваши зависимости) неудачно влезли в sun.misc или около того.


          А то что поставили ант распаковкой бинарников из архива, даже без rpm — видимо очень быстро надо и сильно доверяете источнику.

          И то, и то — вопрос доверия. В одном случае вы доверяете оригинальному вендору (ASF) и проверяете хэшсумму + pgp/gpg подпись; в другом — доверяете вендору ОС (RedHat/CentOS Project) и проверяете те же хэшсумму + pgp/gpg подпись (за вас это делает rpm, но принципиального отличия нет).


      1. biblelamp
        05.03.2017 22:08

        Если вам нужен актуальный ant, то зачем ставить его из archive.apache.org

        В том и фокус, что актуальный в данной ситуации был не нужен. Устроил бы любой 1.8.*, а уж 1.9.* с головой. Тем не менее за совет — спасибо.


      1. biblelamp
        05.03.2017 22:17

        Лучше бы yum(8) посмотрели, узнали бы про yum search, набрали yum search openjdk и потом поставили нужную версию через yum install java-1.8.0-openjdk-devel

        Спасибо, я в курсе про команду search, смотрел (только не стал писать об этом). Просто после размышления выбрал ставить именно oracle-jdk так как он не совсем идентичен open-jdk, как верно отметил ниже один комментатор.


    1. biblelamp
      05.03.2017 22:02

      Для редактирования sudoers есть visudo, проставить env var EDITOR по вкусу.

      Большое спасибо за совет. Учту.


    1. biblelamp
      07.03.2017 08:46

      Спасибо за советы по поводу visudo и open-jdk. Учел их, исправив статью (само собой, повторив в реале).


  1. whitedruid
    05.03.2017 20:27

    Если совсем 'quick makeshift' подход практиковать при редактировании /etc/sudoers, то, chmod +w — вовсе не обязательно, а достаточно в самом vi ввести по завершению редактирования :wq!
    Про ant также верно в комментариях написали. Из archive — как-то не совсем верно.
    Наконец, про git. Он у Вас будет достаточно старой версии, в то время, как можно поставить, дополнительно установив neon из rpm правда, версию 1.7.12.


    1. biblelamp
      05.03.2017 22:58

      при редактировании /etc/sudoers, то, chmod +w — вовсе не обязательно, а достаточно в самом vi ввести по завершению редактирования :wq!

      Спасибо. Впрочем я заметил (спасибо grossws) что команда visudo решает эту проблему — достаточно :wq
      Из archive — как-то не совсем верно

      Согласен, попробую другие варианты.
      про git… версию 1.7.12

      1.7.1 меня устроил на 146%


      1. grossws
        06.03.2017 00:36

        Спасибо. Впрочем я заметил (спасибо grossws) что команда visudo решает эту проблему — достаточно :wq

        visudo использует тот редактор, который указан у вас в переменной EDITOR, как я уже писал выше. Т. е. EDITOR=nano visudo и вам не нужно даже знать про :wq. Не все сборки примут произвольный редактор (через переменную окружения), но в большинстве дистрибутивов это разрешено.


        1. biblelamp
          06.03.2017 07:12

          EDITOR=nano visudo и вам не нужно даже знать про :wq

          Да, понял. Впрочем, в свежеустановленном CentOS 6 nano нет, а vi и команды типа :wq меня не смущают.
          Ещё раз спасибо, почерпнул много полезного из ваших комментариев. Как только карма станет приемлемой — отредактирую свою заметку.


  1. MasMaX
    06.03.2017 11:29

    Для доступа к sudo существует группа wheel. Просто добавляешь юзера в эту группу:

    usermod -a -G wheel [username]
    


    Строка " %wheel ALL=(ALL) ALL" в sudoers файле насколько я помню по-умолчанию включена… Если нет то надо ее раскоментить.


    1. biblelamp
      06.03.2017 11:47

      Просто добавляешь юзера в эту группу

      Строка %wheel по умолчанию закомментирована. Получается всё равно надо редактировать sudoers


      1. grossws
        06.03.2017 13:16

        Не ссорьтесь, есть ли она, закомментирована или нет — зависит от мейтейнеров конкретного дистрибутива. В ванильной сборке, вероятнее всего, будет закомментирована.


        1. biblelamp
          06.03.2017 14:08

          Именно так. Специально проверил на своём ноуте:

          ## Same thing without a password
          # %wheel ALL=(ALL) NOPASSWD: ALL