2016年11月7日 星期一

1104linux心得

下周為期中考試,以下對於這次期中考考試內容進行整理:

Debian 社群契約 Debian Social Contract
一、前言
參加 Debian 計畫,即代表認同 Debian 社群契約;雖然沒有親自簽約,使用 Debian,即代表參與 Debian 社群契約。

Version 1.01997 7   5 獲準通過。
Version 1.12004 4 26 獲准通過。
現在的版本為8.0  Jessie
二、與自由軟體社群訂立社群契約 Social Contract with the Free Software Community
   → 
人與 Debian 之間的關係
  1. Debian 始終是高質量100%的自由軟體 Debian will remain 100% free
    同時支持在 Debian 上開發及使用自由或非自由軟體,容許使用者使用非自由軟體,不加上任何限制,然而這個系統不會依賴於任何非自由軟體。同時推廣Debian給其他人,討論他,展示給別人看。
  2. 回報自由軟體社群 We will give back to the free software community
    反饋錯誤(bug)的修正 、改良的意見、使用者的需求等資訊,不會私自流傳,力盡所能打造最優秀的系統,以利自由軟體得到最廣泛的使用及散佈。 發現有問題時,你一定會回報。不一定回報給debian,可以回報給社群,或者使用的自由軟體。
  3. 絕不隱瞞問題 We will not hide problems
    始終把整個的錯誤報告資料庫開放給公眾閱讀。
  4. 優先考慮我們的使用者及自由軟體 Our priorities are our users and free software
debian支持自由軟體及debian使用者,協助debian使用者的問題。
  1. 哪些作品不符合我們的自由軟體規範
    Works that do not meet our free software standards

    許使用不自由的軟體,很清楚的讓使用者知道說,你使用的不是自由軟體。FTP 庫中留出 contrib」、「non-free 目錄,不自由的軟體會被特別放在不自由的目錄下,在這些目錄下的套件,儘管已被配置成可以在 Debian下使用,仍然不屬於 Debian 系統,例如:skype。儘管非自由軟體並非 Debian 系統的一部分,仍可使用之;此外開發者為了非自由軟體,提供公共資源,例如:程式錯誤追蹤系統、通信論壇。

    註:facebook 雖然不用安裝,但是不自由


Debian 自由軟體指導方針 Debian Free Software Guidelines (DFSG)
   → 判定某項作品自由與否的標準;應該做出怎麼樣的軟體;Debian 如何使用這些自由軟體
