如何在Ubuntu 18.04上安裝與設定HP印表機工具

前言

因為辦公室是使用HP印表機進行影印,以往我在辦公室有文件需要列印的時候,我都是使用辦公室所配發的Win 10筆電進行列印,這樣其實是不方便的。

因為每次都要在辦公桌上切換不同的電腦進行列印的操作,熟悉我的人都知道,我基本上都是使用Ubuntu/Linux筆電進工作,所以我最近找了一些文章並把HP印表機工具,在Ubuntu 18.04上的設定記錄下來。

讓大家知道,HP印表機在筆電上要怎麼運作的。

前置環境

在開始本篇的教學前,需要注意下面的幾點事項:

  • 準備好Ubuntu 18.04的筆電或是電腦

安裝相關所需要的套件

在使用HP印表機工具前,需要透過下面的指令來更新與安裝我們所需要的套件


sudo apt-get update

sudo apt-get install hplip hplip-gui hplip-data hplip-doc hpijs-ppds libsane-hpaio printer-driver-hpcups printer-driver-hpijs

安裝好之後,我們可以透過指令的方式啟動HP-setup,這是印表機設定工具


python3 $(which hp-setup)

這邊要注意的是,需要使用Python3開啟,因為大多數環境預設,python指令為Python2。

所以要在最前面指定python3當作執行的程式。

執行下去之後,會看到下面的畫面:

這是一個HP裝置管理器,透過它可以幫我們快速找到印表機裝置的位置,裡面有幾種選項可以選擇,分別是:

  • USB找尋印表機裝置
  • 透過網路(包含無線,有線等網路)直接連線印表機裝置
  • 無線網路,需要暫時連接USB網路
  • 序列port方式連接

以我在辦公室來說,通常大部分都是選擇第二個選項,我們可以透過區域網路方式,找尋到確的印表機位置。

可是當你選擇下去並按下「Next」之後,會出現如下的錯誤:

這是因為,HPLIP沒有辦法自動找到網路上的印表機,這時候,需要打開「Show Advanced options」並勾選「Manual Discovery」手動將印表機所在的IP填上去:

 

填完之後再去按下「Next」,這時候就會順利找到了。如下圖,就會有那台印表機的資訊

接著再按下「Next」就會把印表機安裝好了。到這裡,就是把印表機設定好完成的步驟,那接下來後面就是可以開始列印文件了。

首先,我們先開啟一份PDF檔案,我使用「Document Viewer」做開啟的動作。

接著,按下「Print」選項,如下圖:

按下去之後,會有印表機裝置清單:

接著切換到「Advanced」選項,如下截圖:

我們從截圖中可以看到有一個選項叫做「Page Source」,可以選擇紙夾的部份,裡面有紙夾1,紙夾2與自動偵測可以選擇。那因為我本來是用自動偵測的選項,可是不知道為什麼,每次檢查完紙夾1之後就不能往下檢查了,會卡在紙夾1中沒有紙張。

我為了要解決上述的問題,我就直接指定紙夾2當作列印紙張的來源,後來就可以順利的列印出文件了,沒有任何的問題。

參考資料

  • https://askubuntu.com/questions/1058742/how-to-install-hp-printer-in-ubuntu-18-04

如何利用在Azure上的Azure Web App部署一個Docker容器

前言

相信在看這篇文章之前,已經先看過這篇文章了。從前一篇文章,我們可以得知該如何利用Azure Web App上部署的方法把我們的專案部署上去。

可是,這個沒辦法滿足下列的要求

  • 以PHP環境來說,預設在Azure Web App上的環境是PHP + Apache,那如果我們要PHP + Nginx呢?
  • Azure Web App部署上去會觸發Azure所客製的部署引擎Kudu,若不熟悉腳本語言,還需要再花額外的時間去學習

為了要解決上述的問題,Azure Web App提供另一項的部署方式,那就是用Docker container方式,透過編寫的Dockerfile或docker-compose.yml方式,Azure Web App會在部署的時候讀取它們並部署成一個container,即是一個容器為一個Web App Service的概念。

