apt-get install 範例

完整範例」。

資料夾結構

./
├── app
│   ├── php
│   │   ├── bin
│   │   │   ├── apt-install.sh
│   │   │   ├── clean.sh
│   │   │   ├── configure.sh
│   │   │   ├── help.sh
│   │   │   └── install.sh
│   │   ├── etc
│   │   │   └── package.list
│   │   └── Makefile
│   └── vim
│       ├── bin
│       │   ├── apt-install.sh
│       │   ├── clean.sh
│       │   ├── configure.sh
│       │   ├── help.sh
│       │   └── install.sh
│       ├── etc
│       │   └── package.list
│       └── Makefile
├── bin
│   ├── apt-install.sh
│   ├── clean.sh
│   ├── help.sh
│   └── install.sh
├── Makefile
└── README.md

8 directories, 20 files

Makefile

撰寫「Makefile」內容如下

THE_MAKEFILE_FILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
THE_BASE_DIR_PATH := $(abspath $(dir $(THE_MAKEFILE_FILE_PATH)))
THE_BIN_DIR_PATH := $(THE_BASE_DIR_PATH)/bin

PATH := $(THE_BIN_DIR_PATH):$(PATH)

default: help
.PHONY: default

help:
    @help.sh
.PHONY: help

install:
    @install.sh
.PHONY: install

apt-install:
    @apt-install.sh
.PHONY: apt-install

clean:
    @clean.sh
.PHONY: clean

Shell Script

bin/install.sh」內容如下

#!/usr/bin/env bash

THE_BASE_DIR_PATH=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
THE_BIN_DIR_PATH=$THE_BASE_DIR_PATH/../bin
THE_APP_DIR_PATH=$THE_BASE_DIR_PATH/../app


for APP_DIR_PATH in $THE_APP_DIR_PATH/* ; do
    THE_INSTALL_SCRIPT=$APP_DIR_PATH/bin/install.sh

    if [ -f $THE_INSTALL_SCRIPT ]; then
        $THE_INSTALL_SCRIPT
    fi
done

bin/apt-install.sh」內容如下

#!/usr/bin/env bash

THE_BASE_DIR_PATH=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
THE_BIN_DIR_PATH=$THE_BASE_DIR_PATH/../bin
THE_APP_DIR_PATH=$THE_BASE_DIR_PATH/../app
THE_TMP_DIR_PATH=$THE_BASE_DIR_PATH/../tmp

mkdir $THE_TMP_DIR_PATH -p

# package list (all)
THE_PACKAGE_LIST_FILE_PATH=$THE_TMP_DIR_PATH/package.list

# remove package list (all)
rm $THE_PACKAGE_LIST_FILE_PATH -f

for APP_DIR_PATH in $THE_APP_DIR_PATH/* ; do
    EACH_PACKAGE_LIST_FILE_PATH=$APP_DIR_PATH/etc/package.list

    if [ -f $EACH_PACKAGE_LIST_FILE_PATH ]; then
        EACH_PACKAGE_LIST=$(cat $EACH_PACKAGE_LIST_FILE_PATH)
        echo $EACH_PACKAGE_LIST >> $THE_PACKAGE_LIST_FILE_PATH
    fi
done


sudo apt-get install $(cat $THE_PACKAGE_LIST_FILE_PATH) -y

執行指令

執行

$ make

顯示

Usage: make [command]

Ex:
$ make
$ make help
$ make install
$ make apt-install
$ make clean

執行

$ make install

就會安裝所有的套件,並且執行相關的設定動作。

執行

$ make apt-install

只會安裝所有的套件。

執行

$ make clean

會刪除所有的tmp資料夾