grunt rpm создать символическую ссылку

У меня есть этот файл grunt, который создает для меня пакет rpm, как я могу создать такую ​​символическую ссылку для примера:

ссылка("/usr/local/bin/tams-cli", "/opt/tams-cli/tams-cli.js")

Не удалось найти это, вот мой исходный код.

grunt.initConfig({
    pkg: grunt.file.readJSON('./package.json'),
    easy_rpm: {
      options: {
        buildArch,
        rpmDestination: './built/',
      },
      release: {
        files: [
          {
            src: ['node_modules/**/*',
              'js/**/*',
              'cfg/*',
              'package.json',
              'readme.md',
            ],
            dest: '/opt/tams-cli',
          },
          {
            src: 'tams-cli.js',
            dest: '/opt/tams-cli',
            mode: 0550,
          }
        ],
        excludeFiles: [
          'tmp-*',
          './built',
        ],
      },
    },

person JonB    schedule 12.04.2018    source источник
comment
Вам нужно создать только одну символическую ссылку или несколько? Должны ли символические ссылки создаваться до запуска вашей easy_rpm задачи или после?   -  person RobC    schedule 13.04.2018
comment
@RobC Это всего лишь одна символическая ссылка, у меня действительно нет никаких предпочтений, создавать ее до или после, просто так проще!   -  person JonB    schedule 13.04.2018


Ответы (1)


Чтобы создать символическую ссылку после установки пакета rpm, используйте параметр postInstallScript. в вашей easy_rpm задаче. Описание для postInstallScript гласит:

postInstallScript

Array<String>

Массив команд, которые нужно выполнить после установки. Каждый элемент массива представляет собой команду.

В фрагменте Gruntfile.js ниже используется команда ln для создания символической ссылки с использованием двух дополнительных параметров:

  • -s сделать символическую ссылку вместо жесткой.
  • -f для удаления существующих целевых файлов, если они уже существуют.

Gruntfile.js

grunt.initConfig({
  // ...
  easy_rpm: {
    options: {
      postInstallScript: ['ln -s -f /opt/tams-cli/tams-cli.js /usr/local/bin/tams-cli'],
      // ..
    },
    // ...
  },
  // ...
});
person RobC    schedule 13.04.2018
comment
спасибо за отличный ответ, я тестирую решение А. Я получил следующую ошибку: Files: [no src] -> /usr/local/bin/tams-cl Options: overwrite=false, force=false Warning: Path must be a string. Received undefined Use --force to continue. Должен ли этот путь существовать на моей локальной машине для работы? Это конфигурация для удаленной системы, которая имеет другую структуру папок, чем моя локальная машина. - person JonB; 13.04.2018
comment
Мой желаемый результат; когда пакет rpm установлен на удаленной машине, создается указанная символическая ссылка. Поэтому я имитирую эти пути, но их нет на моей локальной машине. Возможно, мы неправильно понимаем, чего я пытаюсь достичь? - person JonB; 13.04.2018
comment
postInstallScript: ['ln -s /opt/tams-cli/tams-cli.js /usr/local/bin/tams-cli'] это помогло, очень ценю вашу помощь и терпение, извините, что недостаточно ясно объяснил проблему. - person JonB; 13.04.2018
comment
Не беспокойтесь - вместе мы в конечном итоге получили необходимое решение. Возможно, мне не хватило кофе ;) - person RobC; 13.04.2018
comment
Ладно, сегодня пятница, так что предлагаю пропустить кофе и сразу перейти к пиву ;) - person JonB; 13.04.2018