Skip to content
Snippets Groups Projects
Commit 018efe13 authored by iaibrys's avatar iaibrys
Browse files

Merge remote-tracking branch 'origin/release-2019.0'

* origin/release-2019.0: (44 commits)
  CI_COMMIT_REF_SLUG -> CI_COMMIT_REF_NAME
  Add 2019 gitlab clause
  Move to container versions being the name of the branch
  Add gitlab ci
  Added new gplots deps
  Ensure /cache required by spelling and user_files required by filestore are present.  Ensure filestore output is logged.
  Fixed dockerhub link
  Delete qpdf tmp files
  Works by using image repos
  Added git commit to launchpad repo
  Fixed typo
  git checkout
  Rearrange Dockerfile
  Added latexmk
  Added missing Gruntfile for document-updater
  Downgrade to NodeJS 6
  Ubuntu 18.04 with std latex
  Update config1.sh
  Update config1.sh
  Use TZ Dockerfile argument to set the time zone.  For https://github.com/dtu-compute/dtu-enote/issues/62
  ...

# Conflicts:
#	.gitlab-ci.yml
parents eab0c15e 5f59ec8a
Branches
No related tags found
No related merge requests found
Showing
with 1338 additions and 2 deletions
......@@ -8,8 +8,8 @@ stages:
variables:
DOCKER_DRIVER: overlay2
CONTAINER_IMAGE: lab.compute.dtu.dk:5005/$CI_PROJECT_PATH
CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest
CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:CI_COMMIT_SHORT_SHA
CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
GIT_SUBMODULE_STRATEGY: recursive
before_script:
......@@ -58,3 +58,26 @@ deploy_devel:
url: https://enote-devel3.compute.dtu.dk
only:
- develop
deploy_production:
tags:
- deploy-prod-2019
stage: deploy
script:
- echo "Deploy to ${CI_BUILD_REF_SLUG} server"
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- cd /enote/src/dtu-enote
- ../../gen/docker-stop.sh
- docker-compose -f ../../gen/docker-compose-enote.yml pull
- docker images | grep ${CI_PROJECT_PATH}
- ../../gen/docker-start.sh
- docker ps -q -f status=exited | xargs -I '{}' docker rm -f '{}'
- docker ps -q -f status=dead | xargs -I '{}' docker rm -f '{}'
- docker image prune -f
environment:
name: production
url: https://quiz.compute.dtu.dk
only:
- release-2019.0
FROM dtucompute/sharelatex:2018
```
docker exec sharelatex /bin/bash -c "cd /var/www/sharelatex; grunt user:create-admin --email joe@example.com"
docker exec sharelatex /bin/bash -c "cd /var/www/sharelatex; grunt user:delete --email joe@example.com"
Back ported changes upto b830a7d837e8034a795b26408d0b36e0544cdd98
```
#!/bin/bash
docker-compose build
docker tag dtu-enote-sharelatex_sharelatex dtucompute/sharelatex:2018
docker login --username=dtucompute --password=da47c1aed914
docker push dtucompute/sharelatex:2018
version: '2'
services:
sharelatex:
build: sharelatex/
container_name: sharelatex
depends_on:
- mongo
- redis
ports:
- 80:80
links:
- mongo
- redis
# extra_hosts:
# - "google.com:127.0.0.1"
# volumes:
# - ~/sharelatex_data:/var/lib/sharelatex
# - /var/run/docker.sock:/var/run/docker.sock
# #- /var/clsi/compiles:/var/www/sharelatex/clsi/compiles
environment:
SHARELATEX_SITE_URL: http://docker-test2.compute.dtu.dk
SHARELATEX_MONGO_URL: mongodb://mongo/sharelatex
SHARELATEX_REDIS_HOST: redis
SHARELATEX_APP_NAME: Our ShareLaTeX
## Set for SSL via nginx-proxy
#VIRTUAL_HOST: 103.112.212.22
# SHARELATEX_SITE_URL: http://sharelatex.mydomain.com
# SHARELATEX_NAV_TITLE: Our ShareLaTeX Instance
# SHARELATEX_HEADER_IMAGE_URL: http://somewhere.com/mylogo.png
# SHARELATEX_ADMIN_EMAIL: support@it.com
# SHARELATEX_LEFT_FOOTER: '[{"text": ""}]'
# SHARELATEX_RIGHT_FOOTER: '[{"text": ""}]'
# SHARELATEX_EMAIL_FROM_ADDRESS: "team@sharelatex.com"
# SHARELATEX_EMAIL_AWS_SES_ACCESS_KEY_ID:
# SHARELATEX_EMAIL_AWS_SES_SECRET_KEY:
# SHARELATEX_EMAIL_SMTP_HOST: smtp.mydomain.com
# SHARELATEX_EMAIL_SMTP_PORT: 587
# SHARELATEX_EMAIL_SMTP_SECURE: false
# SHARELATEX_EMAIL_SMTP_USER:
# SHARELATEX_EMAIL_SMTP_PASS:
# SHARELATEX_EMAIL_SMTP_TLS_REJECT_UNAUTH: true
# SHARELATEX_EMAIL_SMTP_IGNORE_TLS: false
# SHARELATEX_CUSTOM_EMAIL_FOOTER: "<div>This system is run by department x </div>"
# SHARELATEX_TEMPLATES_USER_ID: "578773160210479700917ee5"
# SHARELATEX_PROXY_LEARN: "true"
mongo:
image: mongo
container_name: mongo
expose:
- 27017
# volumes:
# - ~/mongo_data:/data/db
redis:
image: redis
container_name: redis
expose:
- 6379
# volumes:
# - ~/redis_data:/data
FROM ubuntu:18.04
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get -qq update && apt-get -qq -y upgrade
RUN apt-get -qq -y install build-essential wget unzip time imagemagick optipng strace nginx git python zlib1g-dev libpcre3-dev \
aspell aspell-en aspell-da \
supervisor tzdata
ARG TZ=Europe/Copenhagen
RUN cp /usr/share/zoneinfo/$TZ /etc/localtime
RUN bash -l -c 'echo "${TZ}" > /etc/timezone'
RUN dpkg-reconfigure -f noninteractive tzdata
RUN wget https://s3.amazonaws.com/sharelatex-random-files/qpdf-6.0.0.tar.gz && \
tar xzf qpdf-6.0.0.tar.gz && cd qpdf-6.0.0 && \
./configure && make && make install && ldconfig && rm -rf ../qpdf-6.0.0*
## Install NVM
# Replace shell with bash so we can source files
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
# Set debconf to run non-interactively
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
# Install base dependencies
RUN apt-get -qq -y install --no-install-recommends \
apt-transport-https ca-certificates curl libssl-dev
ENV NODE_VERSION 6.13.1
# Install nvm with node and npm
RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
ENV NVM_DIR /root/.nvm
RUN chmod 755 $NVM_DIR/nvm.sh
RUN . $NVM_DIR/nvm.sh \
&& nvm install $NODE_VERSION \
&& nvm alias default $NODE_VERSION \
&& nvm use default
ENV NODE_PATH $NVM_DIR/versions/node/v$NODE_VERSION/lib/node_modules
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH
RUN npm install -g grunt-cli
RUN apt-get -qq -y install texlive-base texlive-binaries texlive-latex-base texlive-latex-recommended texlive texlive-bibtex-extra \
texlive-fonts-extra texlive-fonts-extra-links texlive-fonts-recommended texlive-formats-extra \
texlive-generic-extra texlive-generic-recommended texlive-lang-english texlive-lang-european \
texlive-latex-extra texlive-pictures texlive-plain-generic texlive-pstricks texlive-science latexmk
# NodeJS is installed as a dependency, which can't be used for Sharelatex
RUN apt-get -qq -y install r-base r-base-dev xorg xorg-dev r-cran-rgl libxml2-dev libcurl4-gnutls-dev \
r-cran-rjava default-jre ed libssl-dev
RUN git clone https://github.com/sharelatex/sharelatex.git /var/www/sharelatex && \
pushd /var/www/sharelatex/; \
git checkout 5064b4cb3afad68bd97244e33c37254531c148e4; \
rm -rf .git
COPY setup*.sh /
RUN /setup-r.sh
RUN /setup-paths.sh
# Use same repo versions as Sharelatex DockerHub build
COPY config/services.js /var/www/sharelatex/config/
COPY config/settings.coffee /etc/sharelatex/
ENV SHARELATEX_CONFIG /etc/sharelatex/settings.coffee
RUN /setup-crypto.sh
COPY config/package.json /var/www/
RUN cd /var/www && npm install
# Grunt: git clone the many repos
RUN cd /var/www/sharelatex; \
npm install; \
grunt install
# find . -type d -name .git -exec rm -rf '{}' +
RUN cd /var/www/sharelatex && bash -c 'source ./bin/install-services'; \
cd web; \
npm install; \
npm install bcrypt; \
cd modules; \
git clone https://github.com/sharelatex/launchpad-web-module.git launchpad; \
cd launchpad; git checkout fe6aaa63b4146271fc92a25ab9d22ef1099d4501; rm -rf .git; cd .. ;\
grunt compile;
COPY config/git-revision.js /var/www/
RUN cd /var/www && node git-revision > revisions.txt
#COPY multi-status.sh /
#RUN /multi-status.sh > ms1.txt
RUN cd /var/www/sharelatex/web && grunt compile:minify
RUN cd /var/www/sharelatex/clsi && grunt compile:bin
RUN rm -f /etc/nginx/sites-enabled/default
COPY config/nginx.conf /etc/nginx/
COPY config/sharelatex.conf /etc/nginx/conf.d/
COPY config/sharelatex /etc/logrotate.d/
RUN mkdir /cache
RUN mkdir -p /var/lib/sharelatex/data/user_files
COPY config/supervisord.conf /etc/
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
var simple = require('simple-git');
var services = require('./sharelatex/config/services');
const fs = require('fs');
function print_latest(repoDir) {
git = simple(repoDir);
opt = [];
opt['max-count'] = 1;
git.log(opt, function(err, log) {
if (!err) {
console.log(repoDir + ',' + log.latest.hash);
}
})
}
for (id in services) {
service = services[id];
dirPath = __dirname + '/sharelatex/'+service.name;
if (fs.existsSync(dirPath)) {
print_latest(dirPath);
}
}
daemon off;
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
client_max_body_size 50m;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
##
# nginx-naxsi config
##
# Uncomment it if you installed nginx-naxsi
##
#include /etc/nginx/naxsi_core.rules;
##
# nginx-passenger config
##
# Uncomment it if you installed nginx-passenger
##
#passenger_root /usr;
#passenger_ruby /usr/bin/ruby;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
{
"name": "none",
"author": "none",
"description": "none",
"dependencies": {
"grunt": "^0.4.5",
"grunt-contrib-rename": "0.0.3",
"grunt-docker-io": "^0.7.0",
"grunt-github-api": "^0.2.3",
"simple-git": "1.85.0",
"underscore": "^1.8.3"
}
}
module.exports =
[{
name: "web",
repo: "https://github.com/dtu-compute/web-sharelatex.git",
version: "c27438b8042fc9d9e12136f4e805a690cde7c13d"
}, {
name: "real-time",
repo: "https://github.com/sharelatex/real-time-sharelatex.git",
version: "aff98de9d055ac7c4e238324fd1f062cfee90be4"
}, {
name: "document-updater",
repo: "https://github.com/sharelatex/document-updater-sharelatex.git",
version: "bb64ab47851b500bd51de6409b97d8edc367eed8"
}, {
name: "clsi",
repo: "https://github.com/sharelatex/clsi-sharelatex.git",
version: "12c1dc632a7afb090fb87db6d96d9be2e8bfb0cd"
}, {
name: "filestore",
repo: "https://github.com/sharelatex/filestore-sharelatex.git",
version: "c2eb0f6a780c879574ca3d6d4f33ad614560fef6"
}, {
name: "track-changes",
repo: "https://github.com/sharelatex/track-changes-sharelatex.git",
version: "1d37a991596b5d5fd22d27ad1bf5a69977c5a88c"
}, {
name: "docstore",
repo: "https://github.com/sharelatex/docstore-sharelatex.git",
version: "be3b3e2b220010bffb17e7add23cec51d7dc9d63"
}, {
name: "chat",
repo: "https://github.com/sharelatex/chat-sharelatex.git",
version: "c14a90d52672c1ab251183934edc312745f3396c"
}, {
name: "tags",
repo: "https://github.com/sharelatex/tags-sharelatex.git",
version: "46d4ae810f9ca795764fe90e0b75603d166ccbf0"
}, {
name: "spelling",
repo: "https://github.com/sharelatex/spelling-sharelatex.git",
version: "5fe85098527ef1f2cf297746ec4379013b044250"
}, {
name: "contacts",
repo: "https://github.com/dtu-compute/contacts-sharelatex.git",
version: "3721589e450dbe04c968a67127cb21141710e013"
}, {
name: "notifications",
repo: "https://github.com/sharelatex/notifications-sharelatex.git",
version: "fff86260ce2f71a5ceb1d672bb869d87b7c3beae"
}]
This diff is collapsed.
/var/log/sharelatex/*.log {
daily
missingok
rotate 5
compress
copytruncate
notifempty
create 644 root adm
}
\ No newline at end of file
server {
listen 80;
server_name _; # Catch all, see http://nginx.org/en/docs/http/server_names.html
set $static_path /var/www/sharelatex/web/public;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 3m;
proxy_send_timeout 3m;
}
location /socket.io {
proxy_pass http://127.0.0.1:3026;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 3m;
proxy_send_timeout 3m;
}
location /stylesheets {
expires 1y;
root $static_path/;
}
location /minjs {
expires 1y;
root $static_path/;
}
location /img {
expires 1y;
root $static_path/;
}
}
[supervisord]
nodaemon=true
[program:chat]
command=/bin/bash -c "$NVM_DIR/versions/node/v$NODE_VERSION/bin/node /var/www/sharelatex/chat/app.js >> /var/log/sharelatex/chat.log 2>&1"
[program:clsi]
command=/bin/bash -c "$NVM_DIR/versions/node/v$NODE_VERSION/bin/node /var/www/sharelatex/clsi/app.js >> /var/log/sharelatex/clsi.log 2>&1"
[program:contacts]
command=/bin/bash -c "$NVM_DIR/versions/node/v$NODE_VERSION/bin/node /var/www/sharelatex/contacts/app.js >> /var/log/sharelatex/contacts 2>&1"
[program:docstore]
command=/bin/bash -c "$NVM_DIR/versions/node/v$NODE_VERSION/bin/node /var/www/sharelatex/docstore/app.js >> /var/log/sharelatex/docstore.log 2>&1"
[program:document-updater]
command=/bin/bash -c "$NVM_DIR/versions/node/v$NODE_VERSION/bin/node /var/www/sharelatex/document-updater/app.js >> /var/log/sharelatex/document-updater.log 2>&1"
[program:filestore]
command=/bin/bash -c "$NVM_DIR/versions/node/v$NODE_VERSION/bin/node /var/www/sharelatex/filestore/app.js >> /var/log/sharelatex/filestore.log 2>&1"
[program:notifications]
command=/bin/bash -c "$NVM_DIR/versions/node/v$NODE_VERSION/bin/node /var/www/sharelatex/notifications/app.js >> /var/log/sharelatex/notifications.log 2>&1"
[program:real-time]
command=/bin/bash -c "$NVM_DIR/versions/node/v$NODE_VERSION/bin/node /var/www/sharelatex/real-time/app.js >> /var/log/sharelatex/real-time.log 2>&1"
[program:spelling]
command=/bin/bash -c "$NVM_DIR/versions/node/v$NODE_VERSION/bin/node /var/www/sharelatex/spelling/app.js >> /var/log/sharelatex/spelling.log 2>&1"
[program:tags]
command=/bin/bash -c "$NVM_DIR/versions/node/v$NODE_VERSION/bin/node /var/www/sharelatex/tags/app.js >> /var/log/sharelatex/tags.log 2>&1"
[program:track-changes]
command=/bin/bash -c "$NVM_DIR/versions/node/v$NODE_VERSION/bin/node /var/www/sharelatex/track-changes/app.js >> /var/log/sharelatex/track-changes.log 2>&1"
[program:web]
command=/bin/bash -c "$NVM_DIR/versions/node/v$NODE_VERSION/bin/node /var/www/sharelatex/web/app.js >> /var/log/sharelatex/web.log 2>&1"
[program:nginx]
command=/usr/sbin/nginx
stdout_events_enabled=true
stderr_events_enabled=true
#!/bin/bash
git status
for D in `find . -type d`
do
pushd $D
git status
popd
done
#!/bin/sh
# Create random secret keys (twice, once for http auth pass, once for cookie secret).
CRYPTO_RANDOM=$(dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev | tr -d '\n+/')
sed -i "0,/CRYPTO_RANDOM/s/CRYPTO_RANDOM/$CRYPTO_RANDOM/" /etc/sharelatex/settings.coffee
CRYPTO_RANDOM=$(dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev | tr -d '\n+/')
sed -i "0,/CRYPTO_RANDOM/s/CRYPTO_RANDOM/$CRYPTO_RANDOM/" /etc/sharelatex/settings.coffee
#!/bin/sh
adduser --system --group --home /var/www/sharelatex --no-create-home sharelatex
mkdir -p /var/lib/sharelatex
chown www-data:www-data /var/lib/sharelatex
mkdir -p /var/log/sharelatex
chown www-data:www-data /var/log/sharelatex
mkdir -p /var/lib/sharelatex/data/template_files
chown www-data:www-data /var/lib/sharelatex/data/template_files
mkdir -p /etc/sharelatex
mkdir -p /var/lib/sharelatex/data/cache
mkdir -p /var/lib/sharelatex/data/compiles
mkdir -p /var/lib/sharelatex/data/template_files
mkdir -p /var/lib/sharelatex/data/user_files
mkdir -p /var/lib/sharelatex/tmp/dumpFolder
mkdir -p /var/lib/sharelatex/tmp/uploads
mkdir -p /var/log/sharelatex
chown www-data:www-data /var/lib/sharelatex
chown www-data:www-data /var/lib/sharelatex/data
chown www-data:www-data /var/lib/sharelatex/data/user_files
chown www-data:www-data /var/lib/sharelatex/data/compiles
chown www-data:www-data /var/lib/sharelatex/data/cache
chown www-data:www-data /var/lib/sharelatex/data/template_files
chown www-data:www-data /var/lib/sharelatex/tmp/dumpFolder
chown www-data:www-data /var/lib/sharelatex/tmp
chown www-data:www-data /var/lib/sharelatex/tmp/uploads
chown www-data:www-data /var/lib/sharelatex/tmp/dumpFolder
chown www-data:www-data /var/www/
chown www-data:www-data /var/www/sharelatex
touch /var/lib/sharelatex/data/db.sqlite
chown www-data:www-data /var/lib/sharelatex/data/db.sqlite
#!/bin/bash
R -e 'install.packages("knitr", dependencies = TRUE, repos="http://cran.rstudio.com/")'
#copy .latexmkrc til project home
R -e 'install.packages("xlsx", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("xtable", repos="http://cran.rstudio.com/")'
R -e 'install.packages("minqa", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("nloptr", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("RcppEigen", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("nlme", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("lme4", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("rematch", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("cellranger", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("assertthat", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("bindr", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("plogr", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("Rcpp", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("bindrcpp", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("glue", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("pkgconfig", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("rlang", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("BH", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("crayon", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("cli", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("utf8", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("pillar", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("tibble", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("bindrcpp", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("tidyselect", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("dplyr", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("curl", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("openssl", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("httr", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("lazyeval", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("purrr", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("hms", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("readr", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("tidyr", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("xml2", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("googlesheets", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("gtools", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("gdata", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("bitops", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("caTools", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("gplots", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("bootstrap", dependencies="Depends", repos="http://cran.rstudio.com/")'
R -e 'install.packages("scatterplot3d", dependencies="Depends", repos="http://cran.rstudio.com/")'
#!/bin/bash
# tlmgr install: package a4 not present in repository.
#tlmgr install: package base not present in repository.
#tlmgr install: package expl3 not present in repository.
#tlmgr install: package l3keys2e not present in repository.
#tlmgr install: package l3regex not present in repository.
#tlmgr install: package tikz not present in repository.
#tlmgr install: package scatterplot3d not present in repository.
#tlmgr install: package bootstrap not present in repository.
tlmgr install ms
tlmgr install a4wide
tlmgr install a4
tlmgr install ntgclass
tlmgr install ucs
tlmgr install base
tlmgr install babel
tlmgr install babel-danish
tlmgr install needspace
tlmgr install framed
tlmgr install wrapfig
tlmgr install mathtools
tlmgr install multirow
tlmgr install mhchem
tlmgr install expl3
tlmgr install l3kernel
tlmgr install l3keys2e
tlmgr install l3packages
tlmgr install l3regex
tlmgr install l3experimental
tlmgr install tikz
tlmgr install tikz-cd
tlmgr install pgf
tlmgr install xcolor
tlmgr install titlesec
tlmgr install ec
tlmgr install mathpazo
tlmgr install fpl
tlmgr install palatino
tlmgr install fancyvrb
tlmgr install comment
tlmgr install subfiles
tlmgr install chemgreek
tlmgr install collection-fontsrecommended
tlmgr install scatterplot3d
tlmgr install bootstrap
tlmgr install preview
tlmgr install printlen
tlmgr install glossaries
tlmgr install preview
tlmgr install printlen
tlmgr install siunitx
tlmgr install import
tlmgr install etoolbox
tlmgr install glossaries-extra
tlmgr install glossaries
tlmgr install mfirstuc
tlmgr install textcase
tlmgr install xfor
tlmgr install datatool
tlmgr install substr
tlmgr install fp
tlmgr install tracklang
tlmgr install todonotes
tlmgr install marginnote
tlmgr install xkeyval
tlmgr install pagecolor
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment