我的Linux 一萬小時 - OSCHINA - 中文開源技術交流社區

2021-01-08 開源中國

這不是一篇雞湯文,因為我並沒有在使用 Linux 一萬小時後成為 Linux 達人,甚至在很多方面,我連新手都算不上。我走的這些彎路能篇成一本很有參考價值的反面教材,下面,我來講講我用 Linux 都折騰了啥。

Gentoo

在 Ubuntu 還沒有出生的年代,各種發行版百花齊放。以包管理機制區分的話,可以分為兩派:直接安裝二進位可執行文件的和下載源碼自行編譯的,Gentoo 算是後者中一個比較知名的項目。為了使硬體發揮出更好的性能,Gentoo 的 emerge 命令提供了不少編譯參數讓用戶調教。從內核到日常用的所有工具,都需要用包管理工具自動下載源碼後編譯,這對於像我這樣的 Linux 新人來說的確能學少不少東西。而且每次編譯滿屏幕日誌飛滾非常酷,改用綠色文字就有種黑客帝國的即視感。

不過,這個機制有個顯而易見的缺點,有時候做一些很小的事情都需要花上好長時間編譯大量的依賴包。而像我這樣的強迫症,總覺得下一次編譯換一個參數也許可以使程序運行得更快,以至於很多常用工具我都編譯了不下三遍。另外編譯內核和格式化硬碟重裝 Gentoo 的事真是數也數不清了。最慘的是,有次同事讓我幫忙裝一臺 1U,他用 Debian 可以分分鐘把 LAMP 搞定上架,而我硬是想用 Gentoo 壓榨性能。我編譯了一個下午,反覆編譯內核浪費了大量時間沒能把兩塊網卡搞定,最後無奈的讓他上了 Debian。

Gentoo 給我的教訓是,大量零散的編譯調優時間累積在一起會消耗很多寶貴的青春和電費,它們帶來的收益微乎其微,不如直接買更好的硬體。選一個有成熟包管理機制,社區活躍的發行版能節省大把精力把真正要做的事做好。這也是後來我只用 Debian 的一個主要原因。

桌面美化,WM

曾經每天看 DistroWatch.com,除了了解各種發行版的動向,還希望看到一個界面更加美觀的發行版,因為感覺大部分發行版的開發者審美太非主流。我用了很長時間尚且還看得過去的 XFCE 和 FVWM-Crystal,也用過臃腫浮誇的 KDE 和 Gnome。試了不少布局和配置,下載過很多 GTK 皮膚和圖標庫,玩過酷炫的 Compiz,調教過中文字體的顯示效果。但不管怎麼改都感覺哪兒不完美,直到後來接觸到同事 Apple iBook G4 上的 Mac 系統,便掉進了在 Linux 上模仿 Mac 系統界面的深淵。這個 Flickr 相冊 裡有不少那些年的痕跡。

這同樣是一件沒有什麼收益的事情,2006 年後我放棄治療,改用 Mac 系統。

wine

周圍的人問我為什麼不用 Windows 這種主流的作業系統,倒喜歡用小眾的作業系統的時候,我都只是一笑而過,後來我用 Mac 的時候也常常遇到這樣的問題。有意思的是,現在這個問題在大部分網際網路公司裡變成了:『為什麼你不用 Mac?』

我一開始用 Linux 作為開發主力機的確發現有諸多不便。比如同事給我發個 Microsoft Office 生成的文件;比如做網頁要在 Internet Explorer 裡調試;比如要上 QQ。不過我並沒有感覺到 Linux 不主流,有很多在線論壇有大量熱心的 Linux 用戶能幫你解決各種技術問題。而同一時期那些 Windows 相關的社區全在共享盜版軟體。

在還沒有虛擬機技術的時候,很長一段時間裡我是用 GRUB 啟動多系統的。後來漸漸地用 wine 這個工具跑起了大部分 Windows 下的程序,接著完全乾掉 Windows,再後來因為要流暢地跑魔獸世界內測不得不裝回 Windows。

生產工具海選

對於開發人員來說,一個非常費神的事情是開發工具,尤其是文本編輯器。我用遍了市面上幾乎所有收費或免費的編輯器,都沒有找到一款像 Windows 下的 EditPlus 那樣好用的產品。主流的推薦是 Vim 和 Emacs,我試著去學好 Vim,但當時並沒有多少好用的插件,加上自己不熟悉各種快捷鍵,文本編輯效率並不高。幸好後來改用 Mac,很長一段時間被 TextMate 拯救了。

在我的 title 還是前端開發工程師和 Flash 開發工程師的日子裡,在 Linux 下繪圖也不是一件輕鬆的差事,我一直用不慣 GIMP 和 InkScape。有試著用 wine 跑過 Flash 的 IDE 和 Macromedia Fireworks。為了能在 Linux 下愉快地開發 Flash 程序,我還把整個項目改用 MTASC 編譯。我很後悔沒有早點明白,在 Linux 下繪圖這件事就是自討苦吃,同一時期在 Windows 下的各種繪圖體驗會愉快很多。

運維

因為會使用 Linux,所以在開發過程中時不時地會承擔一些簡單的運維任務。為什麼只是簡單的,因為更複雜的任務會由那些有 RedHat 證書的專業運維負責。在我這些年的工作經歷中,我曾跑過十多次機房,管理過一些 1U 伺服器,但都只停留在裝系統和配置服務環境的階段,並沒有機會接觸那些需要大量伺服器攜同工作的任務。而這些安裝和配置的任務,在 Debian 下又過份地簡單,apt-get install 裝好的東西一般不用再多折騰就能很好地使用。所以我沒能在運維這一塊更加深入,只是變成一個初級熟練工而已。

前幾年因為虛擬幣的泡沫,我開始有動力自學配置管理工具,學了一點點 Chef 和 Puppet,感覺略複雜個人用不上,所以學了相對簡單好用且不需要 master 伺服器的 Ansible。有一段時間我控制近 50 臺虛擬機挖虛擬幣,最高的一個月有 6000 元的收入。

隨後我試著把一些日常開發中經常需要反覆做的事寫成 Ansible Playbook,於是便有了 ios-dev-playbook。期間為了和牆做鬥爭,從 vpn-deploy-playbook 這個倉庫中也學到不少實用技能。但是,很多線上服務其實比某些開源的程序做得好,有時候自己運維往往省不下幾個錢。舉個例子,Git 倉庫,我曾經很喜歡自己在 Linode 虛擬器上搭建 GitLab 或者 Gogs,但是後來發現 GitHub 無論是在社區工具鏈集成度以及易用性上都甩開其它競品好幾條街。

另外,這幾年,為了滿足各種創業公司對高生產效率和低成本的需求,IaaS、PaaS、SaaS 以及 Docker 開始流行,創業公司不再需要專職的運維,開發人員寫幾個配置文件,在網頁裡點幾下滑鼠就能把一個完整的系統弄上線。

所以,我掌握的這些簡單的 Linux 運維的技能,幾乎已經被淘汰完了。

我試著去學 Goolge Kubernetes 和 AWS Lambda,但感覺業餘精力不夠,也沒有項目可以實踐。

總結

如果我晚十年出生,或者早點用上 Mac OS,或者考了一張 RedHat 證書,應該就不會這麼折騰了。

相關焦點

  • Rocky Linux 成立開源基金會 - OSCHINA - 中文開源技術交流社區
    近日,以 CentOS 創始人 Gregory Kurtzer 為首的 Rocky Linux 團隊宣布圍繞該項目成立開源基金會,全面推進項目發展。
  • 2016 最佳 Linux 發行版排行榜 - OSCHINA - 中文開源技術交流社區
    ,這是一個發源於臺灣的開源項目,目前在國內是重慶Linux用戶組 ChongqingLUG 在維護、開發和推廣。搜集了包括 PhET在內的大量開源教材,Linux Story 有幸也曾經報導過跟 ezgo 有關的消息,它的官方網站是 http://ezgolinux.org/。關心教育的家長、學生和老師值得關注。
  • 開源軟體及國內發展現狀 - OSCHINA - 中文開源技術交流社區
    這樣,當以微軟為代表的企業開始實踐純軟體產品的商業模式(核心思想是提供二進位可 執行程序的使用許可,而不提供原始碼),就引起了許多計算機編程愛好者的不滿:給我一堆二進位程序,我如何才能按我自己的想法改進程序?在這種背景下,真 正意義上的開源軟體就自然而然地產生了。2.2 開源軟體的發展歷程開源軟體的發展,和網際網路的發展密不可分。
  • 滴滴開源首次發布年度報告 - OSCHINA - 中文開源技術交流社區
    開源項目種類也從單一的前端項目,擴大到覆蓋資料庫、小程序、移動開發、前端、架構、中間件、雲相關和運維監控等技術領域。今天給大家總結下滴滴2018年開源工作,很多開源項目值得大家關注。53個patch,有1個PMC,2個Committer,滴滴持續向OpenMessaging社區貢獻多個patch,產生1個TSC,同時主導了RocketMQ重大改進RIP-7的設計和開發,滴滴向Linux內核貢獻了15個patch,向QEMU社區貢獻了3個patch,向DPDK等社區貢獻了5個patch,向Ceph社區貢獻了20多個patch,有1個PM。
  • OSCHINA 社區最新新聞
    OSCHINA 社區最新新聞 https://www.oschina.net/news/rss OSCHINA - 中文開源技術交流社區 zh-CN Tue, 05 Jan 2021 20:27:01 +0800 EdgeGallery V1.0 版本(Chocolate)正式發布 https:/
  • 每個程式設計師都該了解的開源世界 - OSCHINA - 中文開源技術交流社區
    而具體的工作,除了不斷完善和提高 OpenResty,也要在國內外多城市線下搞一些 meetup,來擴大影響力和促進交流 。如今基金會的成立還沒有完全落定,各項活動其實已經在社區的熱心者的推動下一點一點的推動開來了。今天是 OpenResty 灣區的第一次聚會。我也很榮幸地受到邀請,並且見到 OpenResty 社區裡的很多同仁。
  • 盤點8 款好用的開源商城系統 - OSCHINA - 中文開源技術交流社區
    全球電子商務巨頭Amazon當家人貝索斯說過,「在現實世界的商店最有力的武器就是地段,地段,地段,而對於我們來說最重要的三件事就是技術,技術,技術。」
  • 開放源碼是開源軟體嗎? - OSCHINA - 中文開源技術交流社區
    許可協議必須技術中立(License Must Be Technology-Neutral):意即許可協議不得限制為電子格式才有效,若是紙本的許可協議也應視為有效。所以,與此類似的,在中文裡,我們可以認為:「開放原始碼」是一個動詞+一個名詞。而「開源」則是一個特定的詞彙。作為動詞,我們說將某某軟體開源,是一種行為。作為形容詞,我們稱某某軟體是一個開源(的)軟體,不僅僅是指我們能夠獲取到他的原始碼。
  • 為開源和商業正名 - OSCHINA - 中文開源技術交流社區
    看到某廠一高級技術專家說「沒本事才開源」,覺得這個說法太有趣了,便發了一條微博,感慨一下。我其實沒有立場,僅僅是感慨,結果引來開源布道者、我一貫尊重的適兕老師憤慨,他好勤奮,立刻夜成此文,無情吊打我以及我這樣在他眼裡壓根兒沒有領會開源精神的「不幸者」。
  • 並行文件系統 BeeGFS 現已開源 - OSCHINA - 中文開源技術交流社區
    2月23日 ThinkParQ 宣布完整的 BeeGFS 並行文件系統 的源碼現已開源因此,開源 BeeGFS 是讓一個百億億次的集群的所有組成部分高效的發揮作用的一步。>「當我們的一些用戶對於 BeeGFS 十分容易安裝並且不用費心管理而感到高興時,另外一些用戶則想要知道它是如何運行的以便於更好的優化他們的應用,使得他們可以監控它或者把它移植到其他的平臺上,比如 BSD,」 Sven Breuner 說道,他是 ThinkParQ (BeeGFS 背後的公司)的 CEO,「而且,把 BeeGFS 移植到其他的非 X86 架構,比如 ARM 或者 Power,也是社區即將要做的一件事
  • 盤點微軟最應該開源的 15 款產品 - OSCHINA - 中文開源技術交流社區
    如果微軟不想在為Media Player帶來更多的新功能,它可以將其交給開源社區打理。飛行模擬器但考慮到MSN的即時信息要比Skype聊天穩定得多,微軟可以將前者的客戶端開源,而開源社區或許可以將其變成一個總是顯示你最新信息的工具。Skype
  • Kali Linux 2020.2 發布 - OSCHINA - 中文開源技術交流社區
    PowerShell不久前 PowerShell 被放入 Kali Linux 的網絡存儲庫中,這意味著,如果要用 Powershell,必須通過以下方式一次性安裝該軟體包:kali@kali:~$ sudo apt install -y powershell不過現在 PowerShell 被放入了主要元軟體包之一:kali-linux-large
  • Nim 中文官網現已上線 - OSCHINA - 中文開源技術交流社區
    Nim中文官網現已上線! 大家可以通過https://nim-lang-cn.org來訪問。
  • 十大使用 Linux Lab 的理由 - OSCHINA - 中文開源技術交流社區
    Linux Lab 把這幾個工作簡化成了三條命令(Windows、Mac OSX 和非 Ubuntu Linux 系統需要自行安裝 Docker),數十分鐘就可以執行完,而且每次都可以拿到體驗一致的環境:$ git clone https://gitee.com/tinylab/cloud-lab.git$ cd cloud-lab$ tools/docker/run linux-lab
  • .NET 開源一年以後... - OSCHINA - 中文開源技術交流社區
    微軟已經開源 .NET framework 的核心部分一年多了,之前 Scott Hanselman 做了一個 非常好的原始碼分析工具,基於微軟的 Power BI 實現。
  • 微軟開源大數據框架 REEF - OSCHINA - 中文開源技術交流社區
    在本周一的國際知識挖掘與數據發現大會上,微軟信息服務首席技術官Raghu Ramakrishnan透露微軟計劃近期內開放其大數據框架REEF(Retainable Evaluator Execution
  • 深度作業系統 Deepin 15.11 發布 - OSCHINA - 中文開源技術交流社區
    深度作業系統是基於Linux內核,以桌面應用為主的開源 GNU/Linux 作業系統,支持筆記本、臺式機和一體機。深度作業系統(deepin)包含深度桌面環境(DDE)和近30款深度原創應用,及數款來自開源社區的應用軟體,支撐廣大用戶日常的學習和工作。另外,通過深度商店還能夠獲得近千款應用軟體的支持,滿足您對作業系統的擴展需求。
  • Electron 加入 OpenJS 基金會 - OSCHINA - 中文開源技術交流社區
    OpenJS 基金會致力於通過提供中立的組織來託管和維持項目,來支持 JavaScript 生態系統和 Web 技術的健康發展,以及為整個社區的利益提供資助。該基金會由 32 個開源 JavaScript 項目組成,包括 jQuery、Node.js 和 Webpack 等,並得到了包括谷歌、IBM、Intel 和微軟等在內的 30 家公司的支持。
  • Linus TED 分享,Linux 背後的思想 - OSCHINA - 中文開源技術交流...
    Linus TorvaldsLinus Torvalds兩次改變了技術,第一次是Linux內核,它幫助網際網路的發展;第二次是Git,全球開發者使用的原始碼管理系統。在一次TED的採訪中,Torvalds以極其開放的態度討論了他獨特的工作方式和性格特點。Torvalds說:「我不是一個空想家,我是一名工程師,我非常樂意跟夢想家在一起,他們行走四方,仰望蒼穹,看著滿天星辰說,「我想到那兒去。」
  • 四大理由 將開源ERP軟體拒之門外 - OSCHINA - 中文開源技術交流社區
    我想,我以後再也不會用開源的ERP軟體了。我採用的是號稱最大的開源ERP軟體 -Compiere。有一段時間,我受僱於一家企業,幫他們實施一個開源的ERP項目。經歷了半年多的折騰,以前我對於開源軟體的一點熱情都被徹底消滅了,讓我看清了開源ERP軟體的面目。我想,我以後再也不會用開源的ERP軟體了。我採用的是號稱最大的開源ERP軟體-Compiere。