本文章,就是要使用Azure Web App並透過載入Docker 映像來達到部署Web App Service。

登入Azure portal

首先,先登入Azure portal,Web方式管理Azure雲端運算平台的服務。

接著,在利用Docker container部署一個Azure Web App之前,需要將我們需要用到的Docker 映像發怖到網路上的平台,因為Azure Web App用Docker容器部署的時候,可以接受以下幾種方式:

  • 從外部Docker Hub載入
  • 從Azure Container Registry載入
  • 快速入門
  • 私人存放Docker映像檔server

本章節中,我們只使用「Azure Container Registry」這種方式載入我們所需要的Docker映像檔。原因是因為:

  • 我們需要建立一個Docker私人映像檔
  • 客製化Docker映像,因此快速入門所預設好的映像不適合這次的文章要求
  • 我們沒有私人存放Docker映像檔的server,因此此方法也不適合
  • Azure Container登錄,就是在Azure雲端運算平台上面建立一個私人的Docker Hub,透過它可以在Azure Web App部署的時候指定來源的Docker映像,進而達到部署的效果

我們在上圖中的「搜尋資源,服務及文件的地方」輸入「容器登錄」就可以得到如下的截圖:

因為我在之前有建立一個Docker容器登錄的位址,因此截圖上有出現在清單中,接著按下「新增」,就會看到下面的截圖:

就先取好自己的Docker container Registry名字,還有其他選項,如下圖所示:

都確認之後,接著按下「建立」的按鈕,就會開始建立Azure Container Registry位置了。

建立完成之後,在清單中就會看到剛剛建立的Azure Container Registry了。

點擊剛剛所建立好的容器登錄。

就會看到這樣的截圖如下:

點擊「存取金鑰」並把管理使用者「啟用」,這樣就可以允許Azure Web App在部署的時候去存取此Azure Container Registry上的Docker映像了。

接著,打開終端機,假設已經把「az」安裝好了(若沒有安裝,請先讀這篇文章),我們可以輸入如下的指令進行登入:


az acr login --name=your-acr-name

登入成功後,會出現下列的訊息


Login Succeeded

接下來,就可以把本地建置好的Docker映像發怖到我們先前所建立好的Azure Container Registry了

我們先標記目前的Docker映像的版本,這樣在Azure Container Registry上選擇版本的時候更加容易,可以利用下面的指令來達成


docker tag database-adminer your-acr-name.azurecr.io/database-adminer:v1

database-adminer是我在本地端Docker映像檔的名稱,而「your-acr-name」是之前步驟建立Azure Container Registry的名稱。

建立好標籤之後,接著再用下面的指令將本地端的Docker映像傳輸到先前所建立的Azure Container Registry。


docker push multidbp.azurecr.io/database-adminer:v1

都建立完成之後,回到Azure Container Registry頁面並點選「存放庫」可以發現剛剛所建立的Docker映像已經在上面了,如下截圖:

接著點選進去,就可以看到目前推送上去所有的的標籤清單了

我們完成了Docker映像的推送後,接下來可以用Azure Web App部署了

首先,我們先進到如下圖的「Azure Web應用程式」頁面並再新增一個新的Web應用程式,選擇相關的選項如下圖:

在圖中我們可以得知,我們取一個Web App名字叫做「database-adminer-docker」並把部署方式選擇「Docker映像」,其他選項都用與之前文章相同即可。接著點選「下一步:Docker」,就會到下面的截圖:

我們選擇「單一容器」,映像來源選擇「Azure Container Registry」,接著選擇登錄容器的名稱,映像以及標籤版本,啟動命令留下空白,這裡是因人而異,原因是因為我們在「Dockerfile」裡面已經有明確的指定要執行的指令,因此不需要再額外輸入需要執行指令。

接著就「下一步 標籤」再接著按「下一步 檢閱及建立」,最後就按下「建立」,如下截圖。

接著就跑起來了,如下截圖:

