Как установить tar-файл «глобально»? [закрыто]

Вероятно, там есть установка пароля root, обычно вы должны запустить mysql_secure_installation от имени root, который запросит у вас пароль mysql root и там просто нажмите enter.

В вашем случае похоже, что установлен пароль root, вы можете изменить его, используя

sudo mysqld_safe --user=mysql --pid-file=/var/run/mysql/mysqld.pid --socket=/var/run/mysql/mysql. sock --datadir=/var/lib/mysql --skip-grant-tables

Это позволит вам запустить mysql и вы сможете mysql -u root войти в mysql, после чего нужно будет обновить пароль root.

mysql> use mysql; 
mysql> update user set password=PASSWORD("yournewrootpasshere") where User='root';
mysql> flush privileges;
mysql> quit

--skip-grant-tables опция является ключевой, при использовании которой не будет запрашиваться пароль.

После этого, если вы перезапустите mysql, он нормально запустится, и вы даже сможете запустить mysql_secure_installation снова с новым паролем root, если захотите.

Поскольку это свежая установка, вы также можете удалить пакет mysql и установить его заново. Не забудьте также удалить базу данных.

5
16.12.2018, 06:27
2 ответа

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

Переменная среды $PATH

Под «непосредственно доступной в командной строке» я предполагаю, что вы имеете в виду, что вы можете запустить ее как name, вместо того, чтобы вводить что-то вроде /path/to/name, например /home/galahad/bin/nameили ./name.

Вашапеременная окружения $PATHсодержит список имен каталогов, разделенных :. Когда вы запускаете в своей оболочке команду, содержащую символ /, она интерпретируется как точное местоположение и имя запускаемого исполняемого файла. Но когда вы запускаете команду, которая несодержит /, ваша оболочка ищет в каталогах в $PATHисполняемые файлы с этим именем и запускает первый из них. он находит. (Он также может помнить, где находятся исполняемые файлы, которые вы запускали ранее. Так что на практике ему не нужно искать их каждый раз.)

Вот почему ./nameявляется распространенным способом для запуска исполняемого файла с именем name, расположенного в текущем каталоге. Запуск nameвместо этого будет искать каталоги в $PATH.

Если вы запустите echo "$PATH", вы увидите что-то вроде этого, хотя это может быть и не совсем так:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Каталоги в $PATHне имеют называться bin, но это обычное дело.

Настройка сборки

Если у вас есть исходный код, скомпилированный запуском ./configureи make, для его установки обычно используется make install(или sudo make install). Это копирует файлы из каталога сборки в место установки. Когда вещь, которую вы устанавливаете, предоставляет исполняемые команды, эти исполняемые файлы обычно копируются в каталог, который находится в $PATHили который вы должны добавить в $PATH.

Хотя для создания и установки программного обеспечения часто достаточно просто запустить ./configure, make, иногда make checkили make test. , а затем make installили sudo make install, иногда вам может потребоваться передать параметры сценарию configureдля настройки сборки. В частности, , как говорит pfnuesel , именно так вы настраиваете , где будет установлено программное обеспечение. Несмотря на то, что шаг make installфактически устанавливает программное обеспечение, места, где все будет установлено, обычно определяются на шаге ./configure.

Наиболее распространенный вариант для этого — --prefix. Префикс по умолчанию, когда вы не указываете configure, что использовать, обычно /usr/local. (Иногда исходный код программы или библиотеки по умолчанию использует какой-либо другой префикс. К счастью, это бывает редко.)

Итак, ./configureобычно эквивалентно ./configure --prefix=/usr. /локальный. Чтобы установить программное обеспечение в свой домашний каталог, вы можете использовать ./configure --prefix=/home/galahad(если /home/galahadявляется вашим домашним каталогом) или --prefix="$HOME". Тогда, конечно, вы все равно должны собрать и установить программное обеспечение с помощью make. Я должен сказать, что не все программы, которые распространяются в виде исходного кода, построены таким образом. Вы всегда должны искать документацию внутри извлеченного архива исходного кода.

Что означает --prefix

Когда вы запускаете ./configure --prefix= каталог, вы указываете, что программное обеспечение должно быть установлено вкаталогкаталог. Но это редко, если вообще когда-либо, помещает свободные файлы в каталог. Вместо этого он помещает файлы, которые служат для разных целей, в разные подкаталоги каталога. Если эти подкаталоги не существуют, он их создает.

