2021年8月12日 星期四

Ubuntu 20.04 安裝 Open edX 找不到 mysql-client 5.7

Open edX 是一個開源的線上教學平台,

目前最新版本為 Lilac 也已經在 2021-06-09 正式 release,

從 Koa 版本開始,

系統的核心也升級至 Ubuntu 20.04 ,

不過還是有套件由於更新緣故無法安裝,

今天就來教大家如何解決

Ubuntu 20.04 安裝 Open edX 找不到 mysql-client 5.7

安裝 Open edX 版本 Koa 或者 Lilac 時,

容易遇到這個問題

Version ‘5.7.32-1ubuntu18.04’ for ‘mysql-client’ was not found

而原因也很簡單,

單純就是因為版本更新所以預設的儲存庫找不到安裝檔案,

解決的方式就是手動指定安裝的版本即可。

透過手動下載

wget wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
dpkg -i mysql-apt-config_0.8.12-1_all.deb

接著系統會出現目前的設定值,

選擇 Ubuntu bionic


下一步選擇 mysql-5.7,

接著選擇 OK 離開。



設定完畢需要再次執行:

apt-get update

再次安裝前可使用命令

apt-cache policy mysql-server

確認目前安裝列表中是否有 mysql 5.7 的相關訊息

接著編輯 Open edX 安裝設定檔

vi /var/tmp/configuration/playbooks/roles/mysql/defaults/main.yml

找到 mysql 相關設定並將其改為目前能安裝的 mysql 5.7:


mysql_server_5_7_pkg: "mysql-server=5.7.35-1ubuntu18.04"

mysql_client_5_7_pkg: "mysql-client=5.7.35-1ubuntu18.04"

mysql_community_server_5_7_pkg: "mysql-server=5.7.35-1ubuntu18.04"


接著重新執行

wget https://raw.githubusercontent.com/edx/configuration/$OPENEDX_RELEASE/util/install/native.sh -O - | bash

就能夠順利進行 Open edX native Installation

 


2021年8月11日 星期三

Linux的檔案權限管理 chmod

在 Linux 中,

對於文件與資料夾都能設定存取的權限,

幫助設定這些文件權限的命令就是今天要介紹的主題:

Linux的檔案權限管理 chmod

chmod 幫助管理者設定檔案存取權限,

使用命令 :

ls -l

觀看目前資料夾中的文件


檔案權限

每個檔案都有紅色框起的部分,

這十個字元紀錄了文件的存取權限,

第一個字元表示檔案的類型:
- 代表"檔案"
d 代表"資料夾"
l 代表"連結檔"
其他還有 b、c 等表示周邊設備

其後的九個字元以3個字元為一個區隔,

做為檔案在三種使用者類型的存取權限,

而使用者類型依序分三種:

擁有者、群組、其他人

每個類型使用

rwx

做為檔案的存取權限

r 代表"讀取"
w 代表"寫入"
x 代表"執行"

舉例來說,

以上方範例中的檔案: reset-test-db.sh

在紅框範圍的存取定義為

- rwx rwx r-x

表示此文件為檔案

檔案擁有者可以 讀取、寫入、執行 這個檔案
檔案所屬群組可以 讀取、寫入、執行 這個檔案
其他的人可以 讀取、執行 這個檔案

chmod 命令基本使用方法




可以使用命令來修改檔案的權限:

chmod u+rwx,go=rx config.yml

若是以英文字母的參數的話,
使用 
u 表示檔案擁有者
g 表示檔案所屬群組
o 表示其他的所有人
加上 + 、-、 = 等符號,
表示新增、刪除、等於後面所接的權限( rwx ),
此處範例命令的意義為

新增 rwx 權限給檔案擁有者,所屬群組與其他人僅有 rx ( 讀取、執行 ) 的權限

或者直接以八進位數字直接表示 rwx

chmod 755 config.yml

每個數字依序代表檔案
擁有者、群組、其他所有人 的存取權限。
r=4,w=2,x=1 將其加總

7 表示 rwx
5 表示 rx
5 表示 rx



2021年8月3日 星期二

Python基礎:元組 Tuple

之前介紹 Python 的數值,

也介紹過字串的幾個用法,

今天要來介紹的是跟 List 很相似的

Python基礎:元組 Tuple

為何說 Tuple 與 List 相似,

因為除了兩個最大的差異點之外,

兩者並無分別

1. 元組所有元素是唯讀的 (元素不可更改、刪除)
2. Tuple 使用小括號而 List 使用中括號

當元組僅有一個元素時,

要加上逗號才會被宣告為元組,

下方為 空元組a 與一個元素的元組b :


雖然元組的元素不能修改,

但是可以透過 + 號與 * 號 進行連結與複製

b = (20,)
c = (40, 60)

print(b+c)
print(c*2)

顯示的結果為:

(20, 40, 60)
(40, 60, 40, 60)

與 List 相同都是有序序列,

所以也能利用索引值取出元素值:

例如上面範例使用索引值印出 c[0],c[1] 

就會顯示 40,60

當然元組的切片也是支援的:

"""元組切片"""
d = ('Hello', 'World', 'Python')
print(d[:2])
print(d[1:])
print(d[0::2])

程式執行的結果:

('Hello', 'World')
('World', 'Python')
('Hello', 'Python')