Вопрос или проблема
Я новичок здесь. Я управляю рабочей станцией Ubuntu, используемой несколькими людьми. У каждого пользователя есть собственная учетная запись, и они сделали все необходимое, чтобы использовать машину (установили библиотеки, инструменты и так далее). Теперь мне нужно установить очень сложный инструмент (большую коллекцию программ на C и Fortran), множество зависимостей и библиотек, которые не должны изменяться в будущем, чтобы избежать проблем.
Если я создам нового пользователя и установлю свой код в этом пользователе, есть ли способ сделать этот код видимым и выполняемым для других пользователей? В основном, мне нужно, чтобы зависимости были заморожены в каком-то месте, до которого никто не может дотянутся.
Как требуется от @Bodo:
Сначала мне нужно установить следующие зависимости с помощью менеджера пакетов: sudo apt-get install openmpi-bin libmpich-dev libopenmpi-dev gcc g++ gfortran subversion libcurl4-openssl-dev wget make m4 git liburi-perl libxml2-dev
.
Затем я должен установить zlib
и hdf5
, NetCDF-c
и NetCDF-Fortran
(в этом порядке). Это предварительные условия, и я хочу, чтобы они были недоступны для других процессов, так как установка NetCDF-c
и NetCDF-Fortran
должна выполняться в определенном порядке, компилятор должен оставаться тем же, а опции должны быть одинаковыми для обеих компиляций. Таким образом, я предпочитаю скачать их куда-то в домашний каталог, скомпилировать их там и оставить их там, а не устанавливать в папку /lib, к которой также может получить доступ установка python после этого.
Наконец, мне нужно установить XIOS-trunk
и XIOS-2.5
, а также две океанические модели NEMO
и CROCO
, которые будут напрямую зависеть от Xios, Hdf5 и версий netcdf-C и Fortran в своем makefile. Ни один из этих 4 кодов не поставляется с менеджером пакетов и не имеет графического интерфейса установки. Это папки исходных файлов, которые нужно скомпилировать. Эти 4 программы я хочу иметь возможность запускать и к ним получать доступ от других пользователей, а не первый список зависимостей.
@terdon У меня есть доступ root
Для всего, что доступно в виде пакета в ваших репозиториях, просто установите с помощью
sudo apt install package1 package2 ... packageN
Все пользователи получат доступ к тому, что устанавливают пакеты, и не смогут изменять их без доступа root.
Если вам также нужно установить специфичные двоичные файлы, детали зависят от того, как они распространяются. Если они поставляются в виде предкомпилированных двоичных файлов и просто нуждаются в копировании куда-то, тогда скопируйте их в /usr/local/bin
. Вы можете использовать любую директорию, которая находится в переменной PATH
вашего пользователя, но /usr/local/bin
– это нормальное расположение для таких двоичных файлов. См. Иерархию файловой системы Linux:
Иерархия /usr/local предназначена для использования системным администратором при установке программного обеспечения локально. Она должна быть защищенной от перезаписи при обновлении системного программного обеспечения. Она может использоваться для программ и данных, которые могут быть общими среди группы хостов, но не найдены в /usr.
Локально установленное программное обеспечение должно располагаться в /usr/local, а не в /usr, если только оно не устанавливается для замены или обновления программного обеспечения в /usr.
Если вы загружаете исходный код и компилируете его самостоятельно, он, вероятно, будет поставляться со сценарием установки. Обычно процедура такова:
-
Извлеките файлы из исходного архива. Что-то вроде
tar xvzf someDomeCode.tar.gz
-
Перейдите в директорию, созданную вышеупомянутой командой, где будут находиться файлы, и выполните
./configure
. -
Запустите
make
для компиляции. -
Запустите
sudo make install
для установки различных компонентов в нужное место (скриптconfigure
выше должен был определить, какое место является правильным).
Теперь, снова, инструменты должны быть доступны всем пользователям.
Я предполагаю, что для zlib
и hdf5
вы хотите установить их так, чтобы другие инструменты могли быть скомпилированы с их использованием, поэтому вам нужны версии пакетов -dev
:
sudo apt install zlib1g-dev libhdf5-dev
Ответ или решение
Установка программного обеспечения для общего доступа на Ubuntu
Управление рабочей станцией с несколькими пользователями в Ubuntu может быть сложной задачей, особенно когда требуется установить специализированные инструменты и библиотеки, которые должны оставаться неизменными и доступны для всех пользователей. В данной статье мы рассмотрим, как установить сложный набор программ и библиотек, чтобы переместить программное обеспечение из учетной записи одного пользователя в доступное пространство для других пользователей.
Шаг 1: Установка зависимостей через пакетный менеджер
Первое, что необходимо сделать, это установить все зависимости, используя команду sudo apt-get
. Поскольку у вас есть root-доступ, вы можете без проблем установить необходимые библиотеки:
sudo apt-get install openmpi-bin libmpich-dev libopenmpi-dev gcc g++ gfortran subversion libcurl4-openssl-dev wget make m4 git liburi-perl libxml2-dev
Эта команда устанавливает все пакеты, доступные в репозиториях, и они будут доступны для всех пользователей системы.
Шаг 2: Установка библиотек zlib и hdf5
Далее, нам требуется установить библиотеки zlib
и hdf5
. Мы будем использовать версии с суффиксом -dev
, так как они содержат заголовочные файлы, необходимые для компиляции других программ:
sudo apt-get install zlib1g-dev libhdf5-dev
Эти библиотеки будут находиться в стандартных репозиториях и смогут использоваться другими пользователями без каких-либо проблем.
Шаг 3: Установка NetCDF
Теперь настало время установить NetCDF-c
и NetCDF-Fortran
в правильном порядке. Я рекомендую вам загрузить исходный код и установить эти библиотеки в специальное место, чтобы они оставались неизменными и доступны для других пользователей. Например, создайте директорию в /opt
для установки:
sudo mkdir /opt/netcdf
sudo chown -R $USER:$USER /opt/netcdf
Скачать и установить NetCDF-c
:
- Загрузите исходный код с официального сайта NetCDF.
- Распакуйте архив:
tar xvzf netcdf-c-<версия>.tar.gz
- Перейдите в директорию:
cd netcdf-c-<версия>
- Выполните конфигурацию:
./configure --prefix=/opt/netcdf
- Соберите и установите:
make sudo make install
Теперь выполните аналогичные шаги для установки NetCDF-Fortran
, убедившись, что вы указываете ту же папку /opt/netcdf
как префикс.
Шаг 4: Установка XIOS и океанских моделей
Создайте аналогичную структуру для установок XIOS-trunk
, XIOS-2.5
, NEMO
, и CROCO
в директории /opt
, следуя той же процедуре:
- Скачайте исходный код и распакуйте архивы.
- Перейдите в каждую директорию и выполните необходимые команды
./configure
,make
,sudo make install
, указав--prefix=/opt/xios
и--prefix=/opt/nemo
соответственно.
Шаг 5: Настройка окружения
Чтобы обеспечить доступность скомпилированных программ для всех пользователей:
-
Добавьте директории установки в системные переменные окружения:
echo "export PATH=/opt/netcdf/bin:$PATH" | sudo tee -a /etc/profile echo "export LD_LIBRARY_PATH=/opt/netcdf/lib:$LD_LIBRARY_PATH" | sudo tee -a /etc/profile
-
Включите изменения:
source /etc/profile
Заключение
Следуя этим шагам, вы сможете установить сложные инструменты и их зависимости на вашей рабочей станции, что позволит всем пользователям иметь доступ к ним, сохранив при этом стабильность и неизменность установленных библиотек. Профессионально управляемая установка программного обеспечения значительно улучшает рабочий процесс в многопользовательской среде, минимизируя вероятность конфликтов и повышая производительность.