{"action":"created","issue":{"url":"https://api.github.com/repos/elastic/logstash/issues/4651","repository_url":"https://api.github.com/repos/elastic/logstash","labels_url":"https://api.github.com/repos/elastic/logstash/issues/4651/labels{/name}","comments_url":"https://api.github.com/repos/elastic/logstash/issues/4651/comments","events_url":"https://api.github.com/repos/elastic/logstash/issues/4651/events","html_url":"https://github.com/elastic/logstash/issues/4651","id":132374102,"number":4651,"title":"Clarify offline plugin instructions from plugin command","user":{"login":"ppf2","id":7216393,"avatar_url":"https://avatars.githubusercontent.com/u/7216393?v=3","gravatar_id":"","url":"https://api.github.com/users/ppf2","html_url":"https://github.com/ppf2","followers_url":"https://api.github.com/users/ppf2/followers","following_url":"https://api.github.com/users/ppf2/following{/other_user}","gists_url":"https://api.github.com/users/ppf2/gists{/gist_id}","starred_url":"https://api.github.com/users/ppf2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ppf2/subscriptions","organizations_url":"https://api.github.com/users/ppf2/orgs","repos_url":"https://api.github.com/users/ppf2/repos","events_url":"https://api.github.com/users/ppf2/events{/privacy}","received_events_url":"https://api.github.com/users/ppf2/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/elastic/logstash/labels/bug","name":"bug","color":"e11d21"},{"url":"https://api.github.com/repos/elastic/logstash/labels/plugin%20manager","name":"plugin manager","color":"bfd4f2"}],"state":"open","locked":false,"assignee":{"login":"purbon","id":68540,"avatar_url":"https://avatars.githubusercontent.com/u/68540?v=3","gravatar_id":"","url":"https://api.github.com/users/purbon","html_url":"https://github.com/purbon","followers_url":"https://api.github.com/users/purbon/followers","following_url":"https://api.github.com/users/purbon/following{/other_user}","gists_url":"https://api.github.com/users/purbon/gists{/gist_id}","starred_url":"https://api.github.com/users/purbon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/purbon/subscriptions","organizations_url":"https://api.github.com/users/purbon/orgs","repos_url":"https://api.github.com/users/purbon/repos","events_url":"https://api.github.com/users/purbon/events{/privacy}","received_events_url":"https://api.github.com/users/purbon/received_events","type":"User","site_admin":false},"milestone":null,"comments":9,"created_at":"2016-02-09T09:51:06Z","updated_at":"2016-04-19T18:33:52Z","closed_at":null,"body":"To reproduce, create 2 separate LS 2.1 directories, one for the logstash-2.1.0_source (with internet access to prepare the offline package), the other logstash-2.1.0_target (to unpack the offline package).\r\n\r\nFirst prepare the offline package in logstash-2.1.0_source:\r\n\r\n```\r\n./plugin update logstash-input-kafka \r\n./plugin update logstash-output-elaticsearch \r\n./plugin pack \r\n```\r\n\r\nIn the logstash-2.1.0_target location:\r\n\r\n```\r\n./plugin list --verbose |grep kafka\r\nlogstash-input-kafka (2.0.2)\r\nlogstash-output-kafka (2.0.1)\r\n```\r\n```\r\n./plugin unpack ../../logstash-2.1.0_source/plugins_package.tar.gz \r\nUnpacking ../../logstash-2.1.0_source/plugins_package.tar.gz\r\nUnpacked at /Users/test_user/Downloads/testing/logstash-2.1.0_target/vendor/cache\r\nThe unpacked plugins can now be installed in local-only mode using bin/plugin install --local [plugin name]\r\n```\r\n\r\nSee how it tells you to use the `install --local plugin_name` option for the plugin command.\r\n\r\nIf you try this (now with internet access disabled), you will see that the plugin install using the local cache will fail:\r\n\r\n```\r\n./plugin install --local logstash-input-kafka\r\nInstalling logstash-input-kafka\r\nError Bundler::HTTPError, retrying 1/10\r\nCould not fetch specs from https://rubygems.org/\r\nError Bundler::HTTPError, retrying 2/10\r\nCould not fetch specs from https://rubygems.org/\r\nError Bundler::HTTPError, retrying 3/10\r\nCould not fetch specs from https://rubygems.org/\r\nError Bundler::HTTPError, retrying 4/10\r\nCould not fetch specs from https://rubygems.org/\r\nError Bundler::HTTPError, retrying 5/10\r\nCould not fetch specs from https://rubygems.org/\r\nError Bundler::HTTPError, retrying 6/10\r\nCould not fetch specs from https://rubygems.org/\r\nError Bundler::HTTPError, retrying 7/10\r\nCould not fetch specs from https://rubygems.org/\r\nError Bundler::HTTPError, retrying 8/10\r\nCould not fetch specs from https://rubygems.org/\r\nError Bundler::HTTPError, retrying 9/10\r\nCould not fetch specs from https://rubygems.org/\r\nError Bundler::HTTPError, retrying 10/10\r\nCould not fetch specs from https://rubygems.org/\r\nToo many retries, aborting, caused by Bundler::HTTPError\r\nERROR: Installation Aborted, message: Could not fetch specs from https://rubygems.org/\r\n```\r\n\r\nSame thing if you use the update command:\r\n\r\n```\r\n./plugin update --local logstash-input-kafka\r\nUpdating logstash-input-kafka\r\nError Bundler::HTTPError, retrying 1/10\r\nCould not fetch specs from https://rubygems.org/\r\nError Bundler::HTTPError, retrying 2/10\r\nCould not fetch specs from https://rubygems.org/\r\n```\r\n\r\nThe following seems to work as a workaround by using the `update` action *and* just `--local` to update all packages:\r\n\r\n```\r\n./plugin update --local\r\nUpdating logstash-codec-collectd, logstash-codec-dots, logstash-codec-edn, logstash-codec-edn_lines, logstash-codec-es_bulk, logstash-codec-fluent, logstash-codec-graphite, logstash-codec-json, logstash-codec-json_lines, logstash-codec-line, logstash-codec-msgpack, logstash-codec-multiline, logstash-codec-netflow, logstash-codec-oldlogstashjson, logstash-codec-plain, logstash-codec-rubydebug, logstash-filter-anonymize, logstash-filter-checksum, logstash-filter-clone, logstash-filter-csv, logstash-filter-date, logstash-filter-dns, logstash-filter-drop, logstash-filter-fingerprint, logstash-filter-geoip, logstash-filter-grok, logstash-filter-json, logstash-filter-kv, logstash-filter-metrics, logstash-filter-multiline, logstash-filter-mutate, logstash-filter-ruby, logstash-filter-sleep, logstash-filter-split, logstash-filter-syslog_pri, logstash-filter-throttle, logstash-filter-urldecode, logstash-filter-useragent, logstash-filter-uuid, logstash-filter-xml, logstash-input-beats, logstash-input-couchdb_changes, logstash-input-elasticsearch, logstash-input-eventlog, logstash-input-exec, logstash-input-file, logstash-input-ganglia, logstash-input-gelf, logstash-input-generator, logstash-input-graphite, logstash-input-heartbeat, logstash-input-http, logstash-input-imap, logstash-input-irc, logstash-input-jdbc, logstash-input-kafka, logstash-input-log4j, logstash-input-lumberjack, logstash-input-pipe, logstash-input-rabbitmq, logstash-input-redis, logstash-input-s3, logstash-input-snmptrap, logstash-input-sqs, logstash-input-stdin, logstash-input-syslog, logstash-input-tcp, logstash-input-twitter, logstash-input-udp, logstash-input-unix, logstash-input-xmpp, logstash-input-zeromq, logstash-output-cloudwatch, logstash-output-csv, logstash-output-elasticsearch, logstash-output-email, logstash-output-exec, logstash-output-file, logstash-output-ganglia, logstash-output-gelf, logstash-output-graphite, logstash-output-hipchat, logstash-output-http, logstash-output-irc, logstash-output-juggernaut, logstash-output-kafka, logstash-output-lumberjack, logstash-output-nagios, logstash-output-nagios_nsca, logstash-output-null, logstash-output-opentsdb, logstash-output-pagerduty, logstash-output-pipe, logstash-output-rabbitmq, logstash-output-redis, logstash-output-s3, logstash-output-sns, logstash-output-sqs, logstash-output-statsd, logstash-output-stdout, logstash-output-tcp, logstash-output-udp, logstash-output-xmpp, logstash-output-zeromq\r\nUpdated logstash-output-elasticsearch 2.1.4 to 2.3.0\r\n```\r\n\r\n```\r\n./plugin list --verbose |grep kafka\r\nlogstash-input-kafka (2.0.4)\r\nlogstash-output-kafka (2.0.1)\r\n```\r\n\r\nThere are 2 improvements here we can make to the plugins command:\r\n\r\n* `The unpacked plugins can now be installed in local-only mode using bin/plugin install --local [plugin name]` is a misleading message since it doesn't actually work\r\n* If you look at the output of the workaround `./plugin update --local`, you will see that it only provides an indication that it updated the ES output, but for some reason, no indication that it updated the kafka input (the plugin list command later on confirms it though).\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/elastic/logstash/issues/comments/212060495","html_url":"https://github.com/elastic/logstash/issues/4651#issuecomment-212060495","issue_url":"https://api.github.com/repos/elastic/logstash/issues/4651","id":212060495,"user":{"login":"ppf2","id":7216393,"avatar_url":"https://avatars.githubusercontent.com/u/7216393?v=3","gravatar_id":"","url":"https://api.github.com/users/ppf2","html_url":"https://github.com/ppf2","followers_url":"https://api.github.com/users/ppf2/followers","following_url":"https://api.github.com/users/ppf2/following{/other_user}","gists_url":"https://api.github.com/users/ppf2/gists{/gist_id}","starred_url":"https://api.github.com/users/ppf2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ppf2/subscriptions","organizations_url":"https://api.github.com/users/ppf2/orgs","repos_url":"https://api.github.com/users/ppf2/repos","events_url":"https://api.github.com/users/ppf2/events{/privacy}","received_events_url":"https://api.github.com/users/ppf2/received_events","type":"User","site_admin":false},"created_at":"2016-04-19T18:33:52Z","updated_at":"2016-04-19T18:33:52Z","body":"Can I get a clarification on this one:\r\n\r\n1.  Is the issue addressed in 2.3.1+?\r\n2.  If so, will there be an update to the documentation on the extra steps required to perform an offline update of a plugin (i.e. https://github.com/elastic/logstash/issues/4651#issuecomment-194223087)?\r\n\r\nThanks,\r\nPius"}}