Исполняемые файлы обычно находятся в каталоге /bin, хотя они могут находиться в каталоге /sbin, если они обычно используются для системного администрирования, или они могут находиться в (реже в наши дни) в каталоге /games, если это игры. Библиотеки находятся в каталоге /libили в другом каталоге с аналогичным названием, напримеркаталог/lib32. Файлы заголовков находятся в каталоге/include. Страницы руководства находятся в каталоге/man. Файлы данных, используемые программным обеспечением, находятся в каталоге/share.

Вот что означает, чтокаталогявляется префиксом .Это родительский каталог, содержащий места, в которые будут установлены различные файлы.Таким образом, он отображается как префиксв абсолютных путяхбольшинства файлов и каталогов, созданных при запуске make installили sudo make install.

Есть несколько исключений. Общесистемные файлы конфигурации, которые иногда создаются при установке программного обеспечения, которое будет их использовать, хотя и не всегда, обычно находятся в /etc. Обычно на это не влияет указание другого префикса. Даже если вы устанавливаете много программного обеспечения в /usr/local, оно все равно в основном будет использовать /etc, и ваш каталог /usr/local/etcбудет вероятно, не существует, пуст или содержит очень мало файлов.

Во многих системах вы можете найти дополнительную информацию о типовой структуре файловой системы, запустив man hier. Если вы используете систему GNU/Linux, вас может заинтересовать Стандарт иерархии файловой системы.

Где ваша система устанавливает программное обеспечение

Большинство программ, являющихся частью вашей системы, включая программы, устанавливаемые менеджерами пакетов в подавляющем большинстве операционных систем GNU/Linux (GoboLinuxявляется одним из исключений) и некоторые другие Unix-подобные системы устанавливаются с префиксом /usr. Вы редко должны передавать этот префикс в ./configure, потому что обычно вы хотите избежать конфликтов с системным программным обеспечением.

/usrразрешено находиться в сетевой папке или разделе, который еще не смонтирован в самом начале процесса загрузки.Программное обеспечение, которое должно быть доступно в это время, обычно устанавливается в /. Вот почему оба /usr/binи /binсуществуют и почему shобычно /bin/sh.

Управление пакетами

Большинство менеджеров пакетов поддерживают установку двоичных файлов (хотя есть и исключения). Обычно, когда вы устанавливаете программное обеспечение в системе GNU/Linux с помощью менеджера пакетов, вы устанавливаете бинарные пакеты. В этом случае менеджер пакетов сам ничего не компилирует. Однако установка по-прежнему включает в себя копирование или извлечение файлов в места в файловой системе.

Вот что я имею в виду, когда говорю, что ваш менеджер пакетов устанавливает большинство вещей с префиксом /usr. Я не имею в виду, что он обязательно запускает ./configure --prefix=/usrили любую команду ./configure.

В разных операционных системах используются разные менеджеры пакетов. Если вы используете такой дистрибутив, как Debian или Ubuntu, предназначенный для использования таких утилит, как dpkg, apt-getи aptitude, вы следует необычнопытаться установить программное обеспечение с rpm, yumи dnf.

Но основной принцип одинаков для всех менеджеров пакетов. Когда менеджер пакетов устанавливает команду, она обычно помещается в каталог, который, как ожидается, должен находиться в переменных среды пользователя $PATH.В системах GNU/Linux менеджер пакетов обычно управляет всейсистемой — за исключением того, что вы устанавливаете сами другими способами — и, таким образом, устанавливает большую часть программного обеспечения с префиксом /usr, тем самым помещая большинство исполняемых команд в /usr/bin. (Конечно, подобно запуску make installили sudo make install, менеджеры пакетов обычно также устанавливают другие файлы в другие места.)

8
27.01.2020, 20:33

Если программа, которую вы хотите установить, соответствует рекомендациям, вы можете установить ее с помощью

./configure
make
make install

./configureпроверяет, соответствует ли ваша система всем требованиям, и настраивает параметры установки. makeвсе компилирует, а make installкопирует все нужные файлы в нужные места. Вы не хотите делать последний шаг вручную, потому что будет довольно утомительно размещать все библиотеки, справочные страницы и прочее в нужном месте.

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

./configure --prefix="$HOME"/somefolder

make installзатем установит его в эту папку. Однако обычно вам это не понадобится.

5
27.01.2020, 20:33

Теги

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