原先目的是宣告我們願意共同遵守的承諾,後來被自由軟體社群所採納,成為 開放源碼定義 (Open Source Definition) 的基礎。
1.  自由的再次散佈 Free Redistribution (不得索取專利費或其它銷售費用)
2.  n始碼公開 Source Code =>允許可以修改
例如:.odt,不做成圖檔 (除非.ogg.odg)
要有原始碼 ,例如你的筆記不能變成圖檔,要做成文字檔。圖檔就不能讓人修改。要有原始檔,還要給編譯好的。
3.  作品的衍生 Derived Works
許可證必須允許對其所屬作品的修改以及衍生,而且必須允許這些作品在原始 軟體的許可証條款下散佈。
4.  作者原始碼的完整性 Integrity of The Author's Source Code
修改後再散布時,必須散布其原檔與修改檔,讓收到檔案的人可決定閱讀哪一個檔案。修補檔案/補釘檔 (patch file隨其所屬作品的原始碼一同發行,如此一來,最後一個檔案會包含先前所有的補釘。
5.  禁止歧視人仕或團體 No Discrimination Against Persons or Groups
不能歧視某團體或是人。什麼事歧視呢?假如你軟體是中文,不能翻譯成義大利文就是歧視義大利人。假如有人想要賣掉,也不行,因為你歧視商人
6.  禁止歧視用途 No Discrimination Against Fields of Endeavor
例如:許可證不得限制程式用於商業或基因研究歧視商人;
           
許可證不得限制翻譯語言歧視種族
7.  許可證的散佈 Distribution of License
程式附帶的權利適用於程式再次發行的每一個受眾
不需要用其他授權方式,可以直接散佈
8.  許可證不能特定於 Debian 適用所有 License Must Not Be Specific to Debian
程式附帶的權利不能由該程式是否為 Debian 的一部分來決定。
即使程式在 Debian 之外,仍然在該程式的許可證條款下使用或散佈,再次發行的每一個受眾都將擁有該程式與 Debian 系統結合時被授予的完全相同的權利。
9.  許可證的規定不得污染其他軟體 License Must Not Contaminate Other Software
允許使用其他軟體,包含:非自由軟體。
10.           Debian 容許的授權方式 / 「自由」許可證示例 Example Licenses
GPL」、「BSD」、「Artistic」等等。

註:在法國大革命之前,自由的定義、論述還不夠完備,直到盧梭提出自由民主主義思想
Debian Code of Conduct (Debian行為準則)
     → 遵守 Debian 條款 (一直變動) debian人需要遵守的
1.  尊重 Be respectful
我不同意你的觀點,但我誓死捍衛你說話的權利
2.  假設大家都是正直的人 Assume good faith
3.  願意與人合作 Be collaborative
4.  簡單明瞭 Try to be concise
5.  公開開放 Be open
不可告訴別人不可告訴別人
不能跟別人說''黑嘿嘿我跟你說喔不能跟別人說這件事情''這個人一定有問題,開放。
6.  發生問題時要體諒他人 In case of problems
Sometimes people may have a bad day.

註:類似中華民國圖書館員倫理守則 The Professional Moralities of Librarians

試述自由軟體授與使用者的四種自由?

自由軟體賦予使用者四種自由:
A program is free software if the program's users have the four                        essential freedoms:
(1)不論目的為何,有使用該軟體的自由 (自由之零)
             The freedom to run the program as you wish, for any purpose (freedom 0).

(2)有研究該軟體如何運作的自由,並且得以改寫該軟體來符合使用者自身的需求 (自由之一) 。取得該軟體之源碼為達成此目的之前提。
The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.

(3)有重新散佈該軟體的自由,所以每個人都可以藉由散佈自由軟體來敦親睦鄰 (自由之二)
The freedom to redistribute copies so you can help your neighbor (freedom 2).

 (4)有改善再利用該軟體的自由,並且可以發表改寫版供公眾使用,如此一來,整個社群都可以受惠。 如前項,取得該軟體之源碼為達成此目的之前提 (自由之三)
The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

GNU是什麼?GPL是什麼?
(1)GNU:
GNU名稱來自”Gnu's Not Unix”的縮寫,一個類UNIX的操作系統,由GNU計劃推動,目標在於創建一個完全兼容於UNIX的自由軟件環境。發展GNU系統的計劃,最早由Richard Stallman1983年啟動,它是自由軟件基金會最早致力的目標。
GNU, which stands for Gnu's Not Unix, is the name for the complete Unix-compatible software system which I am writing so that I can give it away free to everyone who can use it. Several other volunteers are helping me. Contributions of time, money, programs and equipment are greatly needed.
(2)GPL: General Public License
GPL 授權條款起源於美國自由軟體基金會(Free Software Foundation)GNU計畫,由Richard Stallman所起草,原本的 目的係為了在自由的基礎下,規範GNU計畫下創作軟體的分享,也形成開放原始碼精神的濫觴。漸漸地,隨著許 多非GNU計畫 軟體引用GPL的授權方式,GPL也成為目前開放原始碼軟體最常見的授權方式。根據GPL授權條款 的規定,明確地指出授權條款保障的是所有使用者自由複製、散佈與修改的權利,其它活動則不在涵蓋範圍之內。

Free Software (自由軟體) Freeware (免費軟體)有何不同?
(1)Free Software:
「自由軟體」指尊重使用者及社群自由的軟體。簡單來說使用者可以自由運行、複製、發佈、學習、修改及改良軟體。他們有操控軟體用途的權利。如果使用者不能控制軟體,就會反被軟體操控,而軟體開發者就可以透過軟體操控使用者。這些不自由(nonfree)或專有(proprietary)的軟體就成為不公義勢力的利器。所以「自由軟體」是自由、權利的問題,而不是價格的問題。自由軟體的性質就跟「自由言論」一樣,而不是「免費啤酒」。(英文中的free 有自由及免費兩種意義)

如果軟體使用者有以下四項自由,那軟體就是自由軟體︰
A.以任何目的運行該程式 (自由0)
B.取得軟體的代碼(source code)並學習程式的運作、修改為你想要的樣子
(自由1)
C.隨意發佈軟體副本以幫助別人 (自由2)
D.隨意分發你修改的版本(包括代碼)給別人 (自由 3)。此舉可使你的版本
惠及社群\
(2)Freeware :
內涵是作者允許使用者在某些條件下能「免授權金」地使用該軟體;通常只讓使用者有免費執行該程式的自由,而不及於其他諸如修改、散布、商用等自由。
著佐權
        美國自由軟體基金會新創「著佐權 (Copyleft) 」一詞,以著佐權保障程式或作品使用者的自由,規定使用該程式或作品的人,必須把修改及擴充的程式或作品,以同樣方式釋放出來。
        著佐權最早是因GNU計畫提供所有人再散布及修改GNU軟體的自由,而最簡單的軟體自由化方式,是把程式置於公領域 (public domain) ,即著作財產權消滅,允許他人分享及修改此程式。
        然而,某些不願意別人自由的人,可以藉由散布修改後的程式,把這些程式轉換為他們的專屬軟體(proprietary software),剝奪使用他人使用程式的自由。基於這層顧慮,與其把GNU計畫的軟體置於公領域,美國自由軟體基金會提出「著佐權」的概念。
        再散布軟體的人,不論是否修改該軟體,必須把再散布及修改的自由一起散布下去,著佐權保證每個使用者都有自由。
         專屬軟體的作者以著作權剝奪使用者的自由,我們以著作權保障使用者的自由,所以更改「著作權」 (Copyright) 為「著佐權」 (Copyleft) 。英文的「right () 被換為「left () ,原有的中文譯名「作」,則以諧音「佐」取代。
         以授權條款著佐程式時,先聲明該程式受著作權保護,然後再加上散布條款,在不更改散布條款的前提下,授予每個人使用、修改及再散布程式碼的權利。
         因此,著佐權是把著作權應用在程式的一種方法,並不是放棄著作權,放棄著作權就不可能有著佐權。「Copyleft」裡的「left」,不是拋棄的意思,祗是「右」 (right) 的反義詞。
         著佐權是個不能直接使用的概念,必須以其他方式將其實現,例如公共許可證 (GNU General Public licneseGNU GPL) 的散布條款實現著佐權的概念。

重要的 Shell 指令
cat 檔案
將檔案內容列印在螢幕上
cd 目錄
變換工作目錄
cp 檔案 目的地
複製檔案或複製整個目錄
echo 字串
將字串顯示至螢幕上
gzip, bzip2, xz  檔案
gzip, bzip2, xz [-d] 檔案
壓縮檔案
解壓縮檔案
pager 檔案
顯示檔案內容
ls [檔案]
列出目錄中的檔案與目錄列表
mkdir 目錄名稱
建立新的目錄
rmdir 目錄
刪除『』的目錄
mv 檔案  目錄 or  mv 目錄 目錄


mv 檔案  檔案 or  mv 目錄 目錄
將某個檔案or目錄移動到某個目錄去
[root@study tmp]# mv bashrc mvtest
F檔案bashrc移動至mvtest目錄
變更檔案or目錄名稱
[root@study tmp]# mv mvtest mvtest2
F將目錄mvtest名稱更名為 mvtest2
rm 檔案or目錄
移除檔案或目錄
tar [c][x][t][z][j][J] -f 檔案.tar [
]
建立 (c)、解開 (x)、列出 (t)
保存檔,z 用於 .gz j 用於
.bz2 J 用於 .xz
find 目錄表達式
用像是 -name 名稱或 –size +1000 等等來尋找檔案
[root@study ~]# find -name passwd
F找出檔名為 passwd 這個檔案
[root@study ~]#find /home/apache -size 100c –print
F/home/apache目錄下查找檔長度恰好為100位元組的檔
grep 搜尋字串 檔案
在檔案中尋找字串
[root@study ~]# grep 'linux' test.txt
Ftest.txt檔案中搜尋含'linux'的內容
ln -s 檔案 連結
建立一個指向檔案的符號連結(類似Windows的捷徑)
[root@study tmp]# ln -s passwd passwd-so
Fpasswd檔案建立符號連結passwd-so
ps [選項]
顯示當前的程序。
[root@study ~]# ps –l
F僅觀察自己的bash相關程序:ps –l
[root@study ~]# ps aux
F觀察系統所有程序:ps aux
kill [-9] 程序代號
傳送訊號給程序(如:-9是立刻強制刪除一個工作);使用ps來得到程序代號(PID)
[root@study ~]# ps -l
F S   UID   PID  PPID 
4 S    0   14830 13970
4 S    0   14835 14830
4 S    0   14836 14835
0 R    0   15011 14836
[root@study ~]# kill -9 14835
F程序代號14835的工作被強制刪除
su - [使用者名稱]
切換成另一個使用者,例如root
sudo 指令
讓一般使用者能以 root 來執行某個指令。請參閱/etc/sudoers
command > 檔案
以指令的輸出結果替代檔案內容
command >> 檔案
將指令的輸出結果附加於檔案之後
指令1 |指令2
將指令1的輸出結果做為指令2的輸入。
[root@study ~]# cat test | grep -nf test2
F輸出test文件,test文件中含有從test2檔案中讀取出的關鍵字的內容行,並顯示每一行的行號
指令 < 檔案
將檔案內容作為指令的輸入

以上為這次考試之重點內容整理,若有錯誤的地方還請老師與多學多多指教,謝謝老師的教導,祝大家期中考順利!