как запустить программное обеспечение в Linux, не устанавливая его

В Вашем комментарии к ответу @tink Вы хотите отдельные файлы в .gz файлы:

mysqldump --opt --databases $dbname1 --host=$dbhost1 --user=$dbuser1 --password=$dbpass1 > '/var/tmp/$dbhost1.$dbname1.sql' ; mysqldump --opt --databases $dbname2 --host=$dbhost1 --user=$dbuser1 --password=$dbpass1 > '/var/tmp/$dbhost1.$dbname2.sql' ; mysqldump --opt --databases $dbname3 --host=$dbhost2 --user=$dbuser2 --password=$dbpass2 > '/var/tmp/$dbhost1.$dbname3.sql' ; mysqldump --opt --databases $dbname4 --host=$dbhost2 --user=$dbuser2 --password=$dbpass2 > '/var/tmp/$dbhost1.$dbname4.sql' ; cd /var/tmp; tar cvzf backupfile.sql.gz \$dbhost1.\$dbname*.sql
  • Как альтернатива для выходного имени файла я использовал бы backupfile.sql.tgz таким образом, это более ясно опытным пользователям, это - файл tar, который сжат
  • Можно добавить rm \$dbhost1.\$dbname*.sql избавиться от промежуточных файлов
  • Вы могли использовать zip как альтернатива сжатому tar.
  • Я не уверен, почему Вы хотите это как остроту. Если Вы просто хотите дать одну команду, необходимо поместить строки в сценарий и экс-милый оттуда.
  • С 'нормальными' инструментами, используемыми для чего-то вроде этого (tar, zip), я не знаю о хитрости промежуточных файлов.

Приложение

Если Вы действительно не хотите промежуточные файлы (и предположение, что вывод умещается в памяти), Вы могли попробовать что-то как следующая программа Python. Можно записать это как остроту ( python -c "from subprocess import checkout; from cStr....), но я действительно не рекомендую это.

from subprocess import check_output
from cStringIO import StringIO
import tarfile

outputdata = [
    ('$dbhost1.$dbname1.sql', '$dbname1'),
    ('$dbhost1.$dbname2.sql', '$dbname2'),
    ('$dbhost1.$dbname3.sql', '$dbname3'),
    ('$dbhost1.$dbname4.sql', '$dbname4'),
]

with tarfile.open('/var/tmp/backupfile.sql.tgz', 'w:gz') as tgz:
    for outname, db in outputdata:
        cmd = ['mysqldump', '--opt', '--databases']
        cmd.append(db)
        cmd.extend(['--host=$dbhost1', '--user=$dbuser1', '--password=$dbpass1'])
        out = check_output(cmd)
        buf = StringIO(out)
        buf.seek(0)
        tarinfo = tarfile.TarInfo(name=outname)
        tarinfo.size = len(out)
        tgz.addfile(tarinfo=tarinfo, fileobj=buf)

В зависимости от того, насколько регулярный Ваша база данных и 'выходные' имена - Вы, может далее изменить к лучшему это.

4
17.01.2015, 01:15
1 ответ

Я думал, что могу скачать архив, распаковать его и просто запустить двоичный файл, но не знаю, как это сделать.

Иногда вы видите приложение в Unix / Linux, где кто-то приложил усилия, чтобы сделать его портативным (в смысле USB-накопителя), но это необычно в мире Unix.

В этом конкретном случае RStudio находится на расстоянии миль от возможности переносимости в Linux. Версия RPM устанавливает 1378 файлов, многие из которых действительно необходимы для работы программы.

есть ли способ установить его без суетливости и без доступа sudo?

Бинарный пакет приложения Unix часто привязан к макету файла, выбранному во время его создания из исходных текстов. Эти варианты могут быть встроены в пакет на уровне, который трудно изменить.

Это не всегда так. Иногда вы можете указать диспетчеру пакетов установить приложение где-нибудь еще, но это не относится к RPM RStudio:

$ rpm -ivh --prefix=$HOME rstudio-0.98.1091-x86_64.rpm
error: package rstudio is not relocatable

Стандартный способ справиться с этим - собрать программное обеспечение из исходного кода, используя ваш ] предпочтения для расположения файлов, но я только что попробовал, и текущая версия RStudio имеет по крайней мере одну зависимость, которую вы не можете легко удовлетворить в RHEL / CentOS 6: Qt 4.8.0 или выше . (CentOS 6 достаточно стара, чтобы по-прежнему поставляться с Qt 4.6.2.) Qt - это достаточно важная библиотека, поэтому иметь две версии на одном устройстве становится сложно.

Даже если бы это было не так, у вас, вероятно, также нет одной из других зависимостей сборки на удаленной машине, например библиотек разработки R или CMake .

Я должен упомянуть, что под «запуском напрямую» я подразумеваю использование X11 для пересылки мне графического интерфейса.

Если у вас есть локальный компьютер, на котором можно запускать X, почему вы просто не запускаете на нем RStudio? RStudio - не самый модный графический интерфейс в мире, но он будет работать намного лучше локально, чем пересылка через X.

Если проблема просто в том, что ваши данные хранятся на удаленной машине, с легко справиться . (PDF, 35pp, 307 kiB)

Я заметил, что там написано Redhat 7+. Связано ли это как-то с тем, что у меня CentOS6.6?

Это означает, что страница редактируется кем-то, кто действительно не понимает Linux типа Red Hat. Скорее всего, мы имеем дело с кем-то, кто большую часть времени проводит на OS X или Ubuntu. На странице есть пара явных ошибок, которые часто допускают такие люди:

  1. Не существует такой вещи, как «RedHat 7». Еще в конце пузыря доткомов была вещь под названием Red Hat Linux 7 , но здесь они имеют в виду не это. На самом деле они имеют в виду Red Hat Enterprise Linux 7, часто сокращенно RHEL 7. Эти две ОС очень разные.

  2. Они также перечисляют Fedora 13, которая была одновременно с RHEL 6, а не 7. Либо они фактически требуют Fedora 19+ ( база, из которой разветвляется RHEL 7 ), либо они не должны требовать RHEL 7+, а вместо 6+.

    Поскольку официальные RPM-пакеты устанавливаются и работают на моей тестовой виртуальной машине CentOS 6, я предполагаю, что последний случай здесь верен. Однако справедливое предупреждение: я только завел его, я не пытался заставить его делать что-нибудь полезное.Когда я запускаю RStudio, я следую своему собственному совету: я запускаю его на своем локальном настольном компьютере, а не на удаленном компьютере Linux через X.

    (Если вам интересно, как этот отчет об успехе согласуется с моим предостережением относительно Qt 4.8, приведенным выше. +, решение состоит в том, что RStudio RPM включает частную копию Qt 4.8.0. Очевидно, что их система сборки не является стандартной коробкой RHEL 6 / Fedora 13.)

8
27.01.2020, 20:49

Теги

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