精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我的一些 nix 學習經驗:安裝和打包

系統
我一直在努力以最簡潔的方式掌握使用 nix,避開復雜的配置文件管理和新編程語言學習。

最近,我首次嘗試了 Mac。直至現在,我注意到的最大缺點是其軟件包管理比 Linux 差很多。一段時間以來,我對于 homebrew 感到相當不滿,因為每次我安裝新的軟件包時,它大部分時間都花在了升級上。于是,我萌生了試試 nix 包管理器的想法!

公認的,nix 的使用存在一定困惑性(甚至它有自己單獨的編程語言!),因此,我一直在努力以最簡潔的方式掌握使用 nix,避開復雜的配置文件管理和新編程語言學習。以下是我至今為止學習到的內容, 敬請期待如何進行:

  • 使用 nix 安裝軟件包
  • 為一個名為 paperjam 的 C++ 程序構建一個自定義的 nix 包
  • 用 nix 安裝五年前的 hugo 版本

如同以往,由于我對 nix 的了解還停留在入門階段,本篇文章可能存在一些表述不準確的地方。甚至我自己也對于我是否真的喜歡上 nix 感到模棱兩可 —— 它的使用真的讓人相當困惑!但是,它幫我成功編譯了一些以前總是難以編譯的軟件,并且通常來說,它比 homebrew 的安裝速度要快。

nix 為何引人關注?

通常,人們把 nix 定義為一種“聲明式的包管理”。盡管我對此并不太感興趣,但以下是我對 nix 的兩個主要欣賞之處:

  • 它提供了二進制包(托管在 https://cache.nixos.org/ 上),你可以迅速下載并安裝
  • 對于那些沒有二進制包的軟件,nix 使編譯它們變得更容易

我認為 nix 之所以擅長于編譯軟件,主要有以下兩個原因:

  • 在你的系統中,可以安裝同一庫或程序的多個版本(例如,你可能有兩個不同版本的 libc)。舉個例子,我當前的計算機上就存在兩個版本的 node,一個位于 /nix/store/4ykq0lpvmskdlhrvz1j3kwslgc6c7pnv-nodejs-16.17.1,另一個位于 /nix/store/5y4bd2r99zhdbir95w5pf51bwfg37bwa-nodejs-18.9.1
  • 除此之外,nix 在構建包時是在隔離的環境下進行的,只使用你明確聲明的依賴項的特定版本。因此,你無需擔心這個包可能依賴于你的系統里的其它你并不了解的包,再也不用與 LD_LIBRARY_PATH 戰斗了!許多人投入了大量工作,來列出所有包的依賴項。

在本文后面,我將給出兩個例子,展示 nix 如何使我在編譯軟件時遇到了更小的困難。

我是如何開始使用 nix 的

下面是我開始使用 nix 的步驟:

  • 安裝 nix。我忘記了我當時是如何做到這一點,但看起來有一個官方安裝程序 和一個來自 zero-to-nix.com 的 非官方安裝程序。在 MacOS 上使用標準的多用戶安裝卸載 nix 的 教程 有點復雜,所以選擇一個卸載教程更為簡單的安裝方法可能值得。
  • 把 ~/.nix-profile/bin 添加到我的 PATH
  • 用 nix-env -iA nixpkgs.NAME 命令安裝包
  • 就是這樣。

基本上,是把 nix-env -iA 當作 brew install 或者 apt-get install

例如,如果我想安裝 fish,我可以這樣做:

nix-env -iA nixpkgs.fish

這看起來就像是從 https://cache.nixos.org 下載一些二進制文件 - 非常簡單。

有些人使用 nix 來安裝他們的 Node 和 Python 和 Ruby 包,但我并沒有那樣做 —— 我仍然像我以前一樣使用 npm install 和 pip install

一些我沒有使用的 nix 功能

有一些 nix 功能/工具我并沒有使用,但我要提及一下。我最初認為你必須使用這些功能才能使用 nix,因為我讀過的大部分 nix 教程都討論了它們。但事實證明,你并不一定要使用它們。

我不去深入討論它們,因為我并沒真正使用過它們,而且網上已經有很多詳解。

安裝軟件包

nix 包在哪里定義的?

我認為 nix 包主倉庫中的包是定義在 https://github.com/NixOS/nixpkgs/

你可以在 https://search.nixos.org/packages 查找包。似乎有兩種官方推薦的查找包的方式:

  • nix-env -qaP NAME,但這非常緩慢,并且我并沒有得到期望的結果
  • nix --extra-experimental-features 'nix-command flakes' search nixpkgs NAME,這倒是管用,但顯得有點兒冗長。并且,無論何種原因,它輸出的所有包都以 legacyPackages 開頭

我找到了一種我更喜歡的從命令行搜索 nix 包的方式:

  • 運行 nix-env -qa '*' > nix-packages.txt 獲取 Nix 倉庫中所有包的列表
  • 編寫一個簡潔的 nix-search 腳本,僅在 packages.txt 中進行 grep 操作(cat ~/bin/nix-packages.txt | awk '{print $1}' | rg "$1"

所有的東西都是通過符號鏈接來安裝的

nix 的一個主要設計是,沒有一個單一的 bin 文件夾來存放所有的包,而是使用了符號鏈接。有許多層的符號鏈接。比如,以下就是一些符號鏈接的例子:

  • 我機器上的 ~/.nix-profile 最終是一個到 /nix/var/nix/profiles/per-user/bork/profile-111-link/ 的鏈接
  • ~/.nix-profile/bin/fish 是到 /nix/store/afkwn6k8p8g97jiqgx9nd26503s35mgi-fish-3.5.1/bin/fish 的鏈接

當我安裝某樣東西的時候,它會創建一個新的 profile-112-link 目錄并建立新的鏈接,并且更新我的 ~/.nix-profile 使其指向那個目錄。

我認為,這意味著如果我安裝了新版本的 fish 但我并不滿意,我可以很容易地退回先前的版本,只需運行 nix-env --rollback,這樣就可以讓我回到之前的配置文件目錄了。

卸載包并不意味著刪除它們

如果我像這樣卸載 nix 包,實際上并不會釋放任何硬盤空間,而僅僅是移除了符號鏈接:

$ nix-env --uninstall oil

我尚不清楚如何徹底刪除包 - 我試著運行了如下的垃圾收集命令,這似乎刪除了一些項目:

$ nix-collect-garbage
...
85 store paths deleted, 74.90 MiB freed

然而,我系統上仍然存在 oil 包,在 /nix/store/8pjnk6jr54z77jiq5g2dbx8887dnxbda-oil-0.14.0

nix-collect-garbage 有一個更具攻擊性的版本,它也會刪除你配置文件的舊版本(這樣你就不能回滾了)。

$ nix-collect-garbage -d --delete-old

盡管如此,上述命令仍無法刪除 /nix/store/8pjnk6jr54z77jiq5g2dbx8887dnxbda-oil-0.14.0,我不明白原因。

升級過程

你可以通過以下的方式升級 nix 包:

nix-channel --update
nix-env --upgrade

(這與 apt-get update && apt-get upgrade 類似。)

我還沒真正嘗試升級任何東西。我推測,如果升級過程中出現任何問題,我可以通過以下方式輕松地回滾(因為在 nix 中,所有事物都是不可變的!):

nix-env --rollback

有人向我推薦了 Ian Henry 的 這篇文章,該文章討論了 nix-env --upgrade 的一些令人困惑的問題 - 也許它并不總是如我們所料?因此,我會對升級保持警惕。

下一個目標:創建名為 paperjam 的自定義包

經過幾個月使用現有的 nix 包后,我開始考慮制作自定義包,對象是一個名為 paperjam 的程序,它還沒有被打包封裝。

實際上,因為我系統上的 libiconv 版本不正確,我甚至在沒有 nix 的情況下也遇到了編譯 paperjam 的困難。我認為,盡管我還不懂如何制作 nix 包,但使用 nix 來編譯它可能會更為簡單。結果證明我的想法是對的!

然而,理清如何實現這個目標的過程相當復雜,因此我在這里寫下了一些我實現它的方式和步驟。

構建示例包的步驟

在我著手制作 paperjam 自定義包之前,我想先試手構建一個已存在的示例包,以便確保我已經理解了構建包的整個流程。這個任務曾令我頭痛不已,但在我在 Discord 提問之后,有人向我闡述了如何從 https://github.com/NixOS/nixpkgs/ 獲取一個可執行的包并進行構建。以下是操作步驟:

步驟 1: 從 GitHub 的 nixpkgs 下載任意一個包,以 dash 包為例:

wget https://raw.githubusercontent.com/NixOS/nixpkgs/47993510dcb7713a29591517cb6ce682cc40f0ca/pkgs/shells/dash/default.nix -O dash.nix

步驟 2: 用 with import <nixpkgs> {}; 替換開頭的聲明({ lib , stdenv , buildPackages , autoreconfHook , pkg-config , fetchurl , fetchpatch , libedit , runCommand , dash }:)。我不清楚為何需要這樣做,但事實證明這么做是有效的。

步驟 3: 運行 nix-build dash.nix

這將開始編譯該包。

步驟 4: 運行 nix-env -i -f dash.nix

這會將該包安裝到我的 ~/.nix-profile 目錄下。

就這么簡單!一旦我完成了這些步驟,我便感覺自己能夠逐步修改 dash 包,進一步創建屬于我自己的包了。

制作自定義包的過程

因為 paperjam 依賴于 libpaper,而 libpaper 還沒有打包,所以我首先需要構建 libpaper 包。

以下是 libpaper.nix,我基本上是從 nixpkgs 倉庫中其他包的源碼中復制粘貼得到的。我猜測這里的原理是,nix 對如何編譯 C 包有一些默認規則,例如 “運行 make install”,所以 make install 實際上是默認執行的,并且我并不需要明確地去配置它。

with import <nixpkgs> {};
stdenv.mkDerivation rec {
  pname = "libpaper";
  version = "0.1";
  src = fetchFromGitHub {
    owner = "naota";
    repo = "libpaper";
    rev = "51ca11ec543f2828672d15e4e77b92619b497ccd";
    hash = "sha256-S1pzVQ/ceNsx0vGmzdDWw2TjPVLiRgzR4edFblWsekY=";
  };
  buildInputs = [ ];
  meta = with lib; {
    homepage = "https://github.com/naota/libpaper";
    description = "libpaper";
    platforms = platforms.unix;
    license = with licenses; [ bsd3 gpl2 ];
  };
}

這個腳本基本上告訴 nix 如何從 GitHub 下載源代碼。

我通過運行 nix-build libpaper.nix 來構建它。

接下來,我需要編譯 paperjam。我制作的 nix 包 的鏈接在這里。除了告訴它從哪里下載源碼外,我需要做的主要事情有:

  • 添加一些額外的構建依賴項(像 asciidoc
  • 在安裝過程中設置一些環境變量(installFlags = [ "PREFIX=$(out)" ];),這樣它就會被安裝在正確的目錄,而不是 /usr/local/bin

我首先從散列值為空開始,然后運行 nix-build 以獲取一個關于散列值不匹配的錯誤信息。然后我從錯誤信息中復制出正確的散列值。

我只是在 nixpkgs 倉庫中運行 rg PREFIX 來找出如何設置 installFlags 的 —— 我認為設置 PREFIX 應該是很常見的操作,可能之前已經有人做過了,事實證明我的想法是對的。所以我只是從其他包中復制粘貼了那部分代碼。

然后我執行了:

nix-build paperjam.nix
nix-env -i -f paperjam.nix

然后所有的東西都開始工作了,我成功地安裝了 paperjam!耶!

下一個目標:安裝一個五年前的 Hugo 版本

當前,我使用的是 2018 年的 Hugo 0.40 版本來構建我的博客。由于我并不需要任何的新功能,因此我并沒有感到有升級的必要。對于在 Linux 上操作,這個過程非常簡單:Hugo 的發行版本是靜態二進制文件,這意味著我可以直接從 發布頁面 下載五年前的二進制文件并運行。真的很方便!

但在我的 Mac 電腦上,我遇到了一些復雜的情況。過去五年中,Mac 的硬件已經發生了一些變化,因此我下載的 Mac 版 Hugo 二進制文件并不能運行。同時,我嘗試使用 go build 從源代碼編譯,但由于在過去的五年內 Go 的構建規則也有所改變,因此沒有成功。

我曾試圖通過在 Linux docker 容器中運行 Hugo 來解決這個問題,但我并不太喜歡這個方法:盡管可以工作,但它運行得有些慢,而且我個人感覺這樣做有些多余。畢竟,編譯一個 Go 程序不應該那么麻煩!

幸好,Nix 來救援!接下來,我將介紹我是如何使用 nix 來安裝舊版本的 Hugo。

使用 nix 安裝 Hugo 0.40 版本

我的目標是安裝 Hugo 0.40,并將其添加到我的 PATH 中,以 hugo-0.40 作為命名。以下是我實現此目標的步驟。盡管我采取了一種相對特殊的方式進行操作,但是效果不錯(可以參考 搜索和安裝舊版本的 Nix 包 來找到可能更常規的方法)。

步驟 1: 在 nixpkgs 倉庫中搜索找到 Hugo 0.40。

我在此鏈接中找到了相應的 .nix 文件 https://github.com/NixOS/nixpkgs/blob/17b2ef2/pkgs/applications/misc/hugo/default.nix

步驟 2: 下載該文件并進行構建。

我下載了帶有 .nix 擴展名的文件(以及同一目錄下的另一個名為 deps.nix 的文件),將文件的首行替換為 with import <nixpkgs> {};,然后使用 nix-build hugo.nix 進行構建。

雖然這個過程幾乎無需進行修改就能成功運行,但我仍然做了兩處小調整:

  • 把 with stdenv.lib 替換為 with lib
  • 為避免與我已安裝的其他版本的 hugo 沖突,我把包名改為了 hugo040

步驟 3: 將 hugo 重命名為 hugo-0.40

我編寫了一個簡短的后安裝腳本,用以重命名 Hugo 二進制文件。

postInstall = ''
    mv $out/bin/hugo $out/bin/hugo-0.40
  '';

我是通過在 nixpkgs 倉庫中運行 rg 'mv ' 命令,然后復制和修改一條看似相關的代碼片段來找到如何實施此步驟。

步驟 4: 安裝。

我通過運行 nix-env -i -f hugo.nix 命令,將 Hugo 安裝到了 ~/.nix-profile/bin 目錄中。

所有的步驟都順利運行了!我把最終的 .nix 文件存放到了我自己的 nixpkgs 倉庫 中,這樣我以后如果需要,就能再次使用它了。

可重復的構建過程并非神秘,其實它們極其復雜

我覺得值得一提的是,這個 hugo.nix 文件并不是什么魔法——我之所以能在今天輕易地編譯 Hugo 0.40,完全歸功于許多人長期以來的付出,他們讓 Hugo 的這個版本得以以可重復的方式打包。

總結

安裝 paperjam 和這個五年前的 Hugo 版本過程驚人地順利,實際上比沒有 nix 來編譯它們更簡單。這是因為 nix 極大地方便了我使用正確的 libiconv 版本來編譯 paperjam 包,而且五年前就已經有人辛苦地列出了 Hugo 的確切依賴關系。

我并無計劃詳細深入地使用 nix(真的,我很可能對它感到困擾,然后最后選擇回歸使用 homebrew!),但我們將拭目以待!我發現,簡單入手然后按需逐步掌握更多功能,遠比一開始就全面接觸一堆復雜功能更容易掌握。

我可能不會在 Linux 上使用 nix —— 我一直都對 Debian 基礎發行版的 apt 和 Arch 基礎發行版的 pacman 感到滿意,它們策略明晰且少有混淆。而在 Mac 上,使用 nix 似乎會有所得。不過,誰知道呢!也許三個月后,我可能會對 nix 感到不滿然后再次選擇回歸使用 homebrew。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2018-01-03 10:32:21

面試經驗套路

2017-10-23 12:22:58

Android編程基礎總結

2010-05-10 18:18:46

Unix系統

2019-04-19 12:46:18

面試丁校招簡歷

2022-04-14 10:22:44

故事卡業務

2015-12-04 10:04:53

2025-05-09 09:10:00

2024-11-21 08:09:51

2010-02-03 17:10:49

2010-06-13 15:18:02

UML實踐

2013-08-20 13:40:04

獨立游戲開發者移動應用PR經驗移動應用營銷推廣

2014-07-31 09:33:05

開發者獨立開發者

2021-09-22 13:17:39

AI 數據人工智能

2017-07-18 16:14:06

FileProvideAndroidStrictMode

2014-03-17 10:10:58

CC++編程書籍

2009-06-04 09:14:32

struts學習struts常用屬性

2019-08-01 12:56:00

Python代碼記錄

2009-07-21 09:29:27

iBATIS使用

2013-12-24 14:50:39

Ember.js框架

2017-05-10 14:49:52

Kotlin語言Java
點贊
收藏

51CTO技術棧公眾號

99久久激情| 操bbb操bbb| 成人在线激情网| 国产三级伦理片| 精品一级毛片| 黄色一区二区三区| 日韩中文字幕精品| 久久黄色免费看| 四虎永久在线精品免费网址| 亚洲最大黄网| 欧美日韩国产成人在线91| 欧美一级爱爱| av图片在线观看| 欧美亚洲色图校园春色| 亚洲国产另类精品专区| 91一区二区三区| 91麻豆免费视频网站| 巨胸喷奶水www久久久免费动漫| 99久久精品情趣| 久久久久久国产| 欧美xxxx黑人| 手机在线免费看av| 欧美h版在线| 精品1区2区3区| 亚洲欧洲一区二区| 亚洲无码精品在线观看| 色偷偷综合网| 欧美一区二区三区男人的天堂| 一区二区三区四区| 一区二区美女视频| 久久精品久久久| 51精品久久久久久久蜜臀| 在线免费观看成人| 国产黄色一级大片| 激情综合自拍| 精品香蕉在线观看视频一| 99久久久无码国产精品6| 日本中文字幕一区二区有码在线| 99国产一区| 亚洲欧美激情在线视频| 黑人粗进入欧美aaaaa| 幼a在线观看| 国产高清成人在线| 久久久久久久成人| 日韩欧美国产成人精品免费| 日韩av久操| 一个人www欧美| 国产又黄又猛的视频| 日本片在线观看| √…a在线天堂一区| 超碰97在线人人| 国产无人区码熟妇毛片多| 精品国产欧美日韩| 亚洲人成伊人成综合网久久久 | 五月婷婷久久丁香| 精品在线视频一区二区三区| 亚洲男人天堂网址| 欧美 日韩 国产一区二区在线视频| 精品国产乱码久久久久久1区2区 | 麻豆91精品91久久久| 欧美网色网址| 亚洲精选在线观看| 国产激情在线免费观看| 高清一区二区| 色综合天天综合网国产成人综合天| 日韩亚洲一区在线播放| av男人天堂网| 国产91综合网| 国产精品视频免费在线| 日本网站在线播放| 国产高清久久| 精品视频9999| 69xxx免费| 99re8这里有精品热视频8在线| 在线观看日韩一区| 分分操这里只有精品| 日韩黄色影院| 亚洲天堂福利av| 日本成人看片网址| 国产一二区在线| 国产午夜精品一区二区| 国产精品日韩欧美一区二区| 亚洲视频一区在线播放| 国产一区二区三区四区五区入口| 国产精品第100页| 日韩黄色三级视频| 欧美不卡视频| 欧美一区二区三区免费视| 欧美黄色免费看| 一本一本久久| 国产色视频一区| 欧美一级黄视频| 国产情侣久久| 午夜精品久久久久久久99热| 精国产品一区二区三区a片| 亚洲黄页一区| 久久久久久久久久国产精品| 国产高清中文字幕| 中文亚洲字幕| 91久久精品国产91性色| 一级片视频网站| 99re热视频精品| 精品视频在线观看| 免费在线毛片网站| 亚洲视频 欧洲视频| 国产午夜福利100集发布| 国产后进白嫩翘臀在线观看视频| 一区二区三区四区蜜桃| 香蕉视频在线网址| 国产成人无吗| 夜夜亚洲天天久久| 国产自产在线视频| 老牛影视精品| 色偷偷久久人人79超碰人人澡| 亚洲一二三av| 一区中文字幕电影| 亚洲高清不卡av| 人妻精品久久久久中文字幕 | 欧美日韩一区综合| 青青草在线免费观看| 亚洲黄色小视频| 91极品视频在线观看| 亚洲精品自拍| 日韩久久久久久| 国产真实乱人偷精品| 亚洲素人在线| 色一情一乱一区二区| 刘亦菲国产毛片bd| 中文字幕乱码亚洲无线精品一区| 国产精品精品视频一区二区三区| 人妻丰满熟妇av无码区hd| 99国产精品久久久| 国产一线二线三线女| 日韩一区二区三区色| 欧美精品一区二区在线观看| 午夜精品福利在线视频| 极品av少妇一区二区| 91视频免费网站| 免费大片黄在线| 欧美制服丝袜第一页| av在线网站观看| 国产毛片一区| 欧美精品久久| 欧美7777| 日韩一卡二卡三卡四卡| 变态另类丨国产精品| 日韩极品一区| 国产精品自拍小视频| 好吊色一区二区| 国产色综合久久| 国产天堂在线播放| 国产永久精品大片wwwapp| 另类天堂视频在线观看| 日韩精品久久久久久久酒店| 成人h版在线观看| 日本一区视频在线播放| 亚洲成人不卡| 最近2019年日本中文免费字幕| 一区二区视频在线免费观看| 成人动漫精品一区二区| 99爱视频在线| 亚洲三区欧美一区国产二区| 欧美疯狂性受xxxxx另类| 亚洲乱码国产乱码精品| 国产v综合v亚洲欧| 国产www免费| 香蕉久久99| 欧美国产日韩一区二区三区| 免费看国产片在线观看| 欧美视频在线看| 免费黄色av网址| 成人3d精品动漫精品一二三| 韩国19禁主播vip福利视频| 真实的国产乱xxxx在线91| 国产精品国产精品国产专区不蜜| 黄色影院一级片| 日本午夜一区| 97人人澡人人爽| 成人私拍视频| 亚洲精品黄网在线观看| 久草网视频在线观看| 99re66热这里只有精品3直播| 国产成人无码av在线播放dvd| 图片区亚洲欧美小说区| 精品蜜桃传媒| 韩国理伦片久久电影网| 亚洲最大在线视频| 国产裸体无遮挡| 精品美女国产在线| 久久久久久久麻豆| 美国av一区二区| 日韩国产在线一区| 亚洲1区在线观看| 国产精品电影一区| 操喷在线视频| 精品国产一区二区三区久久狼黑人| 欧洲精品久久一区二区| 欧美日韩卡一卡二| 影音先锋亚洲天堂| 亚洲精品久久久久久国产精华液| 美女100%无挡| 丰满白嫩尤物一区二区| 最新国产黄色网址| 蜜桃伊人久久| 亚洲国产激情一区二区三区| 成人直播在线观看| 成人性生交大片免费看视频直播| 2021av在线| 69堂国产成人免费视频| 啦啦啦免费高清视频在线观看| 亚洲人成精品久久久久| 国产av自拍一区| 毛片一区二区三区| 国产免费毛卡片| 伊人成年综合电影网| 最新黄色av网站| 日韩欧美不卡| 日韩精品大片| 中文精品一区二区| 精品乱码一区二区三区| 91精品啪在线观看国产手机 | 无码人妻丰满熟妇区五十路百度| 国产精品v一区二区三区| 国产精品午夜av在线| 福利一区三区| 成人免费黄色网| 欧美日韩va| 国产日韩在线免费| 欧美爱爱视频| 国产精选久久久久久| 91av一区| 欧美黑人巨大xxx极品| 黄网站免费在线观看| www.亚洲成人| 里番在线观看网站| 久久精品国产成人| 人妻少妇精品无码专区| 日韩欧美一区二区久久婷婷| 国产精品视频一区二区三区,| 一区二区免费视频| 青青草手机在线视频| 亚洲美女一区二区三区| 女~淫辱の触手3d动漫| 99精品1区2区| 中文字幕一二三四区| 久久久高清一区二区三区| 国产亚洲视频一区| 激情综合色丁香一区二区| 欧美视频在线观看网站| 亚洲精品一级| 日韩精品一区二区三区久久| 久久亚洲国产精品一区二区| 国产精品无码乱伦| 欧美精品国产| 亚洲欧洲久久| 久久精品影视| 18黄暴禁片在线观看| 国产日韩欧美一区| 丝袜制服一区二区三区| 精品一区二区三区视频在线观看| 国产妇女馒头高清泬20p多| 亚洲视频大全| 日本精品久久久久中文字幕| 久久成人av少妇免费| 精品国产aⅴ一区二区三区东京热 久久久久99人妻一区二区三区 | 孩娇小videos精品| 亚洲美女毛片| 激情五月开心婷婷| 久久99精品国产麻豆不卡| 麻豆精品国产传媒| 91久色porny| 一级全黄裸体片| 99久久精品免费| 天天干天天舔天天操| 91老师片黄在线观看| 一级片久久久久| 亚洲制服丝袜一区| 亚洲天堂男人av| 欧美一区午夜视频在线观看| 天堂在线中文网| 最好看的2019的中文字幕视频| 伦理在线一区| 欧美黑人狂野猛交老妇| 中文字幕乱码在线播放| 97精品久久久| 久久三级毛片| 久热国产精品视频一区二区三区| 51亚洲精品| 少妇免费毛片久久久久久久久| 亚洲永久精品唐人导航网址| 中文字幕欧美日韩一区二区| 日韩亚洲精品在线| 日韩av自拍偷拍| 久久久久99精品一区| 曰本女人与公拘交酡| 樱花影视一区二区| 国产91国语对白在线| 精品少妇一区二区三区日产乱码 | 干日本少妇视频| 模特精品在线| 老女人性生活视频| 中文字幕国产一区二区| 国产人妻大战黑人20p| 一区二区免费在线| 一区二区三区黄色片| 亚洲人成网在线播放| а√天堂8资源中文在线| 国模吧一区二区三区| 亚洲ww精品| 99精品欧美一区二区三区| 精品久久久久中文字幕小说 | 亚洲黄页网在线观看| 在线网址91| 欧美激情精品久久久| 色成人综合网| 午夜精品电影在线观看| 亚洲欧美日韩综合国产aⅴ| 99精品免费在线观看| 国产成人午夜视频| 永久看片925tv| 91麻豆精品国产自产在线| 精品久久久久一区二区三区 | 日本女优在线视频一区二区| 午夜久久福利视频| 久久精品人人做人人爽97| 日韩精品1区2区| 日韩av在线不卡| 九色视频成人自拍| 777777777亚洲妇女| 亚洲成人不卡| 欧美日韩在线一区二区三区| 亚洲专区在线| 爱爱的免费视频| 欧美性黄网官网| 日本一本草久在线中文| 欧美在线观看视频| 亚洲人成网www| 精品一区二区中文字幕| 久久亚洲一级片| 中文字幕五月天| 91精品婷婷国产综合久久性色| 欧美激情二区| 成人免费网站在线| 亚洲最新色图| 亚洲成人福利视频| 亚洲成人自拍一区| 天堂中文字幕av| 奇米4444一区二区三区 | 久久99热只有频精品91密拍| 成人在线亚洲| 性chinese极品按摩| 中文字幕日韩精品一区| 国产三级自拍视频| 欧美高跟鞋交xxxxxhd| 精品伊人久久久| 一区二区在线不卡| 国产一区二区视频在线| 黄网站免费在线| 欧美色综合网站| 国产激情视频在线观看| 99理论电影网| 亚洲精品一二| 精品一区二区6| 日韩色在线观看| 最新中文字幕在线播放| 天天综合色天天综合色hd| 国产在线精品一区在线观看麻豆| 激情综合五月网| 亚洲色图色老头| 精品国产18久久久久久二百| 日本精品一区二区三区高清 久久| 日韩影院精彩在线| 国产成人无码一区二区在线观看| 色猫猫国产区一区二在线视频| 囯产精品久久久久久| 日韩av电影在线免费播放| 国产一级成人av| 欧美黄网在线观看| 国产在线精品免费| 亚洲欧美在线视频免费| 夜夜嗨av一区二区三区四区| 麻豆一二三区精品蜜桃| 欧美一区二区三区爽大粗免费| 成人性色生活片| 午夜写真片福利电影网| 亚洲精品一区久久久久久| www999久久| 116极品美女午夜一级| 综合亚洲深深色噜噜狠狠网站| 天堂av资源网| 国产伊人精品在线| 国产九九精品| 欧美成人手机视频| 一区二区欧美激情| 精品日产乱码久久久久久仙踪林| 777视频在线| 欧美性生活大片免费观看网址| 粗大黑人巨茎大战欧美成人| 日本欧洲国产一区二区| 成人97人人超碰人人99|