參考資料

  • https://docs.microsoft.com/zh-tw/azure/app-service/containers/tutorial-custom-docker-image
  • https://blog.miniasp.com/post/2015/05/04/Intro-Azure-Web-App-Kudu-engine
  • 文章所使用到的專案:https://github.com/peter279k/database-adminer

OWASP TechDay Taiwan 2019 心得

前言

身為一個網站後端兼前端的開發者,多少也是需要知道Web 應用程式安全相關的技術

OWASP,全名是「Open Web Application Security Project」。在我三年前的時候,我已經知道有OWASP Web Top 10的報告,內容在描述目前前十大的網站應用程式安全。

當然,有我們熟知的SQL injection, XSS, 還有 CSRF 跨站請求偽造等。

有攻擊的手法與防禦的方法。

那這次的Workshop我想去的原因是因為,我想要補充這個組織相關的發展。

剛好看到 OWASP 台灣社群有這個相關活動訊息,所以我就向公司申請了一下就去參加了。

議程感想

因為早上下個超大西北雨,有議程落掉了,因此我只擷取我聽到的部份。

我在OWASP的一千零一夜,Top 10的故事!

內容已經是後半段了,大部份是在介紹在OWASP社群裡面發生的事情,當志工的經歷,還有介紹目前OWASP目前有什麼樣的資源。

完全免費! 活用OWASP文件與工具強化資安

本議程,也是在講述在OWASP有什麼樣的資源,像是除了有Web Top 10之外,也有IoT Top 10,也有privacy Top 10等相關白皮書。

那也有講到一個重點,通常都是在網站應用程式開發得初期就要有資安危機意識,因為在軟體/系統開發期間,越後面期間,修漏洞所花費的成本與金錢越高。

舉例來說,在開發過程發現錯誤或是漏洞,修改大概是成本的5%,到了開發環境上線,像是Beta版本等,發現漏洞所花成本大概是成本的10%,但是到的線上環境的時候,要改成本已經來到成本的15%,那在營運一段過程中,發現有問題,要修正,已經是成本的25%了。

Discover Vulnerabilities in IoT devices

此議程是唯一技術有關的議程,由Bamboofox co-funder 陳仲寬大帶來的IoT裝置安全與研究。

看起來像是他之前所做的此方面研究的論文,描述整個IoT的架構,包含嵌入式作業系統,韌體(firmware),還有再更上層的應用程式等。

利用一連串方法,如猜測SQL組出的字串去猜測SQL查詢語法的注入點等。

內容是很豐富但是講者講到超過時間了XD,後面像是在趕火車的講過去,感覺要去看這幾篇引用的論文來看看。

才知道每種的方法跟詳細的對IoT裝置安全上所做的方法與分析。

工作坊感想

吃完午餐之後,接下來就是平行的工作坊時間了。主要有兩個議程在報名的時候可以做選擇。

分別是「Workshop-ZAP」與「Workshop-DVWA」前者是跟網路探測有關,而後者是跟網頁應用程式安全有關,那我本身是網站開發人員,自然想要對網站應用程式多一些的了解,因此我選擇了後者當做下午的Workshop

那一開始,講者使用他在CDX2.0平台上所建立的帳號作為練習此課程的環境。

因為透過此帳號,我們可以選定上面平台提供的上課課程包,透過開始上課課程包就可以讓我們輕易的部署好此課程所需要的學習環境。

接著安裝一些工具,像是「BurpSuite」,還有「Fortis SSL Client」等。

整個Workshop都圍繞在OWASP Web Top 10 的議題上,透過DVWA這個漏洞展示網頁應用程式上操作與教導該如何找到這些漏洞。

那我預計後面的文章,會有一篇介紹透過DVWA所操作得到的漏洞還有分析程式碼,也就是代碼審查。利用上述這樣的操作,來達到日後開發網站應用系統上的避免開發出漏洞的技巧。

參考資料

在Ubuntu系統底下如何安裝Forticlient – SSLVPN

前言

在今日,有幸可以參加OWASP Tech Taiwan Day 2019的工作坊,那在操作課程中,有需要用到VPN client來做連線,因此有鑑於此,我們需要安裝一個VPN client在我的Ubuntu 系統上,當然,今日又是只有我是Ubuntu系統的一天XD

前置環境

當然,要先像我一樣,需要先有下列環境。

  • Ubuntu 16.04 或是 Ubuntu 18.04 ,64位元

安裝Forticlient – SSLVPN

有了上述的環境之後,接著到這個網站,會看到很多已經編好的 deb 套件。

找到下面截圖中反黃的幾個,都可以下載做安裝。

安裝方式就是利用下面的指令做安裝


sudo dpkg -i forticlient-sslvpn_4.4.2332-1_amd64.deb

安裝完成之後,就會有類似的圖示可以使用了

結論

跟最新版本在Windows 上的是不一樣的,但是仍然是可以連線,也很正常。

我在今日的Workshop上是可以很正常的連線和使用的。

如何在Ubuntu 18.04上面安裝與管理Kernel

前言

在先前的文章中提到,自從從Ubuntu 16.04升級到Ubuntu 18.04之後,連Kernel也順便安裝了一個新的版本,確切的版本號我已經忘了,但是就讓我的ThinkPad上的電源管理機制上出現了一些奇怪的行為。

在升級到Ubuntu 18.04為我安裝較新版的Kernel中,我筆電從睡眠之中喚醒,就變成一種死機狀態,只看得到畫面,但是其他的東西,像是滑鼠,鍵盤都沒有反應了。

逼的我只能自己手動強制關機與開機。

後來,用了舊版的Kernel,就發現一切正常,所以我就很合理的懷疑,是較新版的Kernel出了些問題。

剛好趁這個機會,剛好看看有沒有什麼工具可以輕易的管理與安裝Kernel,後來還被我找到了。所以本文章中,就是來講解這個工具該如何使用。

前置環境

  • 一台Ubuntu 18.04主機

使用步驟

我們在本文中,會使用到一個叫做「ukuu」的工具,這個工具可以幫助我們輕易的管理與安裝Kernel。

首先,先用下面的指令將ukuu的外部鏡像位址匯入。


sudo add-apt-repository -y ppa:teejee2008/ppa

接著因為是Ubuntu 18.04的關係,所以當匯入進去的時候,會自動跑「sudo apt-get update」去更新所有的鏡像來源。

接著,就可以安裝今天的主角「ukuu」了。


sudo apt-get install ukuu

安裝完成之後,我們可以透過下面指令的方式取得目前所有可以取得安裝的Kernel版本。


ukuu --list

從截圖上來看,就可以知道Kernel版本清單是由新到舊排序。

如果是用下面的指令則是列出目前在作業系統上安裝的Kernel版本清單


sudo ukuu --list-installed

那假設我們要安裝上面列出的最新版「4.20.11」,則透過下面的指令變可以達成。


sudo ukuu --install v4.20.11

若我們要移除指定的Kernel版本,則我們就使用下列的指令來達成。


sudo ukuu --remove v4.20.11

參考資料

Upgrade Kernel on Ubuntu 18.04

如何在Filezilla上可正常的打字

前言

在之前我安裝Filezilla之後,一直沒有辦法正常的打字,通常都會遇到無法將打上去的主機名稱,使用者名稱等字刪掉。

後來我也在askUbuntu上面找到一樣的問題,幸好有熱心網民提供解法。

原因是在於,並沒有設定預設的輸入法給桌面程式使用。因此要預先去做設定。

解決方法

從「Preferences」進去會找到「Language Support」,下面會有一個叫做「Keyboard input method system」,設定好輸入法之後,就會可以正常的編輯FTP相關的資訊了。

如何在Ubuntu 18.04上手動編譯Python 3.5版本

前言

在Ubuntu 18.04中,Python3預設的版本為3.6,但是有的時候想測試的時候要用3.5版本怎辦?

這個時候,就會有兩種方式:

  1. 自己手動編譯一個Python 3.5版本在系統上。
  2. 使用pyenv等Python多版本工具管理Python。

第1種方法,優點是快速但是需要小心不要污染到系統本來的Python設定。

缺點則是在刪除的時候變得較為麻煩,需要手動刪除安裝上去的Python相關資料夾。

第2種方法,優點則是操作起來較為方便且不容易污染到系統Python版本設定。

缺點是建置步驟較為繁雜,多了好幾個步驟。

在本文章中,為展示第1種方法,其目的是紀錄我採過雷的心得與第2種方法做為一個比較。

當然,在下一篇文章中,會針對第2種方法來建置與管理多個Python版本之工具。

前置環境

  1. 需要一個Ubuntu 18.04主機

建置步驟

先安裝一些編譯的時需要用到的套件


sudo apt-get update

sudo apt-get install build-essential checkinstall

sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

接著,切換目錄並下載想要手動編譯安裝的版本,下載完成後進行解壓縮。


cd /usr/src

wget https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tgz

sudo tar xzf Python-3.5.6.tgz

切換到下載回來的Python原始碼目錄並進行檢查編譯環境與安裝在系統上。

使用make altinstall是因為避免污染到系統上的Python環境。


cd Python-3.5.6

sudo ./configure --enable-optimizations

sudo make altinstall

接著執行下列的指令,就代表安裝Python完成了。


python3.5 -V

編譯遇到問題

在編譯更之前的Python版本,比如3.5.2版本,在編譯過程中,可能會遇到類似這樣的錯誤

有這錯誤代表說,SSL擴展無法編譯甚至失敗,最有可能原因是libssl-dev套件關係。

而在Ubuntu 18.04中,libssl-dev套件版本為1.1,在編譯與安裝較舊Python版本可能不適合,為了要解決這個問題,需要將Ubuntu 18.04降版本以便讓Python版本能夠成功的編譯。

而我們可以用下列的方式將libssl-dev套件進行降版本。


sudo apt-get install libssl1.0-dev

將libssl-dev版本改為1.0之後,Python 3.5.2便可以編譯成功了。

移除已編譯後的Python安裝檔

當我們不需要使用已經安裝好的Python執行檔,我們則需要手動刪除安裝到各個目錄下的Python版本。以下是已經整理好要刪除的所有目錄位置。


prefix='/usr/local/'
pyver='3.5.6'

rm -rf \
${prefix}bin/python${pyver} \
${prefix}bin/pip${pyver} \
${prefix}bin/pydoc \
${prefix}bin/include/python${pyver} \
${prefix}lib/libpython${pyver}.a \
${prefix}lib/python${pyver} \
${prefix}bin/python${pyver} \
${prefix}bin/pip${pyver} \
${prefix}bin/include/python${pyver} \
${prefix}lib/libpython${pyver}.a \
${prefix}lib/python${pyver} \
${prefix}lib/pkgconfig/python-${pyver}.pc \
${prefix}lib/libpython${pyver}m.a \
${prefix}bin/python${pyver}m \
${prefix}bin/2to3-${pyver} \
${prefix}bin/python${pyver}m-config \
${prefix}bin/idle${pyver} \
${prefix}bin/pydoc${pyver} \
${prefix}bin/pyvenv-${pyver} \
${prefix}share/man/man1/python${pyver}.1 \
${prefix}include/python${pyver}m
${prefix}bin/pydoc ## WARN: skip if other pythons in local exist.

其中,pyver變數我們可以自行更改成我們需要移除的Python版本。

參考資料

 

如何在Ubuntu 18.04上安裝與更新Docker

前言

在之前,我自己已經把開發環境從Ubuntu 16.04升級成Ubuntu 18.04。

但是,Docker在升級過程中沒有改變,而Docker的版本處在非常舊的階段,為了要解決問題,所以有了這篇文章。

前置環境

  • 一個Ubuntu 18.04主機

安裝步驟

首先,先安裝需要用到的套件。


sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

接著,將外部的Docker鏡像來源GPG金鑰匯入,使用下面的步驟完成動作。


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

把外部鏡像來源匯入


sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

接著就可以安裝Docker套件了


sudo apt-get install docker-ce

安裝完成之後,可以用下面的指令確認Docker是否有正確的執行在背景服務中


sudo service docker status

# 或是使用下面指令查看Docker服務狀態

sudo systemctl status docker

結論

到這裡,文章就結束了,本篇學到:

  • 在Ubuntu 18.04上透過外部鏡像來源安裝Docker

參考資料

從Ubuntu 16.04升級到Ubuntu 18.04之心得(持續更新)

前言

前幾天,看到Ubuntu 18.04出一段時間了,看是時機成熟了。

所以就把自己平常工作在用的ThinkPad筆電從Ubuntu 16.04升級到Ubuntu 18.04了。

當然,中途有遇到一些情況,讓升級的程序跟步驟變得有些複雜,所以這篇文章,就是在紀錄有關於升級的過程中遇到的問題提供日後大家做參考。

前置動作

當然,需要有一台Ubuntu 16.04主機,不然要怎麼升級成18.04

如果怕升級上去之後,發生一些無法預期的事情,則可以先備份,備份工具可以使用「CloneZilla」進行備份。

升級做法

先依照下面的指令去安裝所有套件的最新版本。


sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

接著按照下面的指令去檢查可以升級的版本


sudo do-release-upgrade -c

那麼,就可以找到「Ubuntu 18.04」的發行版本

接著使用下面指令開始升級


sudo do-release-upgrade

幸運的話,就會開始升級了。

不幸的話,會遇到類似下面字樣的錯誤,而我剛好有遇到下面的錯誤……


Could not calculate the upgrade, .......

這原因其實是因為在檢查的時候發現,在原來的版本中存在著很多套件衝突版本問題需要解決,使用下面的指令可以看到更詳細的套件衝突問題。


grep Broken /var/log/dist-upgrade/apt.log

那我也是遇到同樣的問題,而我嘗試把那些有衝突套件的問題從log最底下開始的套件依序一個個移除,再去使用「sudo do-release-upgrade」去測試是否可以升級。

在升級發行版本的期間,會遇到一些互動式的問題,下面的列舉如下:

  • 確定升級「libc」套件版本?
  • 版本升級上去,要用哪一個版本?
    這時會出現「使用原來版本」,「安裝新版本」與比較兩個版本差異等選項。
    第一個選項是預設的,也就是按下「enter」鍵後會做的事情,那我也是建議使用第一個選項,因為升級版本是有風險的,等之後真的有需求時再個別升級即可。

後來,就可以升級了。不過升級完成之後,會留下很多安裝但是無用的套件,所以記得要使用「sudo apt-get autoremove」來移除一些已安裝但是已經無用的套件。

升級完成之後,有可能會出現「系統有誤」或是處於不穩狀態,這就代表在升級的途中有些套件版本問題需要去解決。

但是,系統還是可以用的,等到真的要用的東西有問題,再來見招拆招的解決套件問題吧!

而且升級上去之後,有些東西會被移除,這時候只能自己手動安裝回來了。

鏡像來源設定方面,會有一些問題,比如說,設定來源不完全等。

我升級完成之後,鏡像只有設定下面兩個來源:


deb http://archive.ubuntu.com/ubuntu/ bionic main restricted
deb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted

這樣是不對的,因為這樣會導致有一些套件會無法安裝到,後來我跑去抄VPS上面Ubuntu 18.04設定的鏡像,並成功了,以下是完成鏡像來源之設定:

設定檔案位置在:「/etc/apt/sources.list」


deb http://archive.ubuntu.com/ubuntu/ bionic main restricted
deb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted

deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted

deb http://archive.ubuntu.com/ubuntu/ bionic universe
deb-src http://archive.ubuntu.com/ubuntu/ bionic universe
deb http://archive.ubuntu.com/ubuntu/ bionic-updates universe
deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates universe

deb http://archive.ubuntu.com/ubuntu/ bionic multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://archive.ubuntu.com/ubuntu/ bionic-updates multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates multiverse

deb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu bionic-security main restricted
deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
deb-src http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse
deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse

設定完成之後記得執行「sudo apt-get update」去更新鏡像的來源。

PHPBrew下的PHP5.x版本

我在Ubuntu 16.04的時候,有使用PHPBrew編譯了幾個PHP 5.x版本,當升級到Ubuntu 18.04的時候,發現自己編譯的PHP 5.x不能使用了。

會出現下面的錯誤:


php: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by php)

查了一下原因,發現是libcurl3套件已經從18.04版本中移除了。

需要自己用下面的指令把此套件安裝回來。


sudo apt-get update

sudo apt-get install libcurl3/bionic

PCMan file manager F4快捷鍵在確切的目錄上開啟終端機

升級上去之後,會發現,在檔案管理工具上面,本來的F4快捷鍵功能就會有問題,無法正常的開啟,去發現觸發得腳本的位置在「/usr/bin/lxsession-default-terminal」,打開此檔案則會發現如下的內容:


#!/bin/sh
#
# Copyright (C) 2013 Julien Lavergne (gilir@ubuntu.com)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.

echo "Launching terminal manager"

dbus-send --session --print-reply --dest="org.lxde.SessionManager" /org/lxde/SessionManager org.lxde.SessionManager.SessionLaunch string:"terminal_manager" string:"$PWD"> /dev/null 2>&1

exit 0

中間那一行「dbus…..」指令是有問題的。

所以我們需要找到正確啟動終端機的方法,後來發現,「lxterminal」指令可以正常的啟動終端機。而後面的再加上「–working-directory」參數與「$PWD」值就可以成功開啟當下的目錄的終端機。

所以「/usr/bin/lxsession-default-terminal」裡面的內容則需要改成:


#!/bin/sh
#
# Copyright (C) 2013 Julien Lavergne (gilir@ubuntu.com)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.

echo "Launching terminal manager"

lxterminal --working-directory=$PWD

exit 0

參考資料

 

在Ubuntu 18.04上安裝Shutter擷取圖片工具

前言

Shutter是一個影像擷取螢幕畫面的工具,可以使用不同的方式來擷取圖片。

但是從Ubuntu 16.04升級到了Ubuntu 18.04,之後,我的Shutter截圖工具就被移除了。

所以在此篇文章中,就是要把此工具給安裝回來。

安裝Shutter


sudo apt-get update

sudo apt-get install shutter

接著打開某張圖片之後,會發現「編輯按鈕不能點擊」。

這是因為缺少一些必要套件所導致的,那我們要解決這個問題,就必須要把一些套件給安裝回來,執行下面的指令把套件給安裝回來。

記得!安裝缺少套件前,Shutter需要是沒有啟動的狀態

首先先下載幾個必要的套件:

  1. libgoocanvas-common
  2. libgoocanvas3
  3. libgoo-canvas-perl

接著,按照下面指令安裝。

手動下載缺失的套件原因是因為,這些套件已經從Ubuntu 18.04中的官方鏡像移除了,因此需要自行手動下載並安裝,在安裝的過程中,會有一些套件相依與相容性的問題,因此每個套件並不都可以順利的安裝。

所以在每個套件安裝之後,都有可能需要使用apt-get install -f指令進行相依套件衝突問題。


sudo dpkg -i /path/to/libgoocanvas-common_1.0.0-1_all.deb

sudo dpkg -i /path/to/libgoocanvas3_1.0.0-1_amd64.deb

sudo dpkg -i /path/to/libgoo-canvas-perl_0.06-2ubuntu3_amd64.deb

sudo apt-get -f install

sudo dpkg -i /path/to/libgoo-canvas-perl_0.06-2ubuntu3_amd64.deb

接著重新啟動之後,「編輯」按鈕就回來了。

參考資料

  1. [Quick Fix] The “Edit” Option Disabled in Shutter in Ubuntu